Главная страница
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.024 c
3-81582
Weare
2003-07-29 18:19
2003.08.25
Запрос SQL для TQuery.


1-81754
Vulko
2003-08-09 03:12
2003.08.25
Почему компилятору не нравится эта строка?


3-81531
ol
2003-07-31 10:59
2003.08.25
как вычислить разницу во времени между двумя датами


14-81912
Wolflab
2003-08-06 18:52
2003.08.25
Советую всем посмотреть


14-81922
Е-Моё имя
2003-08-07 11:23
2003.08.25
ржать