Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2017, 18:33   #1
KateTr
Новичок
Джуниор
 
Регистрация: 15.04.2015
Сообщений: 1
По умолчанию Игра "Жизнь". Проблема с границами DrawGrid

Добрый день!
Написала код игры "Жизнь", используя таблицу GrawGrid. Но почему-то если клетка[0,j] или клетка[i,max],где мах - максимальное кол-во строк, то с полем вообще происходит что-то непонятное. В первом случае оно вообще каким-то образом закрашивает противоположную часть поля(ещё и неправильно), а во втором - просто закрашивает неправильно.
Проблем с закрашиванием или тп нет, поэтому приведу код только для той части программы, где я делаю расчёт нового поколения.
Также Pole:array[0..shirina-1,0..height-1] of 0..1;
Буду благодарна за помощь


Текст программы(не разобралась как вставить текст проги, как тут все делают, поэтому извините):
....
Код:
function TForm1.Schet(i,j:integer):Integer;
begin
  if (i>0)and(j>0)and(i<shirina-1)and(j<height-1) then
    Result:=Pole[i-1,j]+Pole[i-1,j-1]+Pole[i-1,j+1]+Pole[i,j-1]+Pole[i,j+1]+
     Pole[i+1,j-1]+Pole[i+1,j]+pole[i+1,j+1]
   else if (i=0)and(j=0) then Result:=Pole[i,j+1]+Pole[i+1,j]+Pole[i+1,j+1]
   else if (i=0)and(j=height-1) then Result:=Pole[i,j-1]+Pole[i+1,j]+Pole[i+1,j-1]
   else if (j=0)and(i=shirina-1) then Result:=Pole[i-1,j]+Pole[i-1,j+1]+Pole[i,j+1]
   else if j=height-1)and(i=shirina-1) then Result:=Pole[i,j-1]+Pole[i-1,j-1]+Pole[i-1,j]
   else if i=0 then Result:=Pole[i,j-1]+Pole[i,j+1]+Pole[i+1,j-1]+Pole[i+1,j]+Pole[i+1,j+1]
   else if j=0 then Result:=Pole[i-1,j]+Pole[i+1,j]+Pole[i-1,j+1]+Pole[i,j+1]+Pole[i+1,j+1]
   else if i=shirina-1 then Result:=Pole[i,j-1]+Pole[i-1,j-1]+Pole[i-1,j]+Pole[i-1,j+1]+Pole[i,j+1]
   else if j=height-1 then Result:=Pole[i-1,j]+Pole[i-1,j-1]+Pole[i,j-1]+Pole[i+1,j-1]+Pole[i+1,j];
end;

procedure TForm1.NextPop;
var
  s,i,j:Integer;
  newPole:array[0..shirina-1,0..height-1] of 0..1;
Begin
  Count:=count+1;
  for i:=0 to shirina-1 do
   for j:=0 to height-1 do
    begin
     s:=Schet(i,j);
     if (Pole[i,j]=0)and(s=3) then newPole[i,j]:=1
                              else newPole[i,j]:=0;
     if Pole[i,j]=1 then if (s=2)or(s=3) then newPole[i,j]:=1
                                         else newPole[i,j]:=0;
    end;
  for i:=0 to shirina-1 do
   for j:=0 to height-1 do
    Pole[i,j]:=newPole[i,j];
end;
.....

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 02.04.2017 в 18:38.
KateTr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра "Жизнь" на Assembler kolo6awka Помощь студентам 0 22.12.2013 21:21
Игра "Жизнь" на C++, console application zoluxa Общие вопросы C/C++ 11 16.11.2012 17:47
Игра "Жизнь" Lucky777 Помощь студентам 0 30.11.2011 18:54
игра "Жизнь" Lucky777 Помощь студентам 0 14.11.2011 17:38
игра "жизнь" с++ Dashka13 Помощь студентам 0 29.05.2011 16:42