Разработка игры «Кости» на Delphi

Автор работы: Пользователь скрыл имя, 15 Декабря 2012 в 07:49, курсовая работа

Описание работы

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

Содержание работы

Введение.....................................................................................................................3
Разработка эскизного и технического проектов программы................................4
1.1 Назначение и область применения....................................................................4
1.2 Постановка задачи...............................................................................................4
1.3 Описание алгоритма............................................................................................4
1.4 Организация входных и выходных данных......................................................6
1.5 Выбор состава технических и программных средств......................................6
Разработка рабочего проекта...................................................................................7
2.1 Разработка программы........................................................................................7
2.3 Спецификация программы...............................................................................10
2.4 Текст программы...............................................................................................12
2.5 Тестирование программы.................................................................................24
2.6 Внедрение...........................................................................................................25
2.6 Выводы...............................................................................................................25
Глоссарий.................................................................................................................26
Литература...............................................................................................................30
Приложения.............................................................................................................32

Файлы: 1 файл

Разработать игру Кости.docx

— 143.15 Кб (Скачать файл)

СОВРЕМЕННАЯ ГУМАНИТАРНАЯ АКАДЕМИЯ

 

 

Филиал (представительство) Нижегородский

 

ПДО Кстовское

 

 

 

 

 

 

Задание на курсовую работу.

 

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

 

 

Студента  Ненашева Александра Михайловича       

 

№ контракта  0987654321123, группа ЗИ-809-03, направление “Информатика и    вычислительная техника”  

 

 

 

1.Тема:         “Разработать игру «Кости»”                                       

                 

2. Срок сдачи курсовой работы:          

3. Краткое содержание работы:                                                                                              

4. Дата выдачи темы:           

 

 

 

 

Задание выдано             

Ф.и.о. ответственного лица, должность     подпись

 

 

 

 

 

 

«___»_____________200__ г.

Содержание

Введение.....................................................................................................................3

Разработка эскизного и технического проектов программы................................4

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

1.2 Постановка задачи...............................................................................................4

1.3 Описание алгоритма............................................................................................4

1.4 Организация входных и выходных данных......................................................6

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

 Разработка рабочего проекта...................................................................................7

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

2.3 Спецификация программы...............................................................................10

2.4 Текст программы...............................................................................................12

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

2.6 Внедрение...........................................................................................................25

2.6 Выводы...............................................................................................................25

Глоссарий.................................................................................................................26

Литература...............................................................................................................30

Приложения.............................................................................................................32

 

Введение

Условие задачи:

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

Сложно  представить современного человека который не играл в компьютерные игры хотя бы раз. В современном мире находясь в офисе работник в свободное время иногда не знает чем занять себя и начинает раскладывать пасьянс и другие стандартные игры в ОС Windows. Для офисных работников важно чтобы игра была не слишком требовательна к системным ресурсам, т.к. зачастую офисная техника самая дешевая и рассчитана для офисных приложений. Поэтому целью своего проекта выбрал игру которой нужны минимальные системные требования.

Основной  задачей данной игры является организация  досуга пользователя. Актуальность данной игры помогает осознать и понять ненужность в использовании аналогичных  денежных автоматов. Путем нехитрого  записывания своих результатов можно ,впоследствии, представить экономию реальных средств.

 

Разработка  эскизного и технического проектов программы

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

Необходимо  разработать игру. Игра предназначена  для организации досуга. Поскольку  ставится задача разработать приложение дляWindows1, то программа может работать только под управлением Windows.

1.2 Постановка задачи

В условии  задачи игры «Кости» указывается  на необходимость применять генератор  случайных чисел(генерирует произвольное число), который в данном случае будет выдавать число в интервале от [0,1]. Также необходимо использовать переменную, которая содержит текущий кредит игрока (количество набранных очков). Какое количество очков поставил на ход игрок, а также, на какое число была сделана ставка, будет храниться в полях на форме игры.

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

При выполнении программы выполняются три алгоритма:

1.Генерация чисел

2.Вывод чисел на экран в виде сторон кубика

3.Подсчет очков

Генерация случайных чисел:

Вывод чисел  на экран в виде сторон кубика:

Подсчет очков:

 

 

1.4 Организация входных и выходных данных

