Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 13 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

[/b]Закончил два курса программирования для школьников в МАТИ им.Циалковского от МФТИ, но мало чего узнал - просто ознакомление. Немного заинтеремовался и начал программировать для самого себя.
На Borland C++ написал такие игры, как Змейка, числа (угадать 4-х значное число с 7-и попыток), борьба (две фигурки деруться очень примитивно), еда (поле 10 на 10 - две фигурки, либо перемещаешься, либо ставишь стенку, надо сделать так, что бы противник оказался в более маленьком пространстве, чем вы), шахматную доску.
Продолжил программировать на C++ Builder , написал: тетрис, змейку и пятнашки (с рандомными числами), пробовал писать стратегию - получилось выделять кружочки и выделенным из них показывать куда идти, причем они шли туда, куда нужно.
/* все игры написаны по своему собственному принципу, т.е. помощь была ограничена названием операторов */
Хотел бы и далее этим заниматься. покрайней мере просто для себя.

1) Могу дать коды всех этих программ, кроме стратегии.
2) Хочу посмотреть ваши игры, если есть (не важно на чем, но лучше на C++ Builder),
3) Меняться мнениями, советами, критикой.
4) Расскажите о перспективах игровых разработок: работа, зарплата, какие игры делаются и проч.
5) что-нибудь еще.

Добавлено спустя 57 секунд:
PS: можно ли где-нибудь научиться писать игры? где?



Партнер
 

Advanced member
Статус: Не в сети
Регистрация: 13.11.2002
Откуда: msk.ru
мишка писал(а):
PS: можно ли где-нибудь научиться писать игры? где?

Можно программированию научиться, не более. Литературка есть в интернете.
Сам тоже когда-то писал змейку, можно посмотреть твой код? Выши на почту ymitrofanov собака mail.ru
Перспективы - нормальные. Но надо быть хорошим специалистом.

