Играют два игрока, имена которых вводятся в специальные строки (Edit). Игра ведется на 9 кнопках (BitBtn1-BitBtn9). Переименуйте их в B1-B9. В момент хода крестика доступна (выделена) кнопка с крестиком (BitBtn10-B10) и недоступна кнопка с ноликом (BitBtn11-B11) и наоборот. Через пункт главного меню «Игра» можно начать новую игру, выбрать первый ход (крестик или нолик), а также выйти из игры. С помощью пункта «?» можно получить сведения о программе (для этого понадобится подключить к проекту еще одну форму AboutBox), а также прочесть справку по пользованию данной программой (также нужно подключить новуюформу). По окончании игры выдается соответствующее сообщение (выиграл крестик, нолик или ничья).
Алгоритм выигрыша:
Для каждой кнопки есть определенное количество выигрышных ситуаций, например для B1
B1
B2
B3
B4
B5
B6
B7
B8
B9
Соответственно для каждой кнопки нужно проверить каждую из ситуаций.
Ввод имени первого игрока
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Begin
if key=chr(13) then
begin
showmessage (edit1.text+’, вы играете Х’);
edit2.setfocus;
end;
Ввод имени второго игрока
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
Begin
if key=chr(13) then
showmessage (edit2.text+’. вы играете О’);
end;
При щелчке по кнопке В1 ставится «Х» или «O» в зависимости от доступности кнопок B10 или B11. После этого кнопка B1 становится не доступной для предотвращения повторного нажатия.
procedure TForm1.b1Click(Sender: TObject);
Begin
if b10.enabled=true then
Begin
b1.caption:='x';
b1.enabled:=false;
b10.enabled:=false;
b11.enabled:=true;
End
else
if b11.enabled=true then
Begin
b1.caption:='o';
b1.enabled:=false
b11.enabled:=false;
b10.enabled:=true;
end;
{проверяем возможный выигрыш}
if (b1.caption='x') and (b2.caption='x') and (b3.caption='x') or (b1.caption='x') and (b5.caption='x') and b9.caption='x') or (b1.caption='x') and (b4.caption='x') and (b7.caption='x') then
showmessage (edit1.text+', вы выйграли');
if (b1.caption='o') and (b2.caption='o') and (b3.caption='o') or (b1.caption='o') and (b5.caption='o') and (b9.caption='o') or (b1.caption='o') and (b4.caption='o') and (b7.caption='o') then
showmessage (edit2.text +', вы выйграли')
else
if (b1.caption<>'') and (b2.caption<>'') and (b3.caption<>'') and (b4.caption<>'') and (b5.caption<>'') and (b6.caption<>'') and (b7.caption<>'') and (b8.caption<>'') and (b9.caption<>'')
then
showmessage ('Ничья');
end;
Обработайте ходы остальными кнопками
Новая игра
procedure TForm1.N3Click(Sender: TObject);
Begin
b1.caption:='';
b2.caption:='';
b3.caption:='';
b4.caption:='';
b5.caption:='';
b6.caption:='';
b7.caption:='';
b8.caption:='';
b9.caption:='';
end;
Определяем первый ход:
Событие OnClick на пункт меню Игра/Первый ход/Крестик
procedure TForm1.N4Click(Sender: TObject);
Begin
n4.checked:=true;
n5.Checked:=false;
b10.enabled:=true;
b11.enabled:=false;
end;
Событие OnClick на пункт меню Игра/Первый ход/Нолик
procedure TForm1.N5Click(Sender: TObject);
Begin
n4.checked:=false;
n5.Checked:=true;
b10.enabled:=false;
b11.enabled:=true;
end;
Пункты «О программе» и «Справка» опишите самостоятельно;