Входными  данными являются: информация о том, на какое число была сделана ставка, а также сумма, поставленная на это  число. Выходными данными являются вывод на экран графического числа в виде грани кубиков, а также состояние о выигрыше\проигрыше и общего состояния баланса игрока.

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

Для реализации данной программы был выбран язык программирования высокого уровня Delphi 62. Среда данного языка наиболее удобна для реализации и разработки программ для Windows.

Технические характеристики компьютера:

Pentium 2 и выше;

Объем оперативной  памяти не менее 128 мб;

Жесткий диск не менее 2 гб;

 

 

 

 

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

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

Для разработки приложения игры «Кости» используется среда визуального программирования Delphi. Проект программы содержит одно окно:

Окно form 1:

Компонент form1.

Свойства:

Caption-игра «Кости»;

Border-BsSingle;

Name-form1;

Biminimaze-false;

Bimaximize-false;

 

компонент Label5.

Свойства:

Caption-«ставка»

 

компонент Label2.

Свойства:

Caption-«100»

 

компонент edit1.

Поле для  ввода вашей ставки.

 

компонент edit2.

Поле для  ввода загадываемого числа.

 

компонент Label3.

Свойства:

Caption-«Вы выиграли», со временем изменяется.

 

компонент BitBtn1.

Свойства:

Caption-«Бросить».

Kind- bkOK.

События:

Onclick- «BitBtn1Click»-генерация случ. чисел, подсчет очков и выдача результатов.

 

Компонент Image1.

Свойства:

Hint- «Первое выпавшее число»

 

компонент image2.

Свойства:

Hint- «Второе выпавшее число»

 

Компонент Label1

Caption- «Ваш банк».

 

Компонент Label4

Caption- «0».

2.2 Написание  программы

Обработчик  Bitbtn1Click:

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

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

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

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

Обозначение

Примечание

Kosti.dof

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

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

Kosti.dpr

Файл проекта

Связывает все файлы, из которых состоит приложение

Kosti.cfg

Файл, содержащий настройки проекта

Содержит информацию о том, какие  окна открыты и в каких позициях они расположены.

Project1.res

Файл ресурсов

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

Unit1.pas

Файл программного модуля для формы FormGame

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

Unit1.dfm

Файл формы FormGame

Содержит список свойств всех компонентов, включённых в форму FormGame

Unit1.dcu

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

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


 

 

 

 

 

 

2.4 Текст программы

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Graphics, Forms, StdCtrls,

  Dialogs, Menus, Buttons, ExtCtrls, Classes, Controls;

 

