Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос о создании игры типа


Vorobei ©   (2003-02-23 02:17:00) 

Вроде простой вопрос, но для меня целая поблема.
В некоторой игре человек и компьютер делают ходы по очереди (типа крестики-нолики):
Условно: hod - процедура, выполняющая ход компьютера.

repeat
hod;
ожидание хода человека; //компьютер ждет пока человек не нажмет какую-нть кнопочку
until условие окончания игры.

Правильно ли я понимаю саму структуру такой игры?
Если считать, что компьютер, как бы тоже должен нажать какую-нить кнопочку, то получается, что в зависимости от решения которое примет комп. выбирается какая кнопочка будет нажата, но тогда слиииишком много писать: например
if (комп. выбрал стратегию номер i) then TForm1.ButtonXXClick;
а если стратегий 50, а кнопок 100, так никакого терпения не хватит?
Что нужно написать вместо "ожидание хода человека"?

Надеюсь на помощь.
Спасибо.


TButton   (2003-02-23 18:35:00) [1]

пример:
есть форма с канвой.
массив matrix 3х3 типа инт (0-пусто 1-Х 2-О)
единственный обработчик - обработчик клика на канву

begin
if matrix[x,y]<>0 then Exit //если тыкнули по занятой клетке - выход
matrix[x,y]:=1;
w:=wintest(matrix);
case w of
0:{нихто не выиграл};
1:{выиграл чел.};
2:{выиграл комп.};
else {глюк какой-то :?) };
end;
drawmatrix(matrix);
//далее ход кумпутира
hod(matrix);
w:=wintest(matrix);
case w of
0:{нихто не выиграл};
1:{выиграл чел.};
2:{выиграл комп.};
( matrix)

пример:
есть форма с канвой.
массив matrix 3х3 типа инт (0-пусто 1-Х 2-О)
единственный обработчик - обработчик клика на канву

begin
if matrix[x,y]<>0 then Exit //если тыкнули по занятой клетке - выход
matrix[x,y]:=1;
w:=wintest(matrix);
case w of
0:{нихто не выиграл};
1:{выиграл чел.};
2:{выиграл комп.};
else {глюк какой-то :?) };
end;
drawmatrix(matrix);
//далее ход кумпутира
hod(matrix);
w:=wintest(matrix);
case w of
0:{нихто не выиграл};
1:{выиграл чел.};
2:{выиграл комп.};
else {глюк какой-то :?) };
end;
drawmatrix(matrix);
end;


примерно так...
drawmatrix(matrix) - рисует матрицу на канве
hod(matrix) - анализирует матрицу и делает ход компутера
wintest(matrix) - проверяет нет ли на матрице победителя
и помоему я забыл добавить ничью...


Случайный прохожий№2   (2003-02-23 17:35:00) [2]

А может тебе заняться пока более простым?


Mihey   (2003-02-23 17:10:00) [3]

Ты мыслишь так, как пригоже было бы мыслить в процедурном программировании, а не в ООП. По-моему, всё элементарно, не надо пихать "ход игрока - ход компьютера" в одну процедуру, тем более цикл.


Наверх

Титульная страница Поиск, карта сайта Написать письмо