![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос о создании игры типа
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]
Ты мыслишь так, как пригоже было бы мыслить в процедурном программировании, а не в ООП. По-моему, всё элементарно, не надо пихать "ход игрока - ход компьютера" в одну процедуру, тем более цикл.