type

  TForm1 = class(TForm)

    Edit1: TEdit;

    Edit2: TEdit;

    Image1: TImage;

    Image2: TImage;

    BitBtn1: TBitBtn;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    N3: TMenuItem;

    Timer1: TTimer;

    Timer2: TTimer;

    procedure N1Click(Sender: TObject);

    procedure N3Click(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    procedure BitBtn1Click(Sender: TObject);

    procedure podschet();

    procedure FormCreate(Sender: TObject);

    procedure Edit1KeyPress(Sender: TObject; var Key: Char);

    procedure Edit2KeyPress(Sender: TObject; var Key: Char);

    procedure Timer2Timer(Sender: TObject);

    procedure N2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

  a,b:integer;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.N1Click(Sender: TObject);

begin

close;

end;

 

procedure TForm1.N3Click(Sender: TObject);

begin

                    Showmessage('Программу выполнил:'+#13+#13+'Новожилов Александр');

end;

 

// здесь  мы делаем перебор костей

procedure TForm1.Timer1Timer(Sender: TObject);

var

i:integer;

begin

i:=timer1.Interval;

i:=i+10;

timer1.Interval:=i;

randomize;

a:=round(random(5)+1);

b:=round(random(5)+1);

// Это загрузка  изображения чисел которые нам генерируются

 case a of

  1: image1.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC1');

  2: image1.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC2');

  3: image1.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC3');

  4: image1.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC4');

  5: image1.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC5');

  6: image1.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC6');

 end;

 case b of

  1: image2.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC1');

  2: image2.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC2');

  3: image2.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC3');

  4: image2.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC4');

  5: image2.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC5');

  6: image2.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC6');

 end;

// А это  конечные условия перебора костей

 if i>=300 then

 begin

  timer1.Interval:=10;

  podschet;

 end;

end;

 

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

// Если ничего не введено

if (edit1.Text='') and (edit2.Text='') then

 begin

  showmessage('Введите ставку и число');

  edit1.SetFocus;

  exit;

 end;

// Если  не введена ставка

if edit1.Text='' then

 begin

  showmessage('Введите ставку');

  edit1.SetFocus;

  exit;

 end;

// Если  не введено число

if edit2.Text='' then

 begin

  showmessage('Введите число');

  edit2.SetFocus;

  exit;

 end;

// Если  введенное число меньше 2 или больше 12

if (strtoint(edit2.Text)<2) or (strtoint(edit2.Text)>12) then

 begin

  showmessage('Число должно быть в'+#13+'пределах от 2 до 12');

  edit2.Text:='';

  edit2.SetFocus;

  exit;

 end;

// Если  ставка больше банка

if strtoint(edit1.Text)>strtoint(label2.Caption) then

 begin

  showmessage('Вы не можете поставить'+#13+'больше чем у вас есть');

  edit1.Text:='';

  edit1.SetFocus;

  exit;

 end;

// Если  ставка меньше 1

if strtoint(edit1.Text)<1 then

 begin

  showmessage('Вы не можете поставить'+#13+'ставку меньше 1');

  edit1.Text:='';

  edit1.SetFocus;

  exit;

 end;

// Если  все в порядке идем дальше

if (edit1.text<>'') and (edit2.Text<>'') then timer1.Enabled:=true;

 

end;

 

procedure tform1.podschet();

begin

// выключаем перебор костей

timer1.Enabled:=false;

// описываем  игровые ситуации

if a+b=strtoint(edit2.Text) then

 begin

  label2.Caption:=floattostr(strtoint(label2.Caption)+strtoint(edit1.Text)*4);

  label3.Caption:='Вы выиграли';

  label4.Caption:=floattostr(strtoint(edit1.Text)*4);

 end;

if (a+b>7) and (strtoint(edit2.Text)>7) or (a+b<7) and (strtoint(edit2.Text)<7) then

 begin

  label2.Caption:=floattostr(strtoint(label2.Caption)+strtoint(edit1.Text));

  label3.Caption:='Вы выиграли';

  label4.Caption:=floattostr(strtoint(edit1.Text));

 end

else

  begin

   label2.Caption:=floattostr(strtoint(label2.Caption)-strtoint(edit1.Text));

   label3.Caption:='Вы выиграли';

   label4.Caption:=floattostr(strtoint(edit1.Text));

  end;

// Проверка состояния игрока

// Проигрышь

if strtoint(label2.Caption)=0 then

 begin

  showmessage('К вашему сожалению'+#13+'ВЫ ПРОИГРАЛИ!!!!!!!!');

  bitbtn1.Enabled:=false;

  image1.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC1');

  image2.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC1');

  n2.Enabled:=true;

 end;

// Выигрышь

if strtoint(label2.Caption)>=1000 then

 begin

  showmessage('К нашему сожалению'+#13+'ВЫ ВЫИГРАЛИ!!!!!!!!');

  bitbtn1.Enabled:=false;

  image1.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC1');

  image2.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC1');

  n2.Enabled:=true;

 end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

// Это мы  загружаем начальные изображения

image1.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC1');

image2.Picture.Bitmap.Handle:=LoadBitmap(HInstance,'PIC1');

n2.Enabled:=false;

end;

 

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

// Ставим  максимальную длину ставки равную  максимальной дине банка

edit1.MaxLength:=length(label2.Caption);

// Ограничиваем  ввод только цифрами

 case key of

  '0'..'9',#8:

 else

  key:=chr(0);

 end;

end;

 

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

// Ограничиваем  максимальную длину числа

edit2.MaxLength:=2;

// Также  ограничиваемся только цифрами

 case key of

  '0'..'9',#8:

 else

  key:=chr(0);

 end;

end;

 

// Если  не все введено то мы и не сможем нажать на кнопочку

procedure TForm1.Timer2Timer(Sender: TObject);

begin

if (edit1.Text<>'') and (edit2.Text<>'') then

  bitbtn1.Enabled:=true

else

  bitbtn1.Enabled:=false;

 

end;

 

procedure TForm1.N2Click(Sender: TObject);

begin

edit1.Text:='';

edit2.Text:='';

Информация о работе Разработка игры «Кости» на Delphi