_________________
Поддержка phpBB на русском языке - теперь официально!


 

Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "SnakeP.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//------------------------------------------------------------------------------
TForm1 *Form1;
//------------------------------------------------------------------------------
int sleinth[3]={9,9,9};
int skursx[3]={1,1,1};
int skursy[3]={0,0,0};
int sspeed=5;
int turn1=0,turn2=0;
//------------------------------------------------------------------------------
int border=1;
int kolvo=1;
int players=1;
//------------------------------------------------------------------------------
int pole[24][18]; // 22 X 16
int poly[24][18]; // 22 X 16
//------------------------------------------------------------------------------
int boxx[5]={40,40,40,40,40};
int boxy[5]={40,40,40,40,40};
//------------------------------------------------------------------------------
int records[12];
char names[12][4];
//------------------------------------------------------------------------------
void generate()
{
for(int t,i=1;i<=kolvo;i++)
{
Again:
boxx[i]=random(22)+1;
boxy[i]=random(16)+1;
if(pole[boxx[i]][boxy[i]]!=0||poly[boxx[i]][boxy[i]]!=0) goto Again;
for(t=i-1;t>=1;t--)
{
if(boxx[i]==boxx[t]&&boxy[i]==boxy[t]) goto Again;
};
Form1->PaintBox1->Canvas->Pen->Color=clRed;
Form1->PaintBox1->Canvas->Brush->Color=clWhite;
Form1->PaintBox1->Canvas->Ellipse((boxx[i]-1)*30+4,(boxy[i]-1)*30+4,boxx[i]*30-4,boxy[i]*30-4);
};
};
//------------------------------------------------------------------------------
void start()
{
Form1->PaintBox1->Canvas->Pen->Color=clRed;
Form1->PaintBox1->Canvas->Brush->Color=0x0097FF7D;
Form1->PaintBox1->Canvas->Rectangle(0,0,660,480);
for(int t,i=0;i<=23;i++)
{
for(t=0;t<=17;t++)
{
pole[i][t]=0;
poly[i][t]=0;
};
};
for(int g=9;g>=1;g--)
{
pole[10-g][5]=g;
Form1->PaintBox1->Canvas->Pen->Color=clRed;
Form1->PaintBox1->Canvas->Brush->Color=clRed;
Form1->PaintBox1->Canvas->Rectangle(30*(10-g)+2,122,30*(11-g)-2,148);
if(players==2)
{
Form1->PaintBox1->Canvas->Pen->Color=0x00FF1C1C;
Form1->PaintBox1->Canvas->Brush->Color=0x00FF1C1C;
Form1->PaintBox1->Canvas->Rectangle(30*(10-g)+2,332,30*(11-g)-2,358);
poly[10-g][12]=g;
};
};
if(players==1) {Form1->Label1->Caption="Your Score = " + IntToStr((sleinth[1]-9)/(2*kolvo)*sspeed); };
if(players==2) {Form1->Label1->Caption="Your Score : Red = " + IntToStr((sleinth[1]-9)/(2*kolvo)*sspeed)+"; Blue = "+IntToStr((sleinth[2]-9)/(2*kolvo)*sspeed); };
generate();
};
//------------------------------------------------------------------------------
int proverka(int x, int y,int p)
{
int ok=1;

if(x+skursx[p]>22||x+skursx[p]<1) ok=0;
if(y+skursy[p]>16||y+skursy[p]<1) ok=0;

if(pole[x+skursx[p]][y+skursy[p]]!=0||poly[x+skursx[p]][y+skursy[p]]!=0) ok=0;

return ok;
};
//------------------------------------------------------------------------------
void food(int x, int y, int p)
{
if(players==1) {Form1->Label1->Caption="Your Score = " + IntToStr((sleinth[1]-9)/(2*kolvo)*sspeed); };
if(players==2) {Form1->Label1->Caption="Your Score : Red = " + IntToStr((sleinth[1]-9)/(2*kolvo)*sspeed)+"; Blue = "+IntToStr((sleinth[2]-9)/(2*kolvo)*sspeed); };
for(int t,i=1;i<=kolvo;i++)
{
if(x==boxx[i]&&y==boxy[i])
{
sleinth[p]=sleinth[p]+2*kolvo;
Again:
boxx[i]=random(22)+1;
boxy[i]=random(16)+1;
if(pole[boxx[i]][boxy[i]]!=0||poly[boxx[i]][boxy[i]]!=0) goto Again;
for(t=i-1;t>=1;t--)
{
if(boxx[i]==boxx[t]&&boxy[i]==boxy[t]) goto Again;
};
Form1->PaintBox1->Canvas->Pen->Color=clRed;
Form1->PaintBox1->Canvas->Brush->Color=clWhite;
Form1->PaintBox1->Canvas->Ellipse((boxx[i]-1)*30+4,(boxy[i]-1)*30+4,boxx[i]*30-4,boxy[i]*30-4);
};
};
};
//---------------------------------------------------------------------------
//------------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::s9MouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
sspeed=9;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::s8MouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
sspeed=8;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::s7MouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
sspeed=7;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::s6MouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
sspeed=6;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::s5MouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
sspeed=5;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::s4MouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
sspeed=4;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
kolvo=1;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton2MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
kolvo=2;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton3MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
kolvo=3;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton4MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
kolvo=4;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
sleinth[1]=9;
sleinth[2]=9;
skursx[1]=1;
skursy[1]=0;
skursx[2]=1;
skursy[2]=0;

start();
Form1->Timer1->Interval=30+(9-sspeed)*30;
Form1->Button1->Enabled=false;
Form1->Enabled=true;
Form1->Timer1->Enabled=true;
fop();     //Äðîí, íèæå âûâîä ñ÷èòàííûõ äâóõ ñòðîê
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton5MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
sspeed=9;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton6MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
sspeed=8;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::RadioButton7MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
sspeed=7;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton8MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
sspeed=6;
}
//---------------------------------------------------------------------------




void __fastcall TForm1::RadioButton9MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
sspeed=5;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton10MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
sspeed=4;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton11MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
players=1;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton12MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
players=2;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton13MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
border=1;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RadioButton14MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
border=0;
}
//---------------------------------------------------------------------------



void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
for(int t,i=1;i<=22;i++) // uvelichenie
{
for(t=1;t<=16;t++)
{
 if(pole[i][t]!=0)
 {
 pole[i][t]=pole[i][t]+1;
 if(pole[i][t]>sleinth[1])
 {
 pole[i][t]=0;
 Form1->PaintBox1->Canvas->Pen->Color=0x0097FF7D;
 Form1->PaintBox1->Canvas->Brush->Color=0x0097FF7D;
 Form1->PaintBox1->Canvas->Rectangle(30*(i-1)+2,30*(t-1)+2,30*i-2,30*t-2);
 };
 };

 if(players==2&&poly[i][t]!=0)
 {
 poly[i][t]=poly[i][t]+1;
 if(poly[i][t]>sleinth[2])
 {
 poly[i][t]=0;
 Form1->PaintBox1->Canvas->Pen->Color=0x0097FF7D;
 Form1->PaintBox1->Canvas->Brush->Color=0x0097FF7D;
 Form1->PaintBox1->Canvas->Rectangle(30*(i-1)+2,30*(t-1)+2,30*i-2,30*t-2);
 };
 };
};
};

