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

Основные данные о работе

Вид работы

Курсовая работа

Название дисциплины

Программирование на языке высокого уровня

Тема

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

 



Содержание



Введение	3

Основная часть	5

	1 Разработка эскизного и технического проектов программы (ГОСТ 19.404-79)	5

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

	3 Внедрение	22

Заключение	23

Глоссарий	25

Список использованных источников	26

Приложения	27



Введение

В связи с развитием информационно-коммуникационных технологий в последнее время резко возрос интерес к программированию. В данное время среди пользователей персональных компьютеров наиболее популярно семейство операционных систем Windows.

Несколько лет назад единственным средством разработки программ, работающих в среде Windows, был Borland C++ for Windows, ориентированный на профессионалов, обладающих серьезными знаниями и опытом.

Бурное развитие вычислительной техники? Потребность в эффективных средствах разработки программного обеспечения  привели к появлению систем программирования, ориентированных на “быструю разработку”, среди которых можно выделить Borland Delphi и Microsoft Visual Basic [6, с. 11]. В основе систем быстрой разработки лежит технология визуального проектирования и событийного программирования. 

Delphi – это среда быстрой разработки, в которой в качестве языка программирования используется строго типизированный объектно-ориентированный  язык Delphi, в основе которого лежит Object Pascal.

В настоящее время программистам стала доступна очередная версия пакета Delphi – Borland Delphi 7 Studio. Система Delphi позволяет писать как крохотные  программы и утилиты для персонального использования, так и корпоративные системы, работающие с базами данных на разных платформах, Интернет-решения и коммерческие игры, распределенный COM/CORBA/SOAP-приложения и всевозможные  Web-службы. При этом обеспечивается совместимость приложений при выходе новых версий Delphi – как друг с другом на уровне исходных текстров, так и с модифицированными версиями стандартных протоколов и технологий благодаря библиотеке независимых и легко настраиваемых компонентов[3, с. 15].

Цель: Разработать программу, моделирующую игру “Кости”. 

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



Основная часть

1 Разработка эскизного и технического проектов программы (ГОСТ 19.404-79)

 

1.1. Назначение и область применения



Область применения: досуг пользователя. Программа представляет собой модулятор игры «Кости», которая помогает пользователю оторваться от текущих дел и передохнуть, не отходя от персонального  компьютера. Программа проста в применении. Данная программа полноценно функционирует только под управлением Windows 9x/Me/NT/2000/XP.



1.2. Постановка задачи и разработка алгоритма решения задачи



Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка (рис.1. Приложение А).

Условие задачи игры «Кости» указывает на необходимость называть любое число в диапазоне от 2 до 12.  Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6. В соответствии с рисунком 1 представлено главное окно программы.



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



1.2.2 Описание алгоритма



В программе решаются такие задачи как:    

    1.Задаем сумму выпавших кубиков.

    2. Заполняем список ставок.

    3. Выбор граней кубиков с помощью датчика случайных чисел.   

    4.Ввывод на экран результата позиции.

Схему алгоритма программы смотрите в приложении А. 











1.2.3 Выбор состава технических и программных средств



Для разработки данной программы  использовалась интегральная среда разработки Delphi 7.Среда Delphi 7 позволяет  разрабатывать приложения для Windows. Технические характеристики компьютера Pentium 133 MHz, Ram 16 Mb, HDD 4.3 Gb. Именно эти параметры создают условия  для полноценной  работы  IDE Delphi 7 и программ созданных в этой среде. Дополнительные средства не требуются.



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 – компонент Form 1:

Свойства:

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 – компонент Label 5:

Свойства:

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

Font - Times New Roman, 14, clWindowText.

4 – компонент Label 7:

Свойства:

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

Font - Times New Roman, 14, clWindowText.

5 – компонент Label 3:

Свойства:

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

Font - Times New Roman, 14, clWindowText.

6 – компонент Label 4:

Свойства:

Caption – ‘00’;

Font - Times New Roman, 14, clWindowText.

7 – компонент Label 6:

Свойства:

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

Font - Times New Roman, 16, clRed.

8 – компонент Label 1:

Свойства:

Caption – ‘Сумма’;

Font - Times New Roman, 14, clWindowText.

9 – компонент Label 2:

Свойства:

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 – компонент Image 3:

Свойства:

Height – 321;

Width – 433;

15 – компонент BitBtn 1:

Свойства:

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<7) and (strtoint(combobox2.Items.Strings[combobox2.ItemIndex])<7) )//проверка на соответствие основному условию

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

    and ( i1+i2<>strtoint(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<=0 then //условие окончания игры

 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» написана на языке  Object Pascal в визуальной оболочке программирования Delphi 7. Для полноценного функционирования программы необходимо  наличие операционной системы Windows, либо компиляторы Delphi 7.

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

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

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

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

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

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

	

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



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

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

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





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





3 Внедрение



Условия выполнения программы:

Минимальные требования: компьютер Pentium 166, 128 Mb оперативной памяти, 800 Кбайт свободного пространства на жестком диске, операционная система Windows 9x/NT/Me/2000/Xp, Windows совместимая мышь. Наличие интегрированной среды разработки приложений Borland Delphi необязательно.

Выполнение программы:

Для выполнения программы, необходимо зайти в каталог, в котором расположена программа и, запустить на выполнение файл Project1.exe (Приложение В). Завершить работу с программой можно, нажав кнопку «Выход» основной формы.

Сообщения оператору:

1. Предупреждение о проигрыше ставки;

2. Предупреждение о выигрыше ставки;

3. Автор курсовой работы Важенин Антон Александрович;

Заключение

Игры всегда были классом программ, мгновенно реагирующим на все новшества рынка. Так было и с Internet - массовая истерия по поводу Сети еще только набирала силу, а уже открывались первые игровые сервера  для желающих. Возможности Internet по сравнению с классической локальной сетью неоспоримо выше: по первой обычно играют 3-5 человек, максимум 8-10. К тому же этим людям надо всем собраться вместе, подгадать время... В Сети  же оппонентов искать не нужно - они всегда есть, и в избытке, кроме того, среднее количество одновременно играющих колеблется около 50-100 человек (Diablo, сервера battle.net). Если учесть, что интересность multiplayer-режима прямо пропорциональна количеству противников, то преимущество Internet становится очевидным. Кроме того, вступают в дело такие факторы, как неизвестные противники, что всегда разжигает любопытство, плюс желание "утереть буржуям нос" и т.п.

Перспективы игр в Интернет настолько высоко оцениваются на Западе, что  уже выпущен ряд продуктов, ориентированных  только  на Сеть. То есть,  в соло или классическом сетевом варианте они просто не поддерживаются в  принципе (Iron Wolves, Meridian 87, Ultima Online). К сожалению, в  Казахстане вряд ли можно рассчитывать на продажу on-line проекта, хотя  бы из-за, мягко говоря, недостаточно широкого распространения сетевых услуг и отсутствия традиции платить настоящую цену за игровой софт вообще.  Единственный вариант - продать разработку на Запад, благо в Москве уже действуют фирмы, занимающиеся скупкой проектов на стадии сценариев или  даже просто сырых идей. Непатриотично, хотя и вполне реально.

В последнее время сложилась хорошая традиция по мере приближения проекта  к завершению распространять его демо-версию и испрашивать у игровой общественности всяческих советов на тему его улучшения. Для этого потребуется  наличие собственной странички на WEB-сервере, e-mail адреса, а  аппаратно - модема со скоростью передачи данных не менее 14400 бод. Также немаловажно создавать ажиотаж вокруг игры еще задолго до ее выхода, периодически запуская многообещающие обзоры в Сеть и специальную литературу для игроков. Не исключено, что многие купят вышедший релиз просто по инерции, под впечатлением от публикаций.

Глоссарий

№ п/п

Понятие

Определение

1

TDXImageList

Позволяет хранить серии DIB, Jpg, bmp-файлов, что очень удобно для программ, содержащих спрайты. Позволяет загружать DIB`ы с диска во время выполнения программы. 

2

TDXPlay

Компонент позволяющий обмениваться информацией на компьютерах. 

3

char

тип данных характеризующий символ

4

ShortString

строка, количество символов в которой составляет 255

5

AnsiString

строка, количество символов в которой составляет ~231

6

WideString

строка, количество символов в которой составляет ~231

7

Компонент

Функциональный элемент, имеющий  определённые свойства и размещаемый программистом в  окне формы.

8

Проект

Совокупность файлов, обеспечивающих  разработку  приложения  Delphi

9

Свойство

Специальный механизм классов регулирующий доступ к полям

10

Событие

Свойство процедурного типа предназначено для  создания  пользовательской  реакции на то или иное  входное воздействие

Список использованных источников

1

Архангельский, А.Я. 100 компонентов общего назначения библиотеки Delphi5 [электронный ресурс], 2005.

2

Архангельский, А.Я. Программирование в Delphi 7 – Москва, Издательство «БИНОМ»., 2004.

3

Бобровский С. Delphi 7 учебный курс. СПб.: Питер, 2004. – 736 с.

4

Бобровский, Сергей. Delphi 6: библиотека программиста. СПб.: Издательство «Питер», 2005

5

Дарахвелидзе, П., Марков Е. Программирование в Delphi 4. СПб.: БХВ. СПб.,2005.

6

Культин Н. Основы программирования в Delphi 7. СПб.: БХВ-СПб., 2003 – 608 с.

7

Немнюгин, С.А. Turbo Pascal – СПб.: Питер, 2004

8

Сван, Том. Delphi 4. Библия разработчика. – Киев - М., СПб.: Издательство «Диалектика», 2006.

9

Ульман, Дж., Уидом, Дж. Введение в системы баз данных. – М.: Лори, 2004 – 458с.

10

Фаронов, В.В. Delphi 6.0. – М.: Издательство «Нолидж», 2001.

11

Федоров, А.Г. Delphi 3.0. для всех – М.: Компьютер Пресс, 2007.

12

Хомоненко, А. Базы данных. 2-е изд. – СПб., 2004. – 264 с.



Приложения

А



Б



В









2