Лабораторная работа по Delphi
Якунин М.С

Тема: Создание игры “спички”

    [На главную страницу сайта] [Другие темы раздела] [Скачать исходный текст]

  1. Создание и сохранения проекта. Когда вы запустите Delphi, новый проект уже будет создан, и его будет достаточно только сохранить на жестком диске. Для этого выполните команду меню File-> Save Project As… После чего в появившемся диалоговом окне выберете диск D: и папку вашей группы. Зайдя в нее создайте папку Spichki, и сохраните в нее файлы вашего проекта, нажимая кнопочку “Сохранить”. Если вдруг когда вы запустите Delphi новый проект не создаться автоматически, то выполните команду меню File->New->Application, после чего выполните сохранение следуя инструкции описанной выше.
  2. Создание формы. Создайте форму такую как показано на рисунке 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;

После того, как вы все сделаете программа должна работать. Теперь можно поиграть со своим соседом.

[На главную страницу сайта] [Другие темы раздела] [Скачать исходный текст]