for(int j,k=1;k<=22;k++) // sozdanie
{
for(j=1;j<=16;j++)
{
 if(pole[k][j]==2)
 {
 if(proverka(k,j,1))
 {
 pole[k+skursx[1]][j+skursy[1]]=1;
 food(k+skursx[1],j+skursy[1],1);
 Form1->PaintBox1->Canvas->Pen->Color=clRed;
 Form1->PaintBox1->Canvas->Brush->Color=clRed;
 Form1->PaintBox1->Canvas->Rectangle(30*(k+skursx[1]-1)+2,30*(j+skursy[1]-1)+2,30*(k+skursx[1])-2,30*(j+skursy[1])-2);
 }
 else {Form1->Timer1->Enabled=false;Form1->Button1->Enabled=true;  fcl();};
 };

 if(poly[k][j]==2&&players==2)
 {
 if(proverka(k,j,2))
 {
 poly[k+skursx[2]][j+skursy[2]]=1;
 food(k+skursx[2],j+skursy[2],2);
 Form1->PaintBox1->Canvas->Pen->Color=0x00FF1C1C;
 Form1->PaintBox1->Canvas->Brush->Color=0x00FF1C1C;
 Form1->PaintBox1->Canvas->Rectangle(30*(k+skursx[2]-1)+2,30*(j+skursy[2]-1)+2,30*(k+skursx[2])-2,30*(j+skursy[2])-2);
 }
 else { Form1->Timer1->Enabled=false; Form1->Button1->Enabled=true;  fcl();};
 };
};
};
}
//---------------------------------------------------------------------------


void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
switch(Key)
{
case 's': if(skursy[1]!=-1) {skursy[1]=1; skursx[1]=0;}; break;
case 'w': if(skursy[1]!=1) {skursy[1]=-1; skursx[1]=0;}; break;
case 'a': if(skursx[1]!=1) {skursx[1]=-1; skursy[1]=0;}; break;
case 'd': if(skursx[1]!=-1) {skursx[1]=1; skursy[1]=0;}; break;
case ' ':
if(players==1) { Form1->Timer1->Enabled=false;Form1->Button1->Enabled=true;  fcl();};
if(players==2) { Form1->Timer1->Enabled=false; Form1->Button1->Enabled=true;  fcl();}; sleinth[1]=9;
sleinth[2]=9;
skursx[1]=1;
skursy[1]=0;
skursx[2]=1;
skursy[2]=0;
start();
Form1->Timer1->Interval=30+(9-sspeed)*30;
Form1->Button1->Enabled=false;
Form1->Enabled=true;
Form1->Timer1->Enabled=true;
break;
};
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
if(players==2)
{
switch(Key)
{
case VK_DOWN : if(skursy[2]!=-1) {skursy[2]=1; skursx[2]=0;}; break;
case VK_UP   : if(skursy[2]!=1) {skursy[2]=-1; skursx[2]=0;}; break;
case VK_LEFT : if(skursx[2]!=1) {skursx[2]=-1; skursy[2]=0;}; break;
case VK_RIGHT: if(skursx[2]!=-1) {skursx[2]=1; skursy[2]=0;}; break;
};
};
if(players==1)
{
switch(Key)
{
case VK_DOWN : if(skursy[1]!=-1) {skursy[1]=1; skursx[1]=0;}; break;
case VK_UP   : if(skursy[1]!=1) {skursy[1]=-1; skursx[1]=0;}; break;
case VK_LEFT : if(skursx[1]!=1) {skursx[1]=-1; skursy[1]=0;}; break;
case VK_RIGHT: if(skursx[1]!=-1) {skursx[1]=1; skursy[1]=0;}; break;
};
};
}
//---------------------------------------------------------------------------



