Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.25;
Скачать: CL | DM;

Вниз

Вопрос о создании игры типа   Найти похожие ветки 

 
Vorobei   (2003-02-23 02:17) [0]

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

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

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

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


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

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


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

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


 
TButton ©   (2003-02-23 18:35) [3]

пример:
есть форма с канвой.
массив 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) - проверяет нет ли на матрице победителя
и помоему я забыл добавить ничью...



Страницы: 1 вся ветка

Текущий архив: 2003.08.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.037 c
1-81623
Pavel74
2003-08-12 21:56
2003.08.25
Как можно больше строчек в MessageDlg поставить? :)


1-81703
Yuraz
2003-08-11 11:17
2003.08.25
Как в Font.Color = clBlac вместо clBlack написать цифрами (0,0,0)


1-81748
Den[NSP]
2003-08-09 19:37
2003.08.25
AccessViolation, из-за чего???


1-81629
Spawn
2003-08-14 09:38
2003.08.25
Word


1-81773
-=GaLaN=-
2003-08-14 12:08
2003.08.25
Выравнивание в TEdit