Разработка программы, моделирующую игру Кости

–PAGE_BREAK–2 Разработка рабочегопроекта

2.1 Разработка программы

Для разработки  приложения используется среда визуального  программирования  Delphi. В написание программы использовались компоненты из разделов Standard, Additional. Проект программы содержит одно окно Form1.В соответствии с рисунком 2 представлено главное окно программы.

Рисунок2 — Главноеокнопрограммы.

1 – Form 1, 2 – MainMenu 1, 3 – Label 5, 4 – Label 7, 5 – Label 3, 6 – Label 4, 7 – Label 6, 8 – Label 1, 9 – Label 2, 10 – ComboBox 2, 11 – ComboBox 1, 12 – Image 1, 13 – Image 2, 14 – Image 3, 15 – BitBtn 1.

1 –компонент Form1:

Свойства:

Caption– Кости;

Border – bsSingle;

BiSystemMenu – False;

BiMinimaze – False;

BiMaximaze – False;

BiHelp – False;

Height – 374;

Width – 441.

2- компонентTMainMenu 1:

Свойства:

Items:

Файл (N1)     

Новая игра (N2)     Выход (N3)

События:

Для N1 — событие TMainMenu;

N3Click– закончить работу с приложением;

N2Click– перейти к работе с  приложением;

3 – компонент Label5:

Свойства:

Caption– ‘Ваше число’;

Font — Times New Roman, 14, clWindowText.

4 – компонент Label7:

Свойства:

Caption– ‘Ваша ставка’;

Font — Times New Roman, 14, clWindowText.

5 – компонент Label3:

Свойства:

Caption– ‘Ваши очки’;

Font — Times New Roman, 14, clWindowText.

6 – компонент Label4:

Свойства:

Caption– ‘00’;

Font — Times New Roman, 14, clWindowText.

7 – компонент Label6:

Свойства:

Caption– ‘Подтвердить ставку’;

Font — Times New Roman, 16, clRed.

8 – компонент Label1:

Свойства:

Caption– ‘Сумма’;

Font — Times New Roman, 14, clWindowText.

9 – компонент Label2:

Свойства:

Caption– ‘00’;

Font — Times New Roman, 14, clWindowText.

10 – компонентComboBox2:

Left – 16;

Top – 36;

Width – 113;

Height – 21;

Style – csDropDownList;

ItemHeight – 13;

TabOrder – 1.

11 – компонентComboBox1:

Свойства:

Left – 16;

Top – 100;

Width – 113;

Height – 21;

Style – csDropDownList;

ItemHeight – 13;

TabOrder – 0.

12 – компонентImage 1:

Свойства:

Height – 49;

Width – 49;

13 – компонентImage 2:

Свойства:

Height– 49;

Width– 49;

14 – компонент Image3:

Свойства:

Height– 321;

Width– 433;

15 – компонент BitBtn1:

Свойства:

Glyph – (TBitmap);

Height – 121;

Width – 121.

События:

BitBtn1Click– событие одиночного щелчка по кнопке.

2.2 Спецификация программы

Исполняемый  файл программы  «Project1»имеет название Project1.exe.

Таблица 1.

Состав проекта.

Наименование

Обозначение

Примечание

Project1.dof

Файл параметров проекта

 главной формы

Содержит текущие установки проекта, настройки компилятора и компоновщика, имена служебных каталогов, условные директивы

Продолжение таблицы 1

Project1.res

Файл ресурсов главной формы

Содержит пиктограммы, графические изображения

Unit1.pas

Файл программных модулей главной формы

Определяет функциональность форм

Unit1.dfm

Файл программных модулей главной формы

Содержит графические характеристики модулей

Главного окна программы

Unit.dcu

Объектный файл   для Unit.pas

Откомпилированная версия  Unit.pas

2.3 Листингпрограммы

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Menus, ExtCtrls, StdCtrls, Math, Buttons;