Добавлено спустя 3 минуты, 45 секунд:
ps: есть некотоые баги: если резко изменить направление дважды, причем второй раз в сторону откуда вы шли - считается, что вы врезались; если змея станет ОЧЕНЬ длинной и кубикам некуда будет поставиться - зависнет (бесконечный цикл поиска свободного места). устранить просто, но просто не вижу смысла тратить время.
ps+1/2s: если что не понятно- объясню (например обозначения)
ps+s: думаю изменить игру на двоих, т.е. сделать, что бы когда один врезался - он просто замирал, а второй игрко мог бы продолжить. (игра имеет и одиноцную и двойную игру)


 

Member
Статус: Не в сети
Регистрация: 10.03.2004
Откуда: Минск
мишка Старайся избегать оператора goto.


 

почему? а как можно обойтись без него, если какое-то действие мне необходимо повторить много раз взависимости от результата этого действия? может лучше сделать одноразовый цикл, который если необходимо будет расширяться?


 

Member
Статус: Не в сети
Регистрация: 30.01.2003
Откуда: Москва
мишка while (условие) {деуствие} или do {действие} while (условие). Внутри while и do..while действуют операторы break и continue, Первый - выходит из цикла, второй - прыгает в конец цикла, проверяет условие и, если оно выполняется, идет на начало.

Добавлено спустя 1 минуту, 54 секунды:
Код:
Again:
boxx[i]=random(22)+1;
boxy[i]=random(16)+1;
if(pole[boxx[i]][boxy[i]]!=0||poly[boxx[i]][boxy[i]]!=0) goto Again;

можно переписать как
Код:
do
{
  boxx[i]=random(22)+1;
  boxy[i]=random(16)+1;
}
while (pole[boxx[i]][boxy[i]]!=0||poly[boxx[i]][boxy[i]]!=0);


 

спасибо, учту
есть некоторые вопросы:
1) мы проходили такую штуку, как классы. пример был: комплексные числа. А вообще есть ли хоть один пример НОРМАЛЬНЫй использования классов?
2) как сохранять и считывать данные?


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
мишка писал(а):
1) мы проходили такую штуку, как классы. пример был: комплексные числа. А вообще есть ли хоть один пример НОРМАЛЬНЫй использования классов

Весь твой CBUilder большой пример использования классов.


 

может лучше, не так:
Код:
Код:
do
{
  boxx[i]=random(22)+1;
  boxy[i]=random(16)+1;
}
while (pole[boxx[i]][boxy[i]]!=0||poly[boxx[i]][boxy[i]]!=0);
 

, а вто так:
Код:
for(int xx=1;xx<=1; xx++)
{
boxx[i]=random(22)+1;
boxy[i]=random(16)+1;
 
if (pole[boxx[i]][boxy[i]]!=0||poly[boxx[i]][boxy[i]]!=0) xx--;
};

Потому что while расчитана не более, чем на два условия... а если у меня их 30 или 300?! или количество условий зависит от результата?
мой код приемлим?


 

Member
Статус: Не в сети
Регистрация: 10.03.2004
Откуда: Минск
Цитата:
1) мы проходили такую штуку, как классы. пример был: комплексные числа. А вообще есть ли хоть один пример НОРМАЛЬНЫй использования классов?

А чем комплексные числа не пример? На мой взгляд очень даже показательно. Если с переопределением операторов, то хороший примерчик.[/b]


 

Member
Статус: Не в сети
Регистрация: 04.01.2004
Откуда: 31
Когда-то... я... а наверное каждый из нас, хотел написать супер-пупер-мега игру :)...
Вообще, про разработку игр лучше читать здесь http://www.gamedev.ru... Там правда всё больше напирают на 3D...

мишка писал(а):
1) Могу дать коды всех этих программ, кроме стратегии.

Потерял исходники? :)

мишка писал(а):
PS: можно ли где-нибудь научиться писать игры? где?

Писать игры не учат... Пишет программист (на него учат). А игру создает (не пишет!) целая толпа народу...

Добавлено спустя 2 минуты, 34 секунды:
P.S. Есть мои эксперименты с opengl на c++ builder.... могу выслать


 

Member
Статус: Не в сети
Регистрация: 29.09.2004
Откуда: Moscow-city
мишка Если игры хочешь писать научись работать с какой-нибудь библиотекой (OpenGL или DirectDraw) мне лично вторая нравиться. Работу сможешь найти легко, если станешь действительно профессионалом.. вот пример http://deepgames.ru - глянь вакансии, нужен специалист, опыт работы с DirectX не менее 3-х лет.

_________________
Truth in the trance


 

