Автор: Пользователь скрыл имя, 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
Приложение 2
Задание на курсовую работу по дисциплине
«Алгоритмические языки и программирование»
Студент
группы
Направление: «Информатика», № контракта
Тема: Разработка приложения для Windows, представляющего собой компьютерную игру «Кости».
Условие задачи:
Разработать программу, моделирующую игру «Кости». Играющий называет любое число в диапазоне от 2 до 12 и ставку, которую он делает в этот ход. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6 («бросает кубик», на гранях которого цифры от 1 до 6). Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка. Ставка проиграна, если не имеет место ни одна из описанных ситуаций. В начальный момент у играющего 100 очков. В программе должно присутствовать графическое изображение поверхности кубика при каждом ходе игрока.
Задание выдано:
Стандарт ГОСТ 19.404-791 устанавливает основные требования к содержанию и оформлению программного документа «Пояснительная записка», входящего в состав документов на стадиях разработки эскизного и технического проектов программы.
Необходимо разработать учебную программу. Область применения: досуг программиста. Поскольку ставится задача разработать приложение для Windows, то использоваться программа может под управлением Windows 9x.
В условии задачи игры «Кости» указывается на необходимость использования датчика случайных чисел, с помощью которого программа дважды выбирает число от 1 до 6. Два случайно выбранных числа представляют собой выпавшие значения на гранях «брошенных» кубиках. Для хранения этих значений организуем массив, состоящий из двух элементов целого типа, который и будет представлять собой кубики. Также необходимо использовать переменную, которая содержит текущий кредит игрока (количество набранных очков). Какое количество очков поставил на ход игрок, а также, на какое число была сделана ставка, будет храниться в полях на форме игры. После выпадения случайных чисел значения элементов массива складываются и сравниваются с числом, на которое игрок сделал ставка. Далее произойдет увеличение или уменьшение кредита игрока, зависящее от условия игры.
В условии задачи игры также указывается на необходимость графического вывода поверхностей кубиков. Это реализуется таким образом. Все возможные поверхности кубика будут храниться в одной картинке последовательно (все грани кубика располагаются в ряд). Затем после заполнения массива, представляющего собой выпавшие значения кубиков, будут копироваться две грани кубиков из общей картинки. Координаты для копирования граней кубиков зависят от значений элементов массива. Формула для подсчета начала координат копирования грани кубика выглядит таким образом:
(ZnachKub – 1) * WidthKub , где
ZnachKub – случайно выпавшее значение первого кубика от 1 до 6;
WidthKub – ширина грани кубика.
Таким образом если ширина грани кубика будет равна 60 точек и картинка хранящая грани кубика тогда будет состоять из 6 возможных граней по 60 точек каждая – 360 точек (в программе используется такое значение), а случайно выбранное значение кубика будет равно 2, то скопируется область картинки с координатами: (60, 0, 120, 60) - (x, y, x + ширина, высота). Высота и ширина грани равна 60. Начало области копирования вычислили по представленной формуле: (2-1) * 60 = 60, т. е. вторая грань кубика на которой значение 2. Те же операции повторим и для второго кубика.
Для наглядности приложения и создания большего интереса к игре добавим два момента. Добавим таймер для нескольких ротаций кубиков, т. е. два случайных числа будут выбираться не за раз, а за несколько раз при этом каждый выбор будет отображаться графически. И добавим поддержку игрой нескольких игроков, т. е. в эту игру смогут играть несколько игроков, и их набранные очки будут сохраняться в файле. Для реализации этого нам понадобятся две файловых переменных (одна для чтения из файла, а вторая для перезаписи этого файла), строковая переменная в которую будут заноситься читаемые из фала данные, переменная, хранящая имя текущего игрока. Игроков можно создавать, удалять и выбирать для игры.
После того как сделана ставка, выбрано число, на которое игрок сделал ставку и нажата кнопка «Ход», включается таймер. Когда программа обрабатывает событие таймера, увеличивается счетчик, который фиксирует количество заходов программы в процедуру обработки этого события, при этом каждый раз выбираются два случайных числа, которые определяют картинки граней кубиков и осуществляется вывод этих граней. Если счетчик доходит до установленного значения максимума, то происходит окончательный выбор двух случайных чисел и определяется выигрыш игрока. Обобщенная блок-схема алгоритма хода представлена на рисунке 1.
Рис. 1 Блок-схема алгоритма хода игрока
При создании новых игроков, удалении их из общего списка, а также при выборе игрока и сохранении информации о текущем игроке происходит перезапись файла, хранящего эту информацию, следующим образом. Создается временный файл, в который будет записана старая и новая информация, затем созданный файл копируется в старый, тем самым как бы обновляя его, и временный файл удаляется. Такой алгоритм реализован в каждой процедуре изменяющей информацию об игроках. Блок-схема алгоритма представлена на рисунке 2.
Входными данными являются: информация о том, на какое число была сделана ставка, а также сумма, поставленная на это число. Входными данными также является информация о том, какой игрок выбран из списка игроков. Это влияет на установку текущего кредита и на значения, отображающие последнюю сделанную ставку в прошлой игре. Глобальные переменные, используемые в программе и описанные в Unit1, приведены в таблице 1. Глобальные переменные, используемые в программе и описанные в Unit2, приведены в таблице 2.
Структура файла хранящего информацию об игроках. Первая строка содержит количество записей об игроках хранящихся в файле. Затем идут последовательности записей, состоящие из 6 строк (полей): имя игрока, кредит игрока, последняя сделанная ставка, число, на которое была сделана последняя ставка и два последних выпавших значения кубиков.
Таблица 1
Переменная | Тип | Описание |
Kub | Массив целого типа, состоящий из двух элементов | Хранит случайно выпавшие числа для вывода граней кубиков |
Kredit | Длинное целое | Кредит игрока (набранное количество очков) |
Rotation | Целое | Количество заходов в процедуру таймера |
Таблица 2
Переменная | Тип | Описание |
FO | Текстовый файл | Файл для чтения |
FS | Текстовый файл | Файл для записи |
S | Строка | Хранит считываемые строки |
NameGamer | Строка | Имя текущего игрока |
KolGamer | Целое | Количество игроков |
i, j | Целое | Используются для создания циклов |
Делается
вывод о необходимости
Для
разработки приложения «Кости» используются
средства визуального программирования
Delphi. Проект программы содержит два окна:
FormGame – рисунок 3, FormNew – рисунок 4.
Рис. 3 Окно игры –
FormGame
Компонент FormGame – окно игры
Свойства:
Caption = 'Игра "Кости"'
Color = clWhite
События:
OnActivate = FormActivate – вызов окна выбора игрока
OnClose = FormClose – вызов процедуры записи игрока
1 - компонент Timer: Ttimer
Свойства:
Enabled = False
Interval = 200
События:
OnTimer = TimerTimer – выбор двух случайных чисел и подсчет выигрыша (ход игрока)
2- компонент ImageTable: Timage
Свойства:
Align = alClient
Событий нет.
3- компонент Panel1: Tpanel
Свойства:
BorderStyle = bsSingle
Color = clWhite
Событий нет.
4: компонент Label1: Tlabel
Свойства:
Caption = 'Кредит:'
Событий нет.
компонент 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