type

  TForm1 = class(TForm)

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    Image1: TImage;

    Image2: TImage;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    ComboBox1: TComboBox;

    Label5: TLabel;

    Label6: TLabel;

    ComboBox2: TComboBox;

    Label7: TLabel;

    BitBtn1: TBitBtn;

    N4: TMenuItem;

    N5: TMenuItem;

    Image3: TImage;

    procedure N3Click(Sender: TObject);

    procedure N2Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure invisible_all(Sender: TObject);

    procedure visible_all(Sender: TObject);

    procedure Label6Click(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure N5Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  Ochki: longint;//переменная, отвечающая за очки игрока

implementation

{$R *.dfm}

procedure TForm1.N3Click(Sender: TObject);//кнопкавыход

begin

 application.Terminate;//закрываемприложение

 end;

procedure TForm1.N2Click(Sender: TObject);//новаяигра

var i:integer;

begin

   image3.Visible:=false;

 ochki:=100;//присваиваем переменной «ochki» количество начальных очков, по условию = 100

 label2.Caption:=’00’;//задаём сумму выпавших кубиков = 0

 label4.Caption:=’100′; //задаём видимое количество очков

 image1.Picture.LoadFromFile(‘p0.bmp’);//задаём начальное изображение кубиков(пустое)

 image2.Picture.LoadFromFile(‘p0.bmp’);//задаём начальное изображение кубиков(пустое)

 combobox1.Items.Clear;//очищаем список ставок

 for i:=1 to 100 do

 begin

  combobox1.Items.Add(inttostr(i));//заполняемсписокставокот1 до100

 end;

 combobox1.ItemIndex:=0;//задаём начальное положение элемента списка

 combobox2.Items.Clear;//очищаем список вариантов кубиков

 for i:=2 to 12 do

 begin

  combobox2.Items.Add(inttostr(i));//заполняемсписокставокот2 до12

 end;

 combobox2.ItemIndex:=0;//задаём начальное положение элемента списка

 visible_all(sender);//делаем видимыми все объекты на форме

 bitbtn1.Enabled:=false;//ставим положение кнопки броска на выключено

end;

procedure tform1.invisible_all(Sender: TObject);//делаемневидимымивсеобъектынаформе

begin

 label1.Visible:=false;

 label2.Visible:=false;

 label3.Visible:=false;

 label4.Visible:=false;

 label5.Visible:=false;

 label6.Visible:=false;

 label7.Visible:=false;

 image1.Visible:=false;

 image2.Visible:=false;

 combobox1.Visible:=false;

 combobox2.Visible:=false;

 bitbtn1.Visible:=false;

end;

procedure tform1.visible_all(Sender: TObject);//делаемвидимымивсеобъектынаформе

begin

 label1.Visible:=true;

 label2.Visible:=true;

 label3.Visible:=true;

 label4.Visible:=true;

 label5.Visible:=true;

 label6.Visible:=true;

 label7.Visible:=true;

 image1.Visible:=true;

 image2.Visible:=true;

 combobox1.Visible:=true;

 combobox2.Visible:=true;

 bitbtn1.Visible:=true;

end;

procedure TForm1.FormCreate(Sender: TObject);//присозданииформы

begin

   image3.Visible:=true;

 image3.picture.loadfromfile(‘l4.bmp’);

 invisible_all(Sender);//делаем невидимыми все объекты на форме, при загрузке игры

end;

procedure TForm1.Label6Click(Sender: TObject);//нажатиенанадписьпоставить

begin

 bitbtn1.Enabled:=true;//делаемактивнойкнопкуброска

 label2.Caption:=’00’;//сумма броска кубиков сбрасывается на 0

 image1.Picture.LoadFromFile(‘p0.bmp’);//загружаем пустые картинки для кубика

 image2.Picture.LoadFromFile(‘p0.bmp’);//загружаем пустые картинки для кубика

end;

procedure TForm1.BitBtn1Click(Sender: TObject);//процедурананажатиекнопкиброска

var i,i1,i2:integer;

begin

 randomize;//включаем генератор случайных чисел

 i1:=randomrange(1,6);//переменной i1 присваиваем значение от 1 до шести случайным образом

 i2:=randomrange(1,6);//переменной i2 присваиваем значение от 1 до шести случайным образом

 image1.Picture.LoadFromFile(‘p’+inttostr(i1)+’.bmp’);//в зависимости от выпавшего числа загружаемс картинку для 1-го кубика

 image2.Picture.LoadFromFile(‘p’+inttostr(i2)+’.bmp’);//в зависимости от выпавшего числа загружаемс картинку для 2-го кубика

 label2.Caption:=inttostr(i1+i2);//выводим на экран сумму выпавших кубиков

 if     ( (i1+i2

    or  ( (i1+i2>7) and (strtoint(combobox2.Items.Strings[combobox2.ItemIndex])>7) )

    and ( i1+i2strtoint(combobox2.Items.Strings[combobox2.ItemIndex]) )

 then

 begin

  ochki:=ochki+strtoint(combobox1.Items.Strings[combobox1.ItemIndex]);//прибавляемкочкамвыиграннуюставку

  showmessage(‘Вы выиграли ставку!’)//выводим сообщение о выйгрыше

 end else

 begin

  if i1+i2=strtoint(combobox2.Items.Strings[combobox2.ItemIndex]) then//есливыбранноечислосовпадаетсвыпавшим

  begin

   ochki:=ochki+strtoint(combobox1.Items.Strings[combobox1.ItemIndex])*4;//прибавляемкочкамвыиграннуюставкув4-хкратномразмере

   showmessage(‘Вы выиграли 4-х кратную ставку!’)//выводим сообщение о выйгрыше

  end else

  begin

   ochki:=ochki-strtoint(combobox1.Items.Strings[combobox1.ItemIndex]);//условиепройгрыша

   showmessage(‘Вы проиграли ставку!’)//выводим сообщение о пройгрыше

  end;

 end;

 if ochki

 begin

  invisible_all(sender);//скрываем все объекты на форме

  showmessage(‘Вы проиграли!’);//выводим сообщение о конце игры

 end else

 begin

  label4.Caption:=inttostr(ochki);//выводим на экран количество очков

  combobox1.Items.Clear;//очищаем список возможных ставок

  for i:=1 to ochki do

  begin

   combobox1.Items.Add(inttostr(i)); //заполняем список возможных ставок от 1 до количества очков

  end;

  combobox1.ItemIndex:=0;//задаём начальное положение элемента списка

 end;

{ label2.Caption:=’00’;                   //сброс значения кубиков и суммы кубиков

 image1.Picture.LoadFromFile(‘p0.bmp’);

 image2.Picture.LoadFromFile(‘p0.bmp’);}

 bitbtn1.Enabled:=false;//ставим положение кнопки броска на выключено

end;

procedure TForm1.N5Click(Sender: TObject);

begin

 showmessage(‘Автор курсовой работы Важенин Антон Александрович);// Справка

  

 end;

end.

2.4 Описание программы

Общие сведения:

Программа  «Form» написана на языке  ObjectPascal[2]ввизуальной оболочке программирования Delphi7. Для полноценного функционирования программы необходимо  наличие операционной системы Windows, либо компиляторы Delphi7.

Функциональные назначения:

Программа была разработана для проведения досуга программиста.

Описание логической структуры:

Логическая структура программы построена следующим образом: Играющий называет любое число в диапазоне от 2 до 12 и ставку, которую он делает в этот ход. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6 (“бросает кубик”, на гранях которого цифры от 1 до 6). Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка. Ставка проиграна, если не имеет место ни одна из описанных ситуаций. В начальный момент у играющего 100 очков.

Используемые технические средства:

Данная программа может нормально функционировать на компьютерах от 486DXдо PentiumIV  . Размещения модуля программы на жёстком дискеоколо 1,5 Mb.

        

2.5 Тестирование программы

Для разработки программы  «Form» использовалась  среда визуальногопрограммирования “Delphi”. Delphi-это средства разработки программ, ориентированных на работу в Windows. В основе идеологии  Delphi  лежит технология визуального  проектирования и  методология  объектно-ориентированного программирования.  Для представлений программ в  Delphi  используется  разработанный  Borlandязык ObjectPascal, в основе которого лежит  TurboPascal.

Для проверки программы  проводилось следующее испытание.

В соответствии с рисунком 3 видно, что программа  функционирует нормально, если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку.

Рисунок 3 – Вариант выпадения костей.

    продолжение
–PAGE_BREAK–