Автор работы: Пользователь скрыл имя, 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
СОВРЕМЕННАЯ ГУМАНИТАРНАЯ АКАДЕМИЯ
Филиал (представительство) Нижегородский
ПДО Кстовское
Задание на курсовую работу.
По дисциплине Программирование на языке высокого уровня
Студента Ненашева Александра Михайловича
№ контракта 0987654321123, группа ЗИ-809-03, направление “Информатика и вычислительная техника”
1.Тема:
“Разработать игру «Кости»”
2. Срок сдачи курсовой работы:
3. Краткое содержание работы:
4. Дата выдачи темы:
Задание выдано
Ф.и.о. ответственного лица, должность подпись
«___»_____________200__ г.
Содержание
Введение......................
Разработка эскизного и
1.1 Назначение
и область применения....................
1.2 Постановка
задачи........................
1.3 Описание
алгоритма.....................
1.4 Организация
входных и выходных данных........................
1.5 Выбор состава
технических и программных средств.......................
Разработка рабочего проекта.......................
2.1 Разработка
программы.....................
2.3 Спецификация программы.....................
2.4 Текст программы.....................
2.5 Тестирование
программы.....................
2.6 Внедрение.....................
2.6 Выводы........................
Глоссарий.....................
Литература....................
Приложения....................
Введение
Условие задачи:
Разработать
программу, моделирующую игру «Кости».
Играющий называет любое число в
диапазоне от 2 до 12 и ставку, которую
он делает в этот ход. Программа с
помощью датчика случайных
Сложно представить современного человека который не играл в компьютерные игры хотя бы раз. В современном мире находясь в офисе работник в свободное время иногда не знает чем занять себя и начинает раскладывать пасьянс и другие стандартные игры в ОС Windows. Для офисных работников важно чтобы игра была не слишком требовательна к системным ресурсам, т.к. зачастую офисная техника самая дешевая и рассчитана для офисных приложений. Поэтому целью своего проекта выбрал игру которой нужны минимальные системные требования.
Основной задачей данной игры является организация досуга пользователя. Актуальность данной игры помогает осознать и понять ненужность в использовании аналогичных денежных автоматов. Путем нехитрого записывания своих результатов можно ,впоследствии, представить экономию реальных средств.
Разработка эскизного и технического проектов программы
1.1 Назначение и область применения
Необходимо разработать игру. Игра предназначена для организации досуга. Поскольку ставится задача разработать приложение дляWindows1, то программа может работать только под управлением Windows.
1.2 Постановка задачи
В условии
задачи игры «Кости» указывается
на необходимость применять
1.3 Описание алгоритма
При выполнении
программы выполняются три
1.Генерация чисел
2.Вывод чисел на экран в виде сторон кубика
3.Подсчет очков
Генерация случайных чисел:
Вывод чисел на экран в виде сторон кубика:
Подсчет очков:
1.4 Организация входных и выходных данных
Входными данными являются: информация о том, на какое число была сделана ставка, а также сумма, поставленная на это число. Выходными данными являются вывод на экран графического числа в виде грани кубиков, а также состояние о выигрыше\проигрыше и общего состояния баланса игрока.
1.5 Выбор состава технических и программных средств
Для реализации данной программы был выбран язык программирования высокого уровня Delphi 62. Среда данного языка наиболее удобна для реализации и разработки программ для Windows.
Технические характеристики компьютера:
Pentium 2 и выше;
Объем оперативной памяти не менее 128 мб;
Жесткий диск не менее 2 гб;
Разработка рабочего проекта
2.1 Разработка программы
Для разработки
приложения игры «Кости» используется
среда визуального
Окно 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:=
2: image1.Picture.Bitmap.Handle:=
3: image1.Picture.Bitmap.Handle:=
4: image1.Picture.Bitmap.Handle:=
5: image1.Picture.Bitmap.Handle:=
6: image1.Picture.Bitmap.Handle:=
end;
case b of
1: image2.Picture.Bitmap.Handle:=
2: image2.Picture.Bitmap.Handle:=
3: image2.Picture.Bitmap.Handle:=
4: image2.Picture.Bitmap.Handle:=
5: image2.Picture.Bitmap.Handle:=
6: image2.Picture.Bitmap.Handle:=
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(
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(
label3.Caption:='Вы выиграли';
label4.Caption:=floattostr(
end;
if (a+b>7) and (strtoint(edit2.Text)>7) or (a+b<7) and (strtoint(edit2.Text)<7) then
begin
label2.Caption:=floattostr(
label3.Caption:='Вы выиграли';
label4.Caption:=floattostr(
end
else
begin
label2.Caption:=floattostr(
label3.Caption:='Вы выиграли';
label4.Caption:=floattostr(
end;
// Проверка состояния игрока
// Проигрышь
if strtoint(label2.Caption)=0 then
begin
showmessage('К вашему сожалению'+#13+'ВЫ ПРОИГРАЛИ!!!!!!!!');
bitbtn1.Enabled:=false;
image1.Picture.Bitmap.Handle:=
image2.Picture.Bitmap.Handle:=
n2.Enabled:=true;
end;
// Выигрышь
if strtoint(label2.Caption)>=1000 then
begin
showmessage('К нашему сожалению'+#13+'ВЫ ВЫИГРАЛИ!!!!!!!!');
bitbtn1.Enabled:=false;
image1.Picture.Bitmap.Handle:=
image2.Picture.Bitmap.Handle:=
n2.Enabled:=true;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// Это мы
загружаем начальные
image1.Picture.Bitmap.Handle:=
image2.Picture.Bitmap.Handle:=
n2.Enabled:=false;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
// Ставим
максимальную длину ставки
edit1.MaxLength:=length(
// Ограничиваем ввод только цифрами
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:='';