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

Автор: Пользователь скрыл имя, 13 Декабря 2011 в 15:37, курсовая работа

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

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

Оглавление

Введение 4
Глава 1. Разработка эскизного и технического проектов программы 5
1.1. Назначение и область применения 5
1.2. Технические характеристики 5
1.2.1. Постановка задачи 5
1.2.2. Описание алгоритма 7
1.2.3. Организация входных и выходных данных 9
1.2.4. Выбор состава технических и программных средств 10
Глава 2. Разработка рабочего проекта 11
2.1. Разработка программы 11
2.2. Написание программы 14
2.3. Спецификация программы 17
2.4. Текст программы 18
2.5. Тестирование программы 24
Глава 3. Внедрение 25
3.1. Условия выполнения программы 25
3.2. Выполнение программы 25
3.3. Сообщение оператору 25
Заключение 27
Список литературы 28
Приложение 1
Приложение 2

Файлы: 1 файл

Курсач по костям.doc

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

                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 – выбрать игрока.

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

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

     При создании главной формы игры –  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 Блок-схема алгоритма удаления игрока из общего списка

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

      Исполняемый файл программы «Кости» имеет  название Kosti.EXE. Его работоспособность не зависит от расположения на диске. Наименования файлов входящих в проект и краткая информация об их содержании отображены в таблице 3.   
 

Таблица 3

Наименование Обозначение Примечание
Kosti.dof Файл параметров проекта Содержит текущие  установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы
Kosti.dpr Файл проекта Связывает все  файлы, из которых состоит приложение
Kosti.cfg Файл, содержащий настройки проекта Содержит информацию о том, какие окна открыты и в каких позициях они расположены.
Kosti.res Файл ресурсов Содержит пиктограммы, графические изображения
Unit1.pas Файл программного модуля для формы FormGame Определяет  функциональность формы FormGame
Unit1.dfm Файл формы  FormGame Содержит список свойств всех компонентов, включённых в форму FormGame
Unit1.dcu Объектный файл для Unit1.pas Откомпилированная версия Unit1.pas
Unit2.pas Файл программного модуля для формы FormNew Определяет  функциональность формы FormNew
Unit2.dfm Файл формы 

FormNew

Содержит список свойств всех компонентов, включённых в форму FormNew
Unit2.dcu Объектный файл для Unit2.pas Откомпилированная версия Unit2.pas

 

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

     Текст программы для формы – 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;

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

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

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