Текущий архив: 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.024 c