Создание формы. Создайте форму такую как показано на рисунке 1. При этом проследите, чтобы имена элементов на рисунке, соответствовали именам элементов вашей формы.
Замените значения свойства Caption у всех представленных объектов, на соответствующие надписи. У Edit1, Edit2, Label4, а также для объектов класса CheckBox сотрите это значение. Для Button1 и объектов класса CheckBox установите свойство Enabled равным False. Это нужно сделать для того, чтобы пользователь не смог начать игру, до тех пор, пока не введет имена. (Смотри нижеследующий рисунок)
![]() |
3. Написание рабочего модуля. Для переключений между формой и модулем можно использовать пункт меню Window, а также щелкая левой клавишей мыши то на одном, то на другом окне.
Перейдите в окно модуля найдите в нем раздел Var, и добавьте две переменные:
{Переменная в которой храниться номер текущего игрока}
CurrentPlayer: byte=1;
{Переменная в которой храниться колличество взятых им спичек}
CurrentSpich: byte=0;
Затем поднимитесь выше к началу раздела Interface и перед блоком Type добавьте одну константу:
Const
{Максимальное колличество спичек которое можно взять за один ход}
MaxSpich=3;
Теперь необходимо добавить функцию, которая будет проверять правильность взятия спичек, а также следить за тем, когда кончиться игра. Для этого ее сначала необходимо объявить в разделе Type перед подразделом Private:
{Объявление новой процедуры}
function Proverka: boolean;
Далее необходимо написать саму функцию. Делается это в разделе Implementation после директивы компилятора {$R *.dfm}
function TForm1.Proverka: boolean;
Var
{Переменная для хранения результата проверки}
res: boolean;
Begin
res:=true;
{Если количество взятых спичек одним игроком больше максимального,
то результат = False(Ложь)}
if CurrentSpich>MaxSpich then
res:=false
Else
{В противном случае, если все кнопочки выбраны (Свойство Checked показывает
выбрана ли кнопка =True(Истина) или же нет =False(Ложь)) то это означает что игра закончена}if CheckBox1.Checked and CheckBox2.Checked and
CheckBox3.Checked and CheckBox4.Checked and
CheckBox5.Checked and CheckBox6.Checked and
CheckBox7.Checked and CheckBox8.Checked and
CheckBox9.Checked and CheckBox10.Checked then
Begin
{Проверяем если текущий игрок 1 то значит он взял последнюю спичку
Следовательно победил игрок 2}
if CurrentPlayer=1 then
{Показываем соответствующее сообщение}
ShowMessage('Победил(а) '+Edit2.text)
{В противном случае побеил игрок 2}
Else
ShowMessage('Победил(а) '+Edit1.text);
{Перепишите эти строки просто, а в конце занятия объясните зачем
они нужны}
Button1.enabled:=false;
Edit1.Enabled:=True;
Edit2.Enabled:=True;
Button2.Enabled:=True;
Edit1.Text:='';
Edit2.Text:='';
CheckBox1.Checked:=False;
CheckBox2.Checked:=False;
CheckBox3.Checked:=False;
CheckBox4.Checked:=False;
CheckBox5.Checked:=False;
CheckBox6.Checked:=False;
CheckBox7.Checked:=False;
CheckBox8.Checked:=False;
CheckBox9.Checked:=False;
CheckBox10.Checked:=False;
Label4.Caption:='';
end;
{Возвращаем результат равный res}
proverka:=res;
end;
Теперь необходимо создать обработчики для нажатия кнопочек. Для того чтобы создать такой обработчик необходимо на кнопочке сделать двойной щелчок мышью. Создадим обработчик для кнопки “Начать игру”(Button2)
procedure TForm1.Button2Click(Sender: TObject);
Begin
{Если имена введены, то тогда разблокируем все
элеменнты нужные для игры, а ненужные блокируем}
if (Edit1.Text<>'') and (Edit2.Text<>'') then
Begin
{Разблокировка 10 кнопочек эмулирующих спички}
CheckBox1.Enabled:=True;
CheckBox2.Enabled:=True;
CheckBox3.Enabled:=True;
CheckBox4.Enabled:=True;
CheckBox5.Enabled:=True;
CheckBox6.Enabled:=True;
CheckBox7.Enabled:=True;
CheckBox8.Enabled:=True;
CheckBox9.Enabled:=True;
CheckBox10.Enabled:=True;
{Разблокировка кнопочки передачи хода}
Button1.Enabled:=True;
{Выводим текст что ходит первый игрок}
label4.Caption:=edit1.Text;
{Блокируем поле ввода имен и кнопку начать игру}
Edit1.Enabled:=False;
Edit2.Enabled:=false;
Button2.Enabled:=false;
End
{В противном случае если имена игроков не введены
выводим соответствующее сообщение}
Else
Showmessage('Введите имена игроков');
end;
Теперь создадим обработчик для кнопки “Сделатьход”(Button1)
procedure TForm1.Button1Click(Sender: TObject);
Begin
{Меняем текущего игрока. Если это первый меняем на второго
если второй, то на первого}
CurrentPlayer:=3-CurrentPlayer;
{Обнуляем количество взятых спичек, так как новый игрок еще
ничего не брал}
CurrentSpich:=0;
{Выводим сообщение о том, кто ходит}
if CurrentPlayer=1 then
Label4.Caption:=Edit1.Text
Else
Label4.Caption:=Edit2.Text;
end;
И наконец создадим обработчики для кнопочек класса CheckBox точно таким же способом как и создавали обработчики для обычных кнопок, т.е. двойным щелчком мыши. Ниже приводится пример для первой кнопочки-выбора. Для остальных создайте сами. В процедурах будет меняться только номер этих кнопочек CheckBox1, CheckBox2…..CheckBox10.
procedure TForm1.CheckBox1Click(Sender: TObject);
Begin
{Увеличиваем количество взятых спичек у текущего
игрока}
inc(CurrentSpich);
{Если проверка прошла успешно, т.е. колличество
взятых спичек не больше максимально возможного, то }
If proverka then
{Блокируем данную кнопку чтобы ее нельзя было
выбрать второй раз}
checkbox1.Enabled:=false
Else
{В противном случае не даем игроку выбрать эту кнопку постоянно снимая флажок}
checkbox1.checked:=false;
end;