Привет Всем!
Я вижу тут настоящие специалисты по играм собрались. Будьте так добры кто может, помогите девушке, напишите или может есть что-то подобное. Надо очень в институте по ООП программу по любому заданию.Вот задания:
1)«Морской бой» На прямоугольном (текстовом) клетчатом игровом поле расставлены корабли (1, 2-х, 3-х и 4-х палубные по количеству занимаемых клеток). Имеется два таких набора кораблей (по количеству воюющих сторон). Идентифицируются цветом.
Каждый корабль может стрелять на расстояние в одну клетку. Корабль может выдержать 10 попаданий каждую палубу (однопалубный корабль потонет после 10-го попадания, 4-х палубный –соответственно после 40-го).
Логика поведения корабля следующая: в начальном состоянии он определяет ближайший к нему вражеский корабль (другого цвета). Если на одинаковом расстоянии находится несколько кораблей, выбирается случайный корабль. После определения цели осуществляется сближение с целью.
Однопалубный корабль перемещается на одну клетку за один ход, четырех палубный – на одну клетку за 4 хода. При сближении на расстояние выстрела, корабль стреляет по врагу. В случае, если корабль теряет половину своего запаса ударов (5 для однопалубных, 10 для 2-х палубных, 15 для 3-х палубных и 20 для 4-х палубных), он начинает бегство в противоположную сторону от врага.
Регенерация корабля осуществляется следующим образом: повреждение уменьшается на 1 пункт за 5 ходов.
При одинаковом количестве кораблей у разных сторон, но при различном их положении выигрывает та или иная сторона. Задача системы – промоделировать баталию из данного состояния.
2)«Противоборство» В системе моделируется противоборство двух колоний.
Колония состоит из строений и юнитов (живых существ). Строения могут быть двух видов: дома юнитов и защитные укрепления. Каждый дом обеспечивает жизнедеятельность 10-и юнитов. Если вместимости домов не хватает, новый юнит не может быть порожден.
Если дом разрушен противоборствующей стороной, то юниты пострадавшей стороны начинают голодать. Дома можно строить без ограничений, на строительство дома нужно достаточно много времени.
Юниты разделяются на два типа: строящие и воюющие. Строители наносят врагу незначительный урон и обладают низкой жизнестойкостью. Воины наносят более существенный урон и более защищены. Урон, наносимый воином, меняется случайно в незначительных пределах.
Юнит обладает набором характеристик: на сколько клеток игрового поля он «видит», уровень «здоровья» (когда <= 0 – юнит умирает), сколько «здоровья» он теряет во время боя за один удар и др.
Юнит обладает характерным поведением: строитель если видит врага – убегает, воин ступает в бой и т.д.
У строений тоже есть характеристики: размер, количество ударов, после которых строение рухнет и т.д.
Игра происходит на игровом поле (текстовом). Юнит занимает одно знакоместо, здание- несколько. Юнит может перейти на соседнее знакоместо, если оно не занято зданием или другим юнитом.
Игра может проходить в двух режимах: из некоторого начального положения без участия человека (на начало игры уже созданы все здания и юниты) и с участием человека (он управляет юнитами).

3)«Океан» Первобытном океане существует две формы жизни: хищники и существа, питающиеся растительной пищей.
Океан вырабатывает растительную пищу следующим образом: к количеству вещества на предыдущем шаге (х) добавляется некоторая часть (например, 0.5х), если итоговая масса не превышает
некоторого предела –порога (Y), т.к. океан не может вырастить больше некоторого количества на единицу поверхности.
Потребление растительной пищи происходит следующим образом: если клетка поля занята «травоядным» существом, то оно потребляет 0.1х за один ход, 0.2х за второй, 0.3х па третий и т.д., т.к. в благоприятных условиях популяция травоядных возрастает.
Размеры колонии травоядных увеличиваются на 1 ряд с каждой стороны за ход, если колонии не голодает.
Хищники, в отличие от травоядных, индивидуальны.
Один хищник занимает целое поле и за 1 ход уничтожает половину его содержимого. Хищник находится в постоянном движении.
В случае, если хищник в течение 5 ходов не «голодал» (получал не менее 50% от Y), он раздваивается (делится). Два хищника не могут занимать одну клетку. Случае, если хищник не может перейти на клетку, не занятую другим хищником, один из них погибает (более «сытый»). Хищник живет 30 ходов, «голодающий» хищник в течение 3-х ходов погибает.
Зарнее большое спасибо.Очень жду ответов


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 13 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan