Теперь создадим обработчик для кнопки “Сделатьход”(Button1)




Создание формы. Создайте форму такую как показано на рисунке 1. При этом проследите, чтобы имена элементов на рисунке, соответствовали именам элементов вашей формы.

Замените значения свойства Caption у всех представленных объектов, на соответствующие надписи. У Edit1, Edit2, Label4, а также для объектов класса CheckBox сотрите это значение. Для Button1 и объектов класса CheckBox установите свойство Enabled равным False. Это нужно сделать для того, чтобы пользователь не смог начать игру, до тех пор, пока не введет имена. (Смотри нижеследующий рисунок)

Немного теории Свойство Caption (Надпись, подпись) существует практически у всех объектов видимых на экране и несет в себе подпись для данного объекта. Например для кнопок это может быть “Да”, “Нет”, “Отмена” Свойство Enabled (возможность или право что-то сделать) служит для изменения состояния объекта “активный” (=True(истина)) т.е с данным объектом можно работать, и “неактивный” (=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;



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: