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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2011, 17:38   #1
Ant1Player
Пользователь
 
Регистрация: 24.03.2009
Сообщений: 30
По умолчанию drawgrid проверка [delphi]

Здравствуйте, получил дом задание доделать игрушку тык
С таймером проблем конечно же не возникло, но вот по истечению времени не доходит как сделать проверку остались ли не выбранные квадраты на поле или нет, уже весь инет облазил, и все что в моих силах перепробовал ну не как не могу сделать
вот кусок кода с таймером
Код:
procedure TForm1.Timer1Timer(Sender: TObject);

begin
i:=i-1;
Label1.Caption:='Осталось  '+inttostr(i)+' секунд';
If i=0 then
begin
Timer1.Enabled:=false;
 if ............. then
 begin
 ShowMessage('Вы Проиграли=(');
end
   end

end;


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.10.2011 в 14:28.
Ant1Player вне форума Ответить с цитированием
Старый 17.10.2011, 17:48   #2
Aiden
Пользователь
 
Регистрация: 12.09.2007
Сообщений: 34
По умолчанию

Цитата:
А теперь создадим массив. Делать мы это будем после ключевого слова var т.е. сразу же после:

var
Form1: TForm1;

Пишем:

ColorOfBrick : array [0..MAX_COLUMNs, 0..MAX_ROWS] of TColor;
делай перебор массива и сравнивай с WALL_COLOR.
Aiden вне форума Ответить с цитированием
Старый 17.10.2011, 18:15   #3
Ant1Player
Пользователь
 
Регистрация: 24.03.2009
Сообщений: 30
По умолчанию

так если я не ошибаюсь
Код:
if ColorOfBrick[ACol, ARow] = WALL_COLOR then
    exit;
это в коде, получается что если колор оф брик равен валл колор то ето ошибко
Ant1Player вне форума Ответить с цитированием
Старый 17.10.2011, 18:26   #4
Aiden
Пользователь
 
Регистрация: 12.09.2007
Сообщений: 34
По умолчанию

если приведенный код - из функции IsBrickAlone - то Вы его не внимательно прочли. Данная функция осуществляет проверку на необходимость удаления некоего массива квадратов. Соответственно если пользователь щелкает по квадрату с цветом WALL_COLOR (т.е. по квадрату который уже был удален, ибо WALL_COLOR - цвет удаленных квадратов) - необходимость в проверке отпадает, т.к. игровое поле не изменилось.
Aiden вне форума Ответить с цитированием
Старый 17.10.2011, 18:41   #5
Ant1Player
Пользователь
 
Регистрация: 24.03.2009
Сообщений: 30
По умолчанию

Точн..вы правы.. но все же при выигрыше не обязательно все квадраты будут белые.. поэтому думаю не правильно будет сравнивать их с пустыми квадратами... либо я чего то недопонимаю?...
Ant1Player вне форума Ответить с цитированием
Старый 17.10.2011, 18:46   #6
Aiden
Пользователь
 
Регистрация: 12.09.2007
Сообщений: 34
По умолчанию

Таки да Есть и такой вариант. Решение - если для всех элементов массива функция IsBrickAlone возвращает False - значит найдены все фигуры. Т.е. тот-же перебор, но сравнивать результат функции для данного элемента а не соответствие элемента цвету.
Aiden вне форума Ответить с цитированием
Старый 17.10.2011, 19:24   #7
Ant1Player
Пользователь
 
Регистрация: 24.03.2009
Сообщений: 30
По умолчанию

Что делаю не так?... не хотит
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
   var
   isBrickAlone:boolean;

begin
i:=i-1;
Label1.Caption:='Îñòàëîñü  '+inttostr(i)+' ñåêóíä';
If i=0 then
begin
Timer1.Enabled:=false;
if isBrickAlone = false then
 begin
 ShowMessage('Âû Ïðîèãðàëè=(');
end
   end

end;


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

и перед копированием информации переключайте раскладку клавиатуры на русский язык.
Это позволит избежать "кракозябр" вместо русского текста..


Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.10.2011 в 14:31.
Ant1Player вне форума Ответить с цитированием
Старый 18.10.2011, 10:58   #8
Aiden
Пользователь
 
Регистрация: 12.09.2007
Сообщений: 34
По умолчанию

Код:
procedure TForm1.Timer1Timer(Sender: TObject); 
var 
isBrick:boolean; 
i,j:integer;

begin 
i:=i-1; 
Label1.Caption:='Îñòàëîñü  '+inttostr(i)+' ñåêóíä'; 
If i=0 then begin 
  Timer1.Enabled:=false; 
  isBrick:=true;
  for i:=0 to Length(ColorOfBrick)-1 do begin
    if isBrick=true then begin
      for j:=0 to Length(ColorOfBrick[0])-1 do 
        isBrick:=IsBrickAlone(i,j);
    end;
  end;
  if isBrick = false then 
    ShowMessage('Âû Ïðîèãðàëè=('); 
end; 
end;
примерно вот так. перебор массива надо делать
Aiden вне форума Ответить с цитированием
Старый 18.10.2011, 14:08   #9
Ant1Player
Пользователь
 
Регистрация: 24.03.2009
Сообщений: 30
По умолчанию

Спс, все заработало спс за подсказку про перебор массива, сделал проще
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
   var
  isBrick:boolean;
begin
k:=k-1;
Label1.Caption:='осталось '+inttostr(k)+'сек';
If k=0 then
begin
Timer1.Enabled:=false;
  isBrick:=IsBrickAlone(ACol,ARow);
    end;
  end;
  if isBrick = false then
    ShowMessage('не выйграл=(') else
    ShowMessage('выйграл :)');
end;
end;
поторопился с выводами.... при убирании нескольких квадратов он пишит что я выйграл... а если не чего не выбирать то проиграл..

Последний раз редактировалось Ant1Player; 18.10.2011 в 14:50. Причина: :(
Ant1Player вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DrawGrid в Delphi 7 Rus 47 Помощь студентам 5 25.04.2011 20:56
DrawGrid VadEr Помощь студентам 2 30.05.2009 01:16
drawgrid help! Extez1 Помощь студентам 0 03.05.2009 21:23