Вид работы | Курсовая работа |
Название дисциплины | Программирование на языке высокого уровня |
Тема | Разработайте программу, моделирующую игру «Кости» |
Содержание
Введение. 3
Основная часть. 5
1 Разработка эскизного и технического проектов программы (ГОСТ 19.404-79)5
2 Разработка рабочего проекта. 8
3 Внедрение. 22
Заключение. 23
Глоссарий. 25
Список использованных источников. 26
Приложения. 27
Введение
В связи с развитием информационно-коммуникационных технологий в последнее время резко возрос интерес к программированию. В данное время среди пользователей персональных компьютеров наиболее популярно семейство операционных систем Windows.
Несколько лет назад единственным средством разработки программ, работающих в среде Windows, был BorlandC++ forWindows, ориентированный на профессионалов, обладающих серьезными знаниями и опытом.
Бурное развитие вычислительной техники? Потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на “быструю разработку”, среди которых можно выделить BorlandDelphi и MicrosoftVisualBasic[6, с. 11]. В основе систем быстрой разработки лежит технология визуального проектирования и событийного программирования.
Delphi – это среда быстрой разработки, в которой в качестве языка программирования используется строго типизированный объектно-ориентированный язык Delphi, в основе которого лежит Object Pascal.
В настоящее время программистам стала доступна очередная версия пакета Delphi – Borland Delphi 7 Studio. Система Delphiпозволяет писать как крохотные программы и утилиты для персонального использования, так и корпоративные системы, работающие с базами данных на разных платформах, Интернет-решения и коммерческие игры, распределенный COM/CORBA/SOAP-приложения и всевозможные Web-службы. При этом обеспечивается совместимость приложений при выходе новых версий Delphi– как друг с другом на уровне исходных текстров, так и с модифицированными версиями стандартных протоколов и технологий благодаря библиотеке независимых и легко настраиваемых компонентов[3, с. 15].
Цель: Разработать программу, моделирующую игру “Кости”.
Смысл игры состоит в следующем. Играющий называет любое число в диапазоне от 2 до 12 и ставку, которую он делает в этот ход. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6 (“бросает кубик”, на гранях которого цифры от 1 до 6). Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка. Ставка проиграна, если не имеет место ни одна из описанных ситуаций. В начальный момент у играющего 100 очков. В программе должно присутствовать графическое изображение поверхности кубика при каждом ходе игрока.
Основная часть
1
Разработка эскизного и технического проектов программы (ГОСТ 19.404-79)
1.1. Назначение и область применения
Область применения: досуг пользователя. Программа представляет собой модулятор игры «Кости», которая помогает пользователю оторваться от текущих дел и передохнуть, не отходя от персонального компьютера. Программа проста в применении. Данная программа полноценно функционирует только под управлением Windows 9x/Me/NT/2000/XP.
1.2. Постановка задачи и разработка алгоритма решения задачи
Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка (рис.1. Приложение А).
Условие задачи игры «Кости» указывает на необходимость называть любое число в диапазоне от 2 до 12. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6. В соответствии с рисунком 1 представлено главное окно программы.
Рисунок 1. Главное окно программы.
1.2.2 Описание алгоритма
В программе решаются такие задачи как:
1.Задаем сумму выпавших кубиков.
2. Заполняем список ставок.
3. Выбор граней кубиков с помощью датчика случайных чисел.
4.Ввывод на экран результата позиции.
Схему алгоритма программы смотрите в приложении А.
1.2.3 Выбор состава технических и программных средств
Для разработки данной программы использовалась интегральная среда разработки Delphi 7[1]
.Среда Delphi 7 позволяет разрабатывать приложения для Windows. Технические характеристики компьютера Pentium 133 MHz, Ram 16 Mb, HDD 4.3 Gb. Именно эти параметры создают условия для полноценной работы IDEDelphi 7 и программ созданных в этой среде. Дополнительные средства не требуются.
2
Разработка рабочегопроекта
2.1 Разработка программы
Для разработки приложения используется среда визуального программирования Delphi. В написание программы использовались компоненты из разделов Standard, Additional. Проект программы содержит одно окно Form1. В соответствии с рисунком 2 представлено главное окно программы.
Рисунок 2 - Главноеокнопрограммы.
1 – Form 1, 2 – MainMenu 1, 3 – Label 5, 4 – Label 7, 5 – Label 3, 6 – Label 4, 7 – Label 6, 8 – Label 1, 9 – Label 2, 10 – ComboBox 2, 11 – ComboBox 1, 12 – Image 1, 13 – Image 2, 14 – Image 3, 15 – BitBtn 1.
1
– компонент
Form1:
Свойства:
Caption – Кости;
Border – bsSingle;
BiSystemMenu – False;
BiMinimaze – False;
BiMaximaze – False;
BiHelp – False;
Height – 374;
Width – 441.
2- компонентTMainMenu 1:
Свойства:
Items:
Файл (N1)
Новая игра (N2) Выход (N3)
События:
Для N1 - событие TMainMenu;
N3Click – закончить работу с приложением;
N2Click – перейти к работе с приложением;
3 – компонент Label5:
Свойства:
Caption – ‘Ваше число’;
Font - Times New Roman, 14, clWindowText.
4 – компонент Label7:
Свойства:
Caption – ‘Ваша ставка’;
Font - Times New Roman, 14, clWindowText.
5 – компонент Label 3:
Свойства:
Caption – ‘Ваши очки’;
Font - Times New Roman, 14, clWindowText.
6 – компонент Label 4:
Свойства:
Caption – ‘00’;
Font - Times New Roman, 14, clWindowText.
7 – компонент Label 6:
Свойства:
Caption – ‘Подтвердить ставку’;
Font - Times New Roman, 16, clRed.
8 – компонент Label 1:
Свойства:
Caption – ‘Сумма’;
Font - Times New Roman, 14, clWindowText.
9 – компонент Label 2:
Свойства:
Caption – ‘00’;
Font - Times New Roman, 14, clWindowText.
10 – компонентComboBox2:
Left – 16;
Top – 36;
Width – 113;
Height – 21;
Style – csDropDownList;
ItemHeight – 13;
TabOrder – 1.
11 – компонентComboBox1:
Свойства:
Left – 16;
Top – 100;
Width – 113;
Height – 21;
Style – csDropDownList;
ItemHeight – 13;
TabOrder – 0.
12 – компонентImage 1:
Свойства:
Height – 49;
Width – 49;
13 – компонентImage 2:
Свойства:
Height – 49;
Width – 49;
14 – компонент Image3:
Свойства:
Height – 321;
Width – 433;
15 – компонент BitBtn 1:
Свойства:
Glyph – (TBitmap);
Height – 121;
Width – 121.
События:
BitBtn1Click – событие одиночного щелчка по кнопке.
2.2 Спецификация программы
Исполняемый файл программы «Project1» имеет название Project1.exe.
Таблица 1.
Состав проекта.
Наименование | Обозначение | Примечание |
Project1.dof | Файл параметров проекта главной формы |
Содержит текущие установки проекта, настройки компилятора и компоновщика, имена служебных каталогов, условные директивы |
Продолжение таблицы 1
Project1.res | Файл ресурсов главной формы | Содержит пиктограммы, графические изображения |
Unit1.pas | Файл программных модулей главной формы | Определяет функциональность форм |
Unit1.dfm | Файл программных модулей главной формы | Содержит графические характеристики модулей Главного окна программы |
Unit.dcu | Объектный файл для Unit.pas | Откомпилированная версия Unit.pas |
2.3
Листинг
программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls, Math, Buttons;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Image1: TImage;
Image2: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
ComboBox1: TComboBox;
Label5: TLabel;
Label6: TLabel;
ComboBox2: TComboBox;
Label7: TLabel;
BitBtn1: TBitBtn;
N4: TMenuItem;
N5: TMenuItem;
Image3: TImage;
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure invisible_all(Sender: TObject);
procedure visible_all(Sender: TObject);
procedure Label6Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Ochki: longint;//переменная, отвечающая за очки игрока
implementation
{$R *.dfm}
procedure TForm1.N3Click(Sender: TObject);//кнопкавыход
begin
application.Terminate;//закрываемприложение
end;
procedure TForm1.N2Click(Sender: TObject);//новаяигра
var i:integer;
begin
image3.Visible:=false;
ochki:=100;//присваиваем переменной "ochki" количество начальных очков, по условию = 100
label2.Caption:='00';//задаём сумму выпавших кубиков = 0
label4.Caption:='100'; //задаём видимое количество очков
image1.Picture.LoadFromFile('p0.bmp');//задаём начальное изображение кубиков(пустое)
image2.Picture.LoadFromFile('p0.bmp');//задаём начальное изображение кубиков(пустое)
combobox1.Items.Clear;//очищаем список ставок
for i:=1 to 100 do
begin
combobox1.Items.Add(inttostr(i));//заполняемсписокставокот 1 до 100
end;
combobox1.ItemIndex:=0;//задаём начальное положение элемента списка
combobox2.Items.Clear;//очищаем список вариантов кубиков
for i:=2 to 12 do
begin
combobox2.Items.Add(inttostr(i));//заполняемсписокставокот 2 до 12
end;
combobox2.ItemIndex:=0;//задаём начальное положение элемента списка
visible_all(sender);//делаем видимыми все объекты на форме
bitbtn1.Enabled:=false;//ставим положение кнопки броска на выключено
end;
procedure tform1.invisible_all(Sender: TObject);//делаемневидимымивсеобъектынаформе
begin
label1.Visible:=false;
label2.Visible:=false;
label3.Visible:=false;
label4.Visible:=false;
label5.Visible:=false;
label6.Visibl
label7.Visible:=false;
image1.Visible:=false;
image2.Visible:=false;
combobox1.Visible:=false;
combobox2.Visible:=false;
bitbtn1.Visible:=false;
end;
procedure tform1.visible_all(Sender: TObject);//делаемвидимымивсеобъектынаформе
begin
label1.Visible:=true;
label2.Visible:=true;
label3.Visible:=true;
label4.Visible:=true;
label5.Visible:=true;
label6.Visible:=true;
label7.Visible:=true;
image1.Visible:=true;
image2.Visible:=true;
combobox1.Visible:=true;
combobox2.Visible:=true;
bitbtn1.Visible:=true;
end;
procedure TForm1.FormCreate(Sender: TObject);//присозданииформы
begin
image3.Visible:=true;
image3.picture.loadfromfile('l4.bmp');
invisible_all(Sender);//делаем невидимыми все объекты на форме, при загрузке игры
end;
procedure TForm1.Label6Click(Sender: TObject);//нажатиенанадписьпоставить
begin
bitbtn1.Enabled:=true;//делаемактивнойкнопкуброска
label2.Caption:='00';//сумма броска кубиков сбрасывается на 0
image1.Picture.LoadFromFile('p0.bmp');//загружаем пустые картинки для кубика
image2.Picture.LoadFromFile('p0.bmp');//загружаем пустые картинки для кубика
end;
procedure TForm1.BitBtn1Click(Sender: TObject);//процедурананажатиекнопкиброска
var i,i1,i2:integer;
begin
randomize;//включаем генератор случайных чисел
i1:=randomrange(1,6);//переменной i1 присваиваем значение от 1 до шести случайным образом
i2:=randomrange(1,6);//переменной i2 присваиваем значение от 1 до шести случайным образом
image1.Picture.LoadFromFile('p'+inttostr(i1)+'.bmp');//в зависимости от выпавшего числа загружаемс картинку для 1-го кубика
image2.Picture.LoadFromFile('p'+inttostr(i2)+'.bmp');//в зависимости от выпавшего числа загружаемс картинку для 2-го кубика
label2.Caption:=inttostr(i1+i2);//выводим на экран сумму выпавших кубиков
if ( (i1+i2<7) and (strtoint(combobox2.Items.Strings[combobox2.ItemIndex])<7) )//проверка на соответствие основному условию
or ( (i1+i2>7) and (strtoint(combobox2.Items.Strings[combobox2.ItemIndex])>7) )
and ( i1+i2<>strtoint(combobox2.Items.Strings[combobox2.ItemIndex]) )
then
begin
ochki:=ochki+strtoint(combobox1.Items.Strings[combobox1.ItemIndex]);//прибавляемкочкамвыиграннуюставку
showmessage('Вы выиграли ставку!')//выводим сообщение о выйгрыше
end else
begin
if i1+i2=strtoint(combobox2.Items.Strings[combobox2.ItemIndex]) then//есливыбранноечислосовпадаетсвыпавшим
begin
ochki:=ochki+strtoint(combobox1.Items.Strings[combobox1.ItemIndex])*4;//прибавляемкочкамвыиграннуюставкув 4-хкратномразмере
showmessage('Вы выиграли 4-х кратную ставку!')//выводим сообщение о выйгрыше
end else
begin
ochki:=ochki-strtoint(combobox1.Items.Strings[combobox1.ItemIndex]);//условиепройгрыша
showmessage('Вы проиграли ставку!')//выводим сообщение о пройгрыше
end;
end;
if ochki<=0 then //условиеокончанияигры
begin
invisible_all(sender);//скрываем все объекты на форме
showmessage('Вы проиграли!');//выводим сообщение о конце игры
end else
begin
label4.Caption:=inttostr(ochki);//выводим на экран количество очков
combobox1.Items.Clear;//очищаем список возможных ставок
for i:=1 to ochki do
begin
combobox1.Items.Add(inttostr(i)); //заполняем список возможных ставок от 1 до количества очков
end;
combobox1.ItemIndex:=0;//задаём начальное положение элемента списка
end;
{ label2.Caption:='00'; //сброс значения кубиков и суммы кубиков
image1.Picture.LoadFromFile('p0.bmp');
image2.Picture.LoadFromFile('p0.bmp');}
bitbtn1.Enabled:=false;//ставим положение кнопки броска на выключено
end;
procedure TForm1.N5Click(Sender: TObject);
begin
showmessage('Автор курсовой работы Важенин Антон Александрович);// Справка
end;
end.
2.4 Описание программы
Общие сведения:
Программа «Form» написана на языке ObjectPascal[2]
в визуальной оболочке программирования Delphi 7. Для полноценного функционирования программы необходимо наличие операционной системы Windows, либо компиляторы Delphi 7.
Функциональные назначения:
Программа была разработана для проведения досуга программиста.
Описание логической структуры:
Логическая структура программы построена следующим образом: Играющий называет любое число в диапазоне от 2 до 12 и ставку, которую он делает в этот ход. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6 (“бросает кубик”, на гранях которого цифры от 1 до 6). Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка. Ставка проиграна, если не имеет место ни одна из описанных ситуаций. В начальный момент у играющего 100 очков.
Используемые технические средства:
Данная программа может нормально функционировать на компьютерах от 486DX до PentiumIV . Размещения модуля программы на жёстком дискеоколо 1,5 Mb.
2.5 Тестирование программы
Для разработки программы «Form» использовалась среда визуального программирования “Delphi”. Delphi-это средства разработки программ, ориентированных на работу в Windows. В основе идеологии Delphi лежит технология визуального проектирования и методология объектно-ориентированного программирования. Для представлений программ в Delphi используется разработанный Borland язык ObjectPascal, в основе которого лежит TurboPascal.
Для проверки программы проводилось следующее испытание.
В соответствии с рисунком 3 видно, что программафункционирует нормально, если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку.
Рисунок 3 – Вариант выпадения костей.
3
Внедрение
Условия выполнения программы:
Минимальные требования: компьютер Pentium 166, 128 Mb оперативной памяти, 800 Кбайт свободного пространства на жестком диске, операционная система Windows 9x/NT/Me/2000/Xp, Windows совместимая мышь. Наличие интегрированной среды разработки приложений BorlandDelphi необязательно.
Выполнение программы:
Для выполнения программы, необходимо зайти в каталог, в котором расположена программа и, запустить на выполнение файл Project1.exe (Приложение В). Завершить работу с программой можно, нажав кнопку «Выход» основной формы.
Сообщения оператору:
1. Предупреждение о проигрыше ставки;
2. Предупреждение о выигрыше ставки;
3. Автор курсовой работы Важенин Антон Александрович;
Заключение
Игры всегда были классом программ, мгновенно реагирующим на все новшества рынка. Так было и с Internet - массовая истерия по поводу Сети еще только набирала силу, а уже открывались первые игровые сервера для желающих. Возможности Internet по сравнению с классической локальной сетью неоспоримо выше: по первой обычно играют 3-5 человек, максимум 8-10. К тому же этим людям надо всем собраться вместе, подгадать время... В Сети же оппонентов искать не нужно - они всегда есть, и в избытке, кроме того, среднее количество одновременно играющих колеблется около 50-100 человек (Diablo, сервера battle.net). Если учесть, что интересность multiplayer-режима прямо пропорциональна количеству противников, то преимущество Internet становится очевидным. Кроме того, вступают в дело такие факторы, как неизвестные противники, что всегда разжигает любопытство, плюс желание "утереть буржуям нос" и т.п.
Перспективы игр в Интернет настолько высоко оцениваются на Западе, что уже выпущен ряд продуктов, ориентированных только на Сеть. То есть, в соло или классическом сетевом варианте они просто не поддерживаются в принципе (Iron Wolves, Meridian 87, Ultima Online). К сожалению, в Казахстане вряд ли можно рассчитывать на продажу on-line проекта, хотя бы из-за, мягко говоря, недостаточно широкого распространения сетевых услуг и отсутствия традиции платить настоящую цену за игровой софт вообще. Единственный вариант - продать разработку на Запад, благо в Москве уже действуют фирмы, занимающиеся скупкой проектов на стадии сценариев или даже просто сырых идей. Непатриотично, хотя и вполне реально.
В последнее время сложилась хорошая традиция по мере приближения проекта к завершению распространять его демо-версию и испрашивать у игровой общественности всяческих советов на тему его улучшения. Для этого потребуется наличие собственной странички на WEB-сервере, e-mail адреса, а аппаратно - модема со скоростью передачи данных не менее 14400 бод. Также немаловажно создавать ажиотаж вокруг игры еще задолго до ее выхода, периодически запуская многообещающие обзоры в Сеть и специальную литературу для игроков. Не исключено, что многие купят вышедший релиз просто по инерции, под впечатлением от публикаций.
Глоссарий
№ п/п | Понятие | Определение |
1 | TDXImageList | Позволяет хранить серии DIB, Jpg, bmp-файлов, что очень удобно для программ, содержащих спрайты. Позволяет загружать DIB`ы с диска во время выполнения программы. |
2 | TDXPlay | Компонент позволяющий обмениваться информацией на компьютерах. |
3 | char | тип данных характеризующий символ |
4 | ShortString | строка, количество символов в которой составляет 255 |
5 | AnsiString | строка, количество символов в которой составляет ~231
|
6 | WideString | строка, количество символов в которой составляет ~231
|
7 | Компонент | Функциональный элемент, имеющий определённые свойства и размещаемый программистом в окне формы. |
8 | Проект | Совокупность файлов, обеспечивающих разработку приложения Delphi |
9 | Свойство | Специальный механизм классов регулирующий доступ к полям |
10 | Событие | Свойство процедурного типа предназначено для создания пользовательской реакции на то или иное входное воздействие |
Список использованных источников
1 | Архангельский, А.Я. 100 компонентов общего назначения библиотеки Delphi5 [электронный ресурс], 2005. |
2 | Архангельский, А.Я. Программирование в Delphi 7 – Москва, Издательство «БИНОМ»., 2004. |
3 | Бобровский С. Delphi 7 учебный курс. СПб.: Питер, 2004. – 736 с. |
4 | Бобровский, Сергей. Delphi 6: библиотека программиста. СПб.: Издательство «Питер», 2005 |
5 | Дарахвелидзе, П., Марков Е. Программирование в Delphi 4. СПб.: БХВ. СПб.,2005. |
6 | Культин Н. Основы программирования в Delphi 7. СПб.: БХВ-СПб., 2003 – 608 с. |
7 | Немнюгин, С.А. TurboPascal – СПб.: Питер, 2004 |
8 | Сван, Том. Delphi4. Библия разработчика. – Киев - М., СПб.: Издательство «Диалектика», 2006. |
9 | Ульман, Дж., Уидом, Дж. Введение в системы баз данных. – М.: Лори, 2004 – 458с. |
10 | Фаронов, В.В. Delphi 6.0. – М.: Издательство «Нолидж», 2001. |
11 | Федоров, А.Г. Delphi 3.0. для всех – М.: Компьютер Пресс, 2007. |
12 | Хомоненко, А. Базы данных. 2-е изд. – СПб., 2004. – 264 с. |
Приложени
я
А | |
Б | |
В |
[1]
В Delphi реализована поддержка новых передовых технологий, имеющих отношение к Интернету и кросс-платформой разработке приложений для Windows и Linux. Сергей Бобровский Delphi 6 , 2002 Питер C.19
[2]
Язык Object Pascal - основной инструмент Delphi. Фаронов В.В. Delphi 6.0. –М.: Издательство «Нолидж», 2001 (С.43)