Разработка приложения для Windows, представляющего собой компьютерную игру «Кости»

Автор: Пользователь скрыл имя, 05 Декабря 2011 в 21:59, дипломная работа

Краткое описание

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

Оглавление

ВВЕДЕНИЕ
ОСНОВНАЯ ЧАСТЬ
1 РАЗРАБОТКА ЭСКИЗНОГО И ТЕХНИЧЕСКОГО ПРОЕКТОВ ПРОГРАММЫ
1.1.Назначение и область применения
1.2.Технические характеристики
1.2.1. Постановка задачи
1.2.2. Описание алгоритма
1.2.3. Организация входных и выходных данных
1.2.4. Выбор состава технических и программных средств
2 РАЗРАБОТКА РАБОЧЕГО ПРОЕКТА
2.1 Разработка рабочего проекта
2.2 Написание программы
2.3 Текст программы
2.4 Тестирование программы
ЗАКЛЮЧЕНИЕ
ГЛОССАРИЙ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЯ

Файлы: 1 файл

Разработка приложения для Windows, представляющего собой компьютерную игру «Кости».doc

— 207.50 Кб (Скачать)

     компонент Label2: Tlabel

     Свойства:

     Caption = 'Ставка:'

     Событий нет.

     компонент Label3: Tlabel

     Свойства:

     Caption = 'Число:'

     Событий нет.

     5 - компонент ImageKubik: Timage

     Свойства:

     AutoSize = True

     Visible = False

     Событий нет.

     6 - компонент StatusBar: TstatusBar

     Свойства:

     Color = clWhite

     Panels = <

     item

     Alignment = taCenter

     Width = 125

     item

     Alignment = taCenter

     Text = 'Выпало:'

     item

     Alignment = taCenter

     Text = 'Выигрыш:'

     end>

     SimplePanel = False

     Событий нет.

     7 - компонент LKredit: Tlabel

     Свойства:

     Alignment = taCenter

     AutoSize = False

     Caption = '100'

     Событий нет.

     8 - компонент BGamer: Tbutton

     Свойства:

     Caption = 'Игрок'

     Событий:

     OnClick = BgamerClick – выбор игрока

     9 - компонент SEStavka: TspinEdit

     Свойства:

     EditorEnabled = False

     MaxValue = 100

     MinValue = 1

     Value = 1

     Событий нет.

     10 - компонент BHod: Tbutton

     Свойства:

     Caption = 'Ход'

     События:

     OnClick = BhodClick – сделать ход

     11 - компонент SEChislo: TspinEdit

     Свойства:

     EditorEnabled = False

     MaxValue = 12

     MinValue = 2

     Value = 7

     Событий нет.

     12 - компонент BExit: Tbutton

     Свойства:

     Caption = 'Выход'

     Собития:

     OnClick = BexitClick – выход из игры

     13 - компонент GroupBox1: TgroupBox

     Событий нет.

     

     Рис. 4 Окно выбора игрока

     Компонент FormNew –окно выбора игрока

     Свойства:

     BorderStyle = bsDialog

     Caption = 'Выбор игрока'

     Position = poMainFormCenter

     События:

     OnCreate = FormCreate –заполнение списка именами игроков

     1 - компонент GroupBox1: TGroupBox   

     Свойства:

     Align = alClient

     2 - компонент ListBox: TlistBox

     3 – компонент BNew: TButton

     Свойства:

     Caption = 'Новый'

     События:

     OnClick = BnewClick – создание нового игрока

     4 – компонент BDel: Tbutton

     Свойства:

     Caption = 'Удалить'

     События:

     OnClick = BdelClick – удаление выбранного  игрока

     5 - компонент BOK: TButton

     Свойства:

     Caption = 'Выбрать'

     События:

     OnClick = BOKClick – выбрать игрока.

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

     Программную реализацию разработанных алгоритмов содержат обработчики событий. Все по порядку.

     При создании главной формы игры – FormGame обрабатывается собы-тие FormActivate. В ней  вызывается второе окно, выбор игрока – FormNew. При создании формы второго  окна обрабатывается событие FormCreate. В этой процедуре происходит заполнение списка именами игроков. Сначала очищается список, затем открывается файл, хранящий информацию об игро-ках. На этом этапе происходит проверка на возможность возникновения ошибки, при этом используется структура: try … except … end;. Ошибка может возникнуть при отсутствии файла с записями на диске. Если такая критическая ситуация возникнет то файл будет создан и в него запишется ‘0’, который будет означать количество записей об игроках в файле. После организован цикл считывания из файла и добавление имен игроков в список. В конце файл закрывается.

     При закрытии формы FormGame обрабатывается событие FormClose, в котором происходит вызов  процедуры перезаписи информации об игроках. Это нужно для того, чтобы  сохранить измененную информацию о текущем игроке. При нажатии кнопки Bexit, возникает событие BexitClick, в котором происходит вызов процедуры FormClose.

     Если  будет нажата кнопка BGamer, то выполнится обработчик события этого нажатия  – BGamerClick. В нем происходит вызов  процедуры пе-резаписи информации об игроках и вызывает в модальном режиме окно вы-бора игрока.

     Когда игрок сделает ставку и выберет  число, на которое он поставил, то следует  нажать на кнопку BHod. При этом будет  обработано событие BhodClick. В процедуре  включается таймер для «бросков» кубиков и в стро-ку состояния выводится сообщение «Бросаю кубики».

     Когда таймер включен. то через какой-то промежуток времени обрабатывается событие TimerTimer. В этом обработчике реализована  вся главная часть программы. Сначала присваивается двум элементам массива значения от 1 до 6, затем происходит вывод картинок граней кубиков. Увеличивается значение переменной, хранящей количество вызовов процедуры TimerTimer. Если это значение равно 6, то таймер выключается, выводится строку состояния информация о выпавших числах кубиков и подсчитывается выигрыш игрока по заданному условию. Затем выигрыш либо прибавляется, либо отнимается от кредита игрока. Далее проверяется, если кредит игрока равен 0, то выводится сообщение о проигрыше, игрок удаляется и вызывается окно выбора игрока. Если кредит игрока больше 0, то определяются возможная максимальная ставка игрока и игра продолжается.

     Все обработчики событий, возникающие  в пределах окна выбора игро-ка, работают с файлами. Обобщенная блок-схема алгоритма работы с файлами приведена на рисунке 2.

     Для создания нового игрока следует нажать на кнопку BNew. При этом будет обработано событие BNewClick. В этой процедуре открываются  два файла: один для чтения, другой – временный файл, для записи. Из первого файла перезаписывается вся информация об уже существующих игроках во временный файл и добавляется имя нового игрока, а также начальные значения кредита и всего остального. После этого файлы закрываются, временный файл копируется в старый и удаляется, имя игрока добавляется в общий список и становится доступным для выбора.

     В процедуре SaveGamer происходит перезапись старой информации об игроках и запись, о текущем игроке. Почти ничем  эта процедура не отли-чается от вышеупомянутой, только вместо начальных значений (кредита и т. д.) в файл записываются текущие (набранные в ходе игры).

     Когда игрок выбран из списка и нажата кнопка BOK, происходит обра-ботчик события  нажатия – BOKClick. В этой процедуре  в файле переби-раются все игроки пока очередь дойдет до выбранного из списка. Затем чи-таются поля этого игрока и объектам формы окна игры присваиваются значения, записанные в файле (кредит, максимальная ставка и т. д.). После файл закрывается.

     Процедура удаления игрока – BDelClick. Блок-схема  алгоритма удале-ния игрока приведена на рисунке 5.

     

     Рис. 5 Блок-схема алгоритма удаления игрока из общего списка

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

     Текст программы для формы – FormGame:

     unit Unit1;

     interface

     uses

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

       StdCtrls, ExtCtrls, Spin, ComCtrls;

     type

       TFormGame = class(TForm)

         ImageKubik: TImage;

         GroupBox1: TGroupBox;

         Label1: TLabel;

         Label2: TLabel;

         Label3: TLabel;

         BHod: TButton;  //Кнопка хода

         BExit: TButton; //Выход из игры

         Panel1: TPanel;

         ImageTable: TImage;

         SEStavka: TSpinEdit;

         SEChislo: TSpinEdit;

         LKredit: TLabel;

         StatusBar: TStatusBar;

         Timer: TTimer;

         BGamer: TButton;  //Кнопка выбора игрока

         procedure BExitClick(Sender: TObject);

         procedure BHodClick(Sender: TObject);

         procedure TimerTimer(Sender: TObject);

         procedure FormActivate(Sender: TObject);

         procedure FormClose(Sender: TObject; var Action: TCloseAction);

         procedure BGamerClick(Sender: TObject);

       private

         { Private declarations }

       public

         { Public declarations }

       end;

     var

       FormGame: TFormGame;

       Rotation:integer = 0;   //Количество заходов в процедуру таймера

       Kredit:longint;         //Текущий  кредит игрока

       Kub:array [1..2] of integer;  //Выпавшие значения  кубиков

     implementation

     uses Unit2;

     {$R *.DFM}

     //-------------------------------------------------------

     //Выход из игры

     //-------------------------------------------------------

     procedure TFormGame.BExitClick(Sender: TObject);

     begin

     Close;   //Закрытие окна

     end;

     //-------------------------------------------------------

     //Ход игрока (бросить кубики)

     //-------------------------------------------------------

     procedure TFormGame.BHodClick(Sender: TObject);

     begin

     Timer.Enabled:=True; //Включение таймера

     StatusBar.Panels[0].Text:='Бросаю кости!';

Информация о работе Разработка приложения для Windows, представляющего собой компьютерную игру «Кости»