Учебная работа. Реферат: Игра Кости

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Реферат: Игра Кости

Оглавление

Введение
3

1. Разработка эскизного и технического проектов программки
5

1.1. Предназначение и область внедрения 5

1.2. Технические свойства 5

1.2.1. Постановка задачки 5

1.2.2. Описание метода 7

1.2.3. Организация входных и выходных данных 13

1.2.4. Выбор состава программных и технических средств 13

1.3. Источники, использованные при разработке. 13

2.Разработка рабочего проекта
14

2.1. Разработка программки 14

2.2. Спецификация программки 34

2.3. текст программки 36

2.4. Описание программки 36

2.5. Тестирование программки 38

3. Внедрение
39

Заключение
43

Библиографический перечень
44

приложение
45

Введение.

При проектировании данной курсовой работы была решена задачка по разработке приложения в Delphi. Delphi – зрительная среда проектирования, в базе которой лежит язык – Object Pascal. Delphi дозволяет разрабатывать приложения работающие в операционной системе Windows. программка, описанная в этом проекте, сотворена на Delphi 5.

Наружный вид среды программирования Delphi различается от наружного вида остальных языков программирования, в каких разрабатываются приложения под Windows. Borland Pascal for Windows 7.0, Word for Windows эти языки различаются спецификацией – MDI (Multiple Document Interface) – описывает особенный метод управления нескольких дочерних окнах снутри 1-го огромного окна. Среда Delphi же следует иной спецификации, именуемой Single Document Interface (SDI), и состоит из нескольких раздельно расположенных окон.

Опосля пуска Delphi 5 на дисплее возникают сходу четыре окна:

Основное окно – Delphi 5 — Project 1.

Окно стартовой формы – Form 1.

Окно редактора параметров объектов – Object Inspector.

Окно редактора кода – Unit1.pas.

Создание приложений в Delphi можно поделить на два шага: создание окна, другими словами помещение нужных компонент на форму; и написание кода программки.

Целью этого проекта является сделать приложение представляющее собой игру «Кости». В данной для нас программке применены только некие способности Delphi.

Задание на курсовую работу

«Алгоритмические языки и программирование»

Студент группы: ОИН — 309 — 11

Вася Пупкин.

Направление: «Информатика», № договора: 55535356595954584

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

Условие задачки:

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

Задание выдано __________________

1. Разработка эскизного и технического проектов программки

1.1. Предназначение и область внедрения.

В данном задании нужно создать программку представляющую собой игру. программка создана для утехи. Область внедрения: Досуг программера. Так как ставится задачка создать приложение под Windows, то употребляться программка может лишь под управлением Windows 9x.

1.2. Технические свойства.

1.2.1. Постановка задачки

В условии задачки указывается на необходимость использования датчика случайных чисел. программка два раза («кидает кости») генерирует число от 1 до 6. Для этого употребляется генератор случайных чисел – процедура Randomize, и функция random(6). Переменная, отвечающая за выпавшее число, опосля присваивания ей функции “random(6)” будет в спектре от 0 до 5, потому к ней нужно прибавить единицу. к примеру: а:=random(6)+1; (1<a<6).нужно отметить, что если в тексте программки перед внедрением выше обозначенной функции не прописать: Randomize; (не «включить» генератор случайных чисел) значения функции random(6) будут повторяться всякий раз при запуске программки.

Последующим условием является вывод графического изображения поверхности кубика при любом ходе игрока. Для решения данной для нас задачки при помощи интегрированной в Delphi 5.0 программки “Image Editor” был сотворен файл ресурсов «к.res». Файл ресурсов к.res содержит восемь рисунков (восемь растровых изображений – Bitmap), два из которых употребляются для прекрасного дизайна приложения. Другие показывают грани кубика. В программке объявлены переменные типа TBitmap.В их, при помощи способа LoadFromResourceName
загружаются изображения из файла ресурсов. Дальше эти переменные изображаются на компонентах – Image. способ LoadFromResourceName
имеет два параметра идентификатор программки и имя ресурса. В качестве идентификатора программки употребляется глобальная переменная Hinstance, имя ресурса обязано быть представлено в виде строковой константы. Для того чтоб ресурсы были доступны программке нужно в текст программки добавить директиву компилятору {$R k.res}. Эта строчка помещается сначала текста модуля. При разработке приложений Delphi так же создаёт файл ресурсов, который содержит картину исполняемого файла.

Последующим условием задачки является, определение выигрыша либо проигрыша ставки. Для этого использована система if
else
. В данной задачке выигрыш ставки соответствует условиям:

Если сумма выпавших цифр меньше 7 и играющий замыслил число наименьшее 7, он выигрывает сделанную ставку.

Если сумма выпавших цифр больше 7 и играющий замыслил число большее 7, он также выигрывает сделанную ставку.

Если играющий угадал сумму цифр, он получает вчетверо больше очков, чем изготовленная ставка. Все остальные ситуации являются проигрышными.

При выполнении данного проекта условие задачки было дополнено.

Во-1-х, чтоб игра заканчивалась не только лишь нулем игрока – введено условие победы в игре. Если игрок набрал тыщу либо больше очков игра завершается победой игрока. Это реализовано при помощи конструкции if
else
.

Во-2-х, в процессе игры (перед выводом графического изображения поверхности кубика) выводится движущееся изображение кубика. По этому у играющего создаётся воспоминание, что он лицезреет брошенные кости (передвигающиеся кости). Для этого при помощи программки Macromedia FlashMX PRO 2004 7.0
1
были сделаны AVI-файлы. При проигрывании этих файлов можно следить, как изменяется изображение поверхности кубика – эффект “брошенных костей”. При запуске, приложение запрашивает путь к AVI-файлам (прилагаются к проекту). В предстоящем, опосля нажатия клавиши «Играться» (опосля броска кубиков), эти AVI-файлы проигрываются, опосля что выводится изображение кубика (кости “тормознули”). Для проигрывания употребляются составляющие – MediaPlayer. Экранами для проигрывания служат составляющие – Panel. Составляющие Panel и Image(компонент для вывода изображений) размещены в одном месте и зависимо от деяния программки (проигрывание либо вывод изображений) поочерёдно стают видимыми – невидимыми. Это происходит так: игрок (опосля ввода числа и ставки) надавливает клавишу «Играться» компонент Image становится невидимым компонент Panel – видимым, воспроизводятся AVI-файлы, потом компонент Panel становится невидимым компонент Image – видимым, выводятся изображения кубиков.

В проекте применены приемы, сопутствующие миролюбивому интерфейсу.

1.2.2. Описание метода

При разработке программки нужно решить ряд задач. Решение каждой задачки можно представить в виде отдельного блока (части), совокупа которых образует программку в целом. Обобщенная схема метода представлена на рис.1.

Ввод пути к AVI-файлам и проверка корректности ввода. (Рис.2.)

Ввод числа и ставки, проверка корректности ввода. Генерация случайных чисел. проигрывание AVI-файлов и вывод графических изображений. (Рис.3.)

Определение проигрыша либо выигрыша ставки. (Рис.4.)

Определение победы либо поражения в игре. (Рис.5.)

Блок 1

Блок 2

Блок 3

Блок 4

Рис.1. Обобщенная схема метода.

Ввод пути к AVI-файлам делается на главной форме (в диалоговом окне Project Options – Main Form), которая раскрывается опосля пуска приложения. тут же программка инспектирует корректность этого пути при помощи аннотации Try.
В случае ошибки (исключения “except”) программка выводит сообщение о этом и дает юзеру испытать ещё, юзер исправляет ошибку либо выходит из программки. Если ошибки нет, раскрывается основная форма (игровое поле).

Да Нет

Открытие главный формы

Рис.2. Ввод пути и обработка вероятных ошибок (блок 1).

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

Да

Да

Да

Да

st:=strtoint(edit2.text);

chislo:=strtoint(edit1.text)

Да

Да

r1.LoadFromResourceName(hinstance,’b’+inttostr(k1))

r2.LoadFromResourceName(hinstance,’b’+inttostr(k2));

image1.Canvas.Draw(0,0,r1);

image2.Canvas.Draw(0,0,r2);

Рис.3. Ввод числа и ставки, обработка ошибок ввода

Случайные числа вывод изображений (блок 2).

Определение проигрыша либо выигрыша ставки, происходит путём сопоставления числа (введенным юзером) и сумой 2-ух «случайных чисел». Если сумма 2-ух «случайных чисел» равна числу задуманным юзером, то ставка, возрастает вчетверо. Если сумма 2-ух «случайных чисел» меньше 7 и число, данное юзером меньше 7 либо сумма 2-ух «случайных чисел» больше 7 и число, данное юзером больше 7, то игрок выигрывает ставку. В других вариантах игрок проигрывает ставку.

Bank:=bank+4*st

Да

Да

Bank:=bank+st

Bank:=bank-st

Рис.4. Определение проигрыша либо выигрыша ставки (блок 3).

Определение победы либо поражения в игре осуществляется путём сопоставления количества очков в банке игрока с нолём и тыщей. Если количество очков равно 0 игрок проиграл. Он может начать поновой либо уйти побежденным. Если количество очков больше либо равно 1000 игрок одолел, о чём докладывает диалоговое окно.

Да

Да

Рис.5. Определение победы либо поражения в игре (блок 4).

1.2.3. Организация входных и выходных данных

В данной программке предусматривается внедрение последующих входных данных: пути к AVI-файлам, число, загаданное игроком, ставка. Данные число и ставка при помощи функции StrToint() вносятся в переменные chislo и st (типа byte) соответственно. Входные данные — пути к файлам, присваиваются свойству FileName медиаплееров. Выходная данная – отображение текущего количества очков в банке игрока. Очки показываются в виде строчки, чтоб конвертировать число в строчку использовалась функция IntTostr.

1.2.4. Выбор состава программных и технических средств

Для решения данной задачки целенаправлено применить интегральную среду разработки программ – Delphi 5. Среда Delphi дозволяет довольно стремительно разрабатывать приложения для Windows. Способностей Delphi в зрительном оформлении окон программ с излишком довольно для сотворения игры «Кости». Для настоящей работы Delphi 5 довольно:

Pentium 100;

ОЗУ – не наименее 8 Мб;

Твердый диск не наименее 500 Мб;

1.3. Источники, использованные при разработке

При разработке данной программки использовались материалы: рабочего учебника – Юнита №5 Лабзина Т.А.. Система программирования Delphi. Москва 2001; Самоучителя – Базы программирования в Delphi7 Никита Культин Санкт-Петербург 2003.

2.Разработка рабочего проекта

2.1. Разработка программки

Для разработки приложения употребляется зрительная среда программирования Delphi 5. Проект программки содержит 5 окон:

Aboutbox 1 – окно справки (о программке).

Aboutbox 2 – правила игры.

Aboutbox 3– ввод пути к AVI-файлам. (main form)

Aboutbox 4 – сообщение о ошибке ввода пути к AVI-файлам.

Form 1 – основное окно программки (игровое поле).

Окно form1.
Основное окно программки (игровое поле).

1

2

3

4 17

5

6 16

7 15

8 14

9 10 11 12 13

Компонент Form1
.

характеристики:

Bordericons (biMaximize) – False.

BorderStyle – bsSingle;

Caption – кости;

Color – clTeal;

Position – poDesktopCenter;

Visible – False;

Действия:

OnActivate – присваиваются исходные значения.

OnClose – запрос доказательства на выход.

OnMouseMove – для прекрасного дизайна компонентам присваиваются последующие значения:

button1.Default:=false;

button2.Default:=false;

button3.Default:=false;

button4.Default:=false;

edit1.Color:=clwindow;

edit2.color:=clwindow;

1 – компонент MainMenu (класс TMainMenu)

характеристики:

Items

Меню(N1) Справка(N2)

Играться(N3) Правила(N7) – ShortCut – F1.

Поновой(N4) О программке(N8) – ShortCut – F2

Выход(N6)

Свойство Caption N6 (изменяется во время выполнения программки).

Свойство Enabled N3 (изменяется во время выполнения программки).

Действия: нет.

2 – Компонент Label1 (класс TLabel)

характеристики:

Caption – Введите число;

Font – жирный, размер 10;

Действия: нет.

3 – Компонент Edit1. (класс TEdit)

характеристики:

Hint – Число от 2 до 12;

MaxLength – 2 (

Действия:

OnKeyPress – защита от ввода недопустимых знаков.

OnMouseMove – для прекрасного дизайна. Свойству Color присваивается – clyellow.

4 – Компонент Label2 (класс TLabel)

характеристики:

Caption – Сделайте ставку;

Font – жирный, размер 10;

Действия: нет.

5 – Компонент Label3 (класс TLabel)

характеристики:

Caption – характеристики:

Caption – 100 (изменяется во время выполнения программки);

Font – жирный, размер 10, цвет красноватый;

Name – L4;

Действия: нет.

7 – Компонент Edit2 (класс TEdit)

характеристики:

Hint – Не ставьте больше чем в банке;

MaxLength – 3;

Действия:

OnKeyPress – защита от ввода недопустимых знаков.

OnMouseMove – для прекрасного дизайна. Свойству Color присваивается – clred;

8 – Компонент Button2 (класс TButton)

характеристики:

Caption – Поновой;

Cursor – crHandPoint;

Font – жирный, размер 10;

Hint – Начать поначалу;

Действия:

OnClick – присваиваются исходные значения (игра начинается поновой);

OnMouseMove – для прекрасного дизайна. Свойству Default присваивается

9 – Компонент Button3 (класс TButton)

характеристики:

Caption – Выход;

Cursor – crHandPoint;

Font – жирный, размер 10;

Hint – Exit;

Действия:

OnClick – Вызывается процедура закрытия формы;

OnMouseMove – для прекрасного дизайна. Свойству Default присваивается

10 – Компонент Button1 (класс TButton)

характеристики:

Caption – Играться;

Cursor – crHandPoint;

Font – жирный, размер 10;

Hint – Кинуть кости;

Действия:

OnClick – Проверяется корректность ввода числа и ставки, воспроизводятся AVI-фалы, генерируются случайные числа, выводится графическое изображение кубиков, определяется проигрыш либо выигрыш ставки, определяется проигрыш либо выигрыш в игре.;

OnMouseMove – для прекрасного дизайна. Свойству Default присваивается

11 – Компонент Mp1 (класс TmediaPlayer)

характеристики:

Display – Panel2;

Name – Mp1;

Visible – False;

Действия: нет.

12 – Компонент L5 (класс TLabel)

характеристики:

Caption – (изменяется во время выполнения программки);

Font – жирный, размер 10, цвет красноватый;

Name – L5;

Действия: нет.

13 – Компонент Mp2 (класс TmediaPlayer)

характеристики:

Display – Panel1;

Name – Mp2;

Visible – False;

Действия: нет.

14 – Компонент Button4 (класс TButton)

характеристики:

Caption – Играться;

Cursor – crHandPoint;

Font – жирный, размер 10;

Hint – Всё на кон.

Действия:

OnClick – Производится оператор присваивания: edit2.Text:=l4.Caption; Все очки ставятся на кон

OnMouseMove – для прекрасного дизайна. Свойству Default присваивается

15 – Компонент Panel1 (класс TPanel)

характеристики:

Caption – ;

Height – 105;

Width – 105;

Действия: нет.

16 – Компонент Panel2 (класс TPanel)

характеристики:

Caption – ;

Height – 105;

Width – 105;

Действия: нет.

17 – Компонент Label4 (класс TLabel)

характеристики:

Caption – Выпавшие кости;

Font – жирный, размер 14;

Действия: нет.

Также на форме находятся составляющие:

TImage1 и TImage2 (закрыты компонентами TPanel1 и TPanel2 соответственно)

характеристики:

Height – 105;

Width – 105

Visible – изменяется во время выполнения программки.

Panel3 – Panel9 эти составляющие не оказывают воздействия на ход выполнения программки. Они только служат типичным орнаментом. Изменённые характеристики – размер и цвет.

Окно AboutBox1 – окно справки (о программке).

1

2

3

4

5

6 7

Компонент AboutBox1.

характеристики:

Caption – О программке;

Color – clHighlight;

Name – AboutBox1;

Position – poMainFormCenter;

Действия: нет

1 – Компонент L1 (класс TLabel)

характеристики:

Caption — (изменяется программно);

Font – размер 10, подчеркнутый, цвет синий;

ParentColor – True;

Действия: нет;

2 – Компонент Image (класс TImage)

характеристики:

Изменённых параметров нет (лишь загружена картина);

Действия: нет.

3 – Компонент Label1 (класс TLabel)

характеристики:

Caption – Среда разработки —— Delphi 5;

Font – размер 10, подчеркнутый, цвет синий;

ParentColor – True;

Действия: нет.

4 – Компонент Label2 (класс TLabel)

характеристики:

Caption – Цифровая подпись отсутствует;

Font – размер 10, подчеркнутый, цвет синий;

ParentColor – True;

Действия: нет.

5 – Компонент Label3 (класс TLabel)

характеристики:

Caption – версия ——— 1.1;

Font – размер 10, подчеркнутый, цвет синий;

ParentColor – True;

Действия: нет.

6 – Компонент OkButton (класс TButton)

характеристики:

Изменены размеры.

Действия: нет

7 – Компонент Panel1 (класс TPanel)

характеристики:

Color – clSilver;

Действия: нет

Окно AboutBox2 – окно правила игры.

1 8 7

2

3 6

4 5

Компонент AboutBox2

характеристики:

Bordericons (biSystemmenu) – False.

Caption – Правила игры;

Color – clHighlight;

Name – AboutBox2;

Position – poMainFormCenter;

Действия:

OnActivate – Для красы выводим картину, также выводим информацию (правила игры).

OnMouseMove – Вызываем функцию FormActivate, чтоб возвратить начальный вид окну опосля действия OnMouseMove на кнопочке OK.

1 – Компонент Lab2 (класс TLabel)

характеристики:

Caption – (изменяется во время работы программки);

Font – размер 10;

Name – lab2;

ParentColor – True;

Действия: нет;

2 – Компонент Image (класс TImage);

характеристики:

Height – 73;

Width – 73;

Действия: нет;

3 – Компонент Lab1 (класс TLabel)

характеристики:

Caption – Фортуны!!!;

Font – размер 40, цвет красноватый;

Name – lab1;

ParentColor – True;

Visible – False (изменяется во время работы программки);

Действия: нет;

4 – Компонент OkButton (класс Tbutton)

характеристики:

Из всех параметров изменены лишь размеры.

Действия:

OnMouseMove – изменяем наружный вид окна, хотим фортуны игроку.

5 – Компонент Lab4 (класс TLabel)

характеристики:

Caption – Выиграть;

Font – размер 12, цвет травяной;

Name – lab4;

ParentColor – True;

Visible – False (изменяется во время работы программки);

Действия: нет;

6 – Компонент Image1 (класс TImage);

характеристики:

Height – 105;

Visible – False (изменяется во время работы программки);

Width – 105;

Действия: нет;

7 – Компонент Lab3 (класс TLabel)

характеристики:

Caption – Попробуй;

Font – жирный, размер 12, цвет желтоватый;

Name – lab3;

ParentColor – True;

Visible – False (изменяется во время работы программки);

Действия: нет;

8 – Компонент Panel (класс TPanel)

характеристики:

Caption — ;

Color – clScrollBar;

Действия: нет.

Окно Aboutbox 3– ввод пути к AVI-файлам. (main form)

1 19

18

2

3 17

4 5 16

6

7 15

8

9 14

10

13

11

12

Компонент AboutBox3

характеристики:

Bordericons (biSystemmenu) – False.

BorderStyle – bsSingle;

Caption – Information;

Color – clGray;

Name – AboutBox3;

Position – poDesktopCenter;

(В окне Project Options окно AboutBox3 изготовлено главной формой – main form).

Действия: нет.

1 – Компонент Label1 (класс TLabel)

характеристики:

Caption – Для правильной работы приложения;

Font – жирный, размер 12;

ParentColor – True;

Действия: нет;

2 – Компонент Label2 (класс TLabel)

характеристики:

Caption – введите путь к файлам;

Font – жирный, размер 12;

ParentColor – True;

Действия: нет;

3 – Компонент Label3 (класс TLabel)

характеристики:

Caption – kos.avi и kos1.avi;

Font – жирный, размер 12;

ParentColor – True;

Действия: нет;

4 – Компонент Med1 (класс TMediaPlayer)

характеристики:

Display – Med2;

Name – Med1;

Visible – False;

Действия: нет

5 – Компонент Label4 (класс TLabel)

характеристики:

Caption – Пропишите путь вручную: ;

Font – жирный, размер 12;

ParentColor – True;

Действия: нет;

6 – Компонент Edit1 (класс TEdit)

характеристики:

Color – clYellow;

Действия: нет.

7 – Компонент Label5 (класс TLabel)

характеристики:

Caption – Или кликните по имени файла;

Font – жирный, размер 12;

ParentColor – True;

Действия: нет;

8 – Компонент Disk1 (класс TDriveComboBox)

характеристики:

Color – clYellow;

Name – Disk1;

Действия:

OnChange – Производится последующий оператор присваивания

dir1.Drive:=disk1.Drive;

для «связки дисков с папками».

9 – Компонент Dir1 (класс TDirectoryListBox)

характеристики:

Color – clBlack;

Font – цвет белоснежный

Name – Dir1;

Действия:

OnChange – Производится последующий оператор присваивания

file1.Directory:=dir1.Directory;;

для «связки файлов с папками».

10 – Компонент File1 (класс TFileListBox)

характеристики:

Color – clBlack;

Font – цвет белоснежный;

Mask – Kos.avi;

Name – File1;

Действия:

OnClick – Производится последующий оператор присваивания

edit1.Text:=file1.FileName;

путь к избранному файлу прописывается в Edit1.

11 – Компонент Button1 (класс TButton)

характеристики:

Caption – ok;

Font – жирный, размер 14;

Действия:

OnClick – проверяется корректность пути к файлам. программка пробует (Try) открыть плееры в случае ошибки (Except) юзеру выводится сообщение о ошибке. Если ошибки нет, показывается основная форма (игровое поле).

12 – Компонент Button2 (класс TButton)

характеристики:

Caption – Выход;

Font – жирный, размер 14;

Действия:

OnClick – запирается приложение.

13 – Компонент File2 (класс TFileListBox)

Характеристики:

Color – clBlack;

Font – цвет белоснежный;

Mask – Kos1.avi;

Name – File2;

Действия:

OnClick – Производится последующий оператор присваивания

Edit2.Text:=file2.FileName;

путь к избранному файлу прописывается в Edit2.

14 – Компонент Dir2 (класс TDirectoryListBox)

характеристики:

Color – clBlack;

Font – цвет белоснежный

Name – Dir2;

Действия:

OnChange – Производится последующий оператор присваивания

File2.Directory:=dir2.Directory;;

для «связки файлов с папками».

15 – Компонент Disk2 (класс TDriveComboBox)

характеристики:

Color – clYellow;

Name – Disk2;

Действия:

OnChange – Производится последующий оператор присваивания

Dir2.Drive:=disk2.Drive;

для «связки дисков с папками».

16 – Компонент Edit2 (класс TEdit)

характеристики:

Color – clYellow;

Действия: нет.

17 – Компонент Med2 (класс TMediaPlayer)

характеристики:

Display – Med1;

Name – Med2;

Visible – False;

Действия: нет

18 – Компонент Panel2 (класс TPanel)

характеристики:

Caption – ;

Color – clBlack

Действия: нет

19 – Компонент Panel1 (класс TPanel)

характеристики:

Caption – ;

Color – clSilver

Действия: нет

Окно Aboutbox 4 – сообщение о ошибке ввода пути к AVI-файлам

1

2

3 4 5

Компонент AboutBox4

характеристики:

BorderIcons (bsSystemMenu) – False;

Caption – WARNING;

Color – clTeal;

Name – AboutBox4;

Действия: нет.

1 – Компонент Label1 (класс TLabel)

характеристики:

Caption – О Ш И Б К А ! ! !;

Color – clYellow;

Font – жирный, размер 14;

Действия: нет.

2 – Компонент Label4 (класс TLabel)

характеристики:

Caption – Не верный путь, или указаны;

Color – clWhite;

Font – жирный, размер 14;

Действия: нет.

3 – Компонент Label3 (класс TLabel)

характеристики:

Caption –Попытайтесь ещё раз;

Color – clLime;

Font – жирный, размер 14;

Действия: нет.

4 – Компонент Label3 (класс TLabel)

характеристики:

Caption – схожие названия файлов;

Color – clYellow;

Font – жирный, размер 14;

Действия: нет.

5 – Компонент OkButton (класс TButton)

характеристики:

Caption – ok;

Font – жирный, размер 14;

Действия: нет.

2.2. Спецификация программки

Исполняемый файл программки “Игра “Кости”” носит заглавие Kosti.exe, размещен на дискете в директории My project. Исполняемый файл выделен иконкой. Программка употребляет AVI-файлы, которые также находятся на дискете. Состав проекта:

Наименование


Обозначение


Примечание



Abbox1.dfm


файл формы aboutbox1


Содержит перечень всех компонент на форме aboutbox1



Abbox2.dfm


файл формы aboutbox2


Содержит перечень всех компонент на форме aboutbox2



Abbox3.dfm


файл формы aboutbox3


Содержит перечень всех компонент на форме aboutbox3



Abbox4.dfm


файл формы aboutbox4


Содержит перечень всех компонент на форме aboutbox4



Cursproj.dfm


файл формы Form1


Содержит перечень всех компонент на форме Form1



Abbox1.pas


файл программного модуля формы aboutbox1


Описывает функциональность формы aboutbox1



Abbox2.pas


файл программного модуля формы aboutbox2


Описывает функциональность формы aboutbox2



Abbox3.pas


файл программного модуля формы aboutbox3


Описывает функциональность формы aboutbox3



Abbox4.pas


файл программного модуля формы aboutbox4


Описывает функциональность формы aboutbox4



Cursproj.pas


файл программного модуля формы Form1


Описывает функциональность формы Form1



Abbox1.dcu


Объектный файл для abbox1.pas


Откомпилированная версия abbox1.pas



Abbox2.dcu


Объектный файл для abbox2.pas


Откомпилированная версия abbox2.pas



Abbox3.dcu


Объектный файл для abbox3.pas


Откомпилированная версия abbox3.pas



Abbox4.dcu


Объектный файл для abbox4.pas


Откомпилированная версия abbox4.pas



Cursproj.dcu


Объектный файл для Cursproj.pas


Откомпилированная версия Cursproj.pas



Kos.avi


файл – видеозапись


Содержит меняющееся изображение кубиков



Kos1.avi


файл – видеозапись


Содержит меняющееся изображение кубиков



K.res


файл ресурсов


Содержит пиктограммы и графические изображения.



Kosti.res


файл ресурсов


Содержит пиктограмму программки (Mainicon)



Kosti.cfg


файл конфигурации проекта


Употребляется компилятором



Kosti.dof


файл характеристик проекта


Содержит текущие установки проекта: опции компилятора и компоновщика, имена служебных каталогов, условные директивы



Kosti.dpr


файл проекта


Связывает все файлы, из которых состоит приложения



Kosti.exe


файл программки


Исполняемый файл




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

Полный листинг программки представлен в приложении (стр. 45).

2.4. Описание программки

Общие сведения

программка «Кости» написана на интегральной системе программирования Delphi 5. Она работает как приложение под Windows 9×95982000МЕXP. Исполняемый файл программки носит заглавие Kosti.exe. Программка употребляет AVI-файлы, которые были сделаны при помощи Macromedia FlashMX PRO 2004 версии 7.0

Функциональное предназначение

Программка «Кости» является игрой, как следует, её основное предназначение – развлечение. Ограничений нет.

Описание логической структуры

При разработке программки «Кости» не использовались сложные логические описания. Для выбора действий программки при тех либо других критериях была использована обычная система If…..Else.
Эта система использована для определения проигрыша либо выигрыша, предотвращения ошибок, также для корректировки ввода знаков в поля ввода ставки и числа.

Применяемые технические средства

Для работы программки довольно Pentium 100, 8мб оперативки, около 1мб вольного места на твердом диске, Windows 95982000МЕXP, мышь; доп устройства (дисководы гибких дисков, CDROM, принтер и т.п.) программкой не употребляются.

Вызов и загрузка

Для того чтоб вызвать программку, нужно запустить исполняемый файл Kosti.exe, который находится на дискете в папке my project (он выделен иконкой). Так же для обычного функционирования программки нужны AVI-файлы, которые также имеются в папке my project.

Входные данные

В данной программке употребляются последующие входные данные: пути к AVI-файлам, ставка, число. Все эти данные вводит юзер
1
. Опосля ввода пути к файлам программка инспектирует их корректность и в случае корректности “даёт добро” на предстоящее выполнение программки. Данные ставка и число вводятся юзером в виде строк, потому для работы с ними (подсчет, сопоставление, вывод и т.д.) употребляются функции Strtoint и Inttostr.

§ Выходные данные

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

2.5. Тестирование программки

Данная программка написана в среде программирования Delphi 5. Среда программирования Delphi 5 дозволяет просто протестировать программку. Для этого употребляется трассировка – выполнение программки по шагам, {инструкция} за аннотацией. Трассировка помогает программеру найти на каком шаге выполнения программки возникает ошибка. Для того чтоб начать трассировку, нужно из меню Run
избрать команду Step over
либо Trace into.
В итоге в окне редактора кода будет выделена 1-ая {инструкция} программки и выделится последующая. Чтоб выполнить выделенную аннотацию, нужно из меню Run
избрать команду Step over
(надавить кнопку <F8>) либо Trace into
(надавить кнопку <F7>).

В хоть какой момент можно окончить трассировку и продолжить выполнение программки в настоящем темпе (зависит от скорости работы микропроцессора). Для этого нужно из меню Run
избрать команду Run.

При тестировании программки «Кости», не контролируемых программкой ошибок, не найдено.

3. Внедрение

§ Условия выполнения программки.

Для работы программки довольно Pentium 100, 8мб оперативки, около 1мб вольного места на твердом диске, Windows 95, доп устройства (дисководы гибких дисков, CDROM, принтер и т.п.) программкой не употребляются.

§ Выполнение программки

Для пуска программки нужно открыть папку my project и запустить исполняемый файл Kosti.exe. В итоге раскроется окно программки (Aboutbox3) ввода пути к AVI-файлам. В этом окне нужно ввести пути к файлам Kos.avi и Kos1.avi. Это можно создать 2-мя методами: прописать путь в поля для ввода или кликнуть на имени файла. (Для удобства необходимо поместить exe-файл в ту же директорию, что и avi-файлы.) Опосля нажатия клавиши OK (в случае правильного ввода) возникает основное окно программки (игровое поле). тут имеются два поля для ввода числа и ставки. Ввод в эти поля ограничен, т.е. игрок может вводить лишь числа. В поле, помеченное как «Введите число» нужно ввести число от 2-ух до 12-ти; в поле, помеченное как «Сделайте ставку» нужно ввести число, не превышающее количество очков в банке. Опосля ввода числа и ставки в надлежащие поля игроку остается надавить клавишу «Играться». В случае правильного ввода числа и ставки проиграются AVI-файлы (воспоминание брошенных кубиков) и покажутся изображения кубиков надлежащие выпавшим. Если сумма выпавших цифр меньше 7 и играющий замыслил число наименьшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий замыслил число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает вчетверо больше очков, чем изготовленная ставка. В другом случае игрок проигрывает ставку.

Это длится пока у игрока есть очки либо игрок сумел набрать 1000 очков. Если игрок растерял все свои очки, он проиграл, а если набрал 1000 очков, он выиграл. О выигрыше (также как и о проигрыше) играющий выяснит по сообщению программки.

В нижнем левом углу формы находится клавиша «выход». С её помощью можно в хоть какой момент выйти из программки.

§ Сообщения оператору

В процессе выполнения программки могут появиться сообщения о ошибке либо о окончании игры (победе либо поражении).

— 1-ое сообщение о ошибке может появиться во время ввода пути к AVI-файлам. В случае ошибки возникнет последующее сообщение:

В этом случае следует надавить клавишу ОК и повторить ввод (см. выполнение программки).

— Последующее сообщение может появиться, если юзер не введя число и ставку, надавил клавишу «играться».

Следует надавить ОК

И ввести число и ставку.

— Также программкой предусмотрены ситуации, когда введено число, а ставка нет и когда введена ставка, а число нет. На каждую из этих ошибок предусмотрены сообщения оператору:

и

В обоих вариантах юзеру нужно кликнуть ОК и выполнить предписания сообщения.

— Если в поле ввода числа введена единица, покажется соответственное сообщение (т.к. сумма цифр 2-ух костей не быть может равна одному)

В этом случае также следует

поправить ошибку.

— На вариант если юзер случаем надавил клавишу «выход», “крестик ” либо соответственный пункт меню, предвидено сообщение – доказательство на закрытие программки.

Если юзер вправду

желает выйти следует надавить – Да,

если нет – Нет.

— Чтоб проинформировать юзера о конце игры употребляются сообщения:

1. игра завершилась победой игрока.

Следует надавить ОК. Дальше клавиша «играться»

будет недосягаема пока не будет нажата клавиша

«поновой».

2. игра завершилась поражением игрока.

Следует надавить ОК. Дальше клавиша

«играться» будет недосягаема

пока не будет нажата клавиша

«поновой».

Заключение

При проектировании программного обеспечения на Delphi перед программером открываются широкие способности данной для нас сильной среды программирования. Borland Delphi дозволяет создавать самые разные программки: от простых однооконных приложений до программ управления распределенными базами.

программка, написанная мной в процессе разработки курсового проекта, является крохотным примером мультимедийных способностей Delphi. В программке употребляются составляющие нужные для проигрывания AVI-файлов. В Delphi имеется компонент MediaPlayer!!!

При помощи Delphi можно написать программку – проигрыватель, типа Light Alloy; программку, которая будет управлять приводом CD-ROMа; и т.д.

При всех этих способностях разработка программ не просит огромного количества времени, потому что среда Delphi “берет на себя огромную часть рутинной работы, оставляя программеру работу по конструированию диалоговых окон и функций обработки событий”
1
.

Библиографический перечень

1
. Лабзина Т.А. Юнита №5. Система программирования Delphi. Москва 2001 г. – 138 стр.

2
. Пестриков В.М. , Маслобоев А.Н. Turbo Pascal 7.0. Санкт-Петербург; издательство НиТ, 2003 г. – 368 стр.

3
. Культин Н. Базы программирования в Delphi 7; издательство БХВ-Петербург, 2003 г. – 598 стр.

4
. Андреев А.Г. Delphi. Петербург, 2001 г. – 960стр.

5
. Маленков И.С. Программирование. Петербург, 1998 г. – 340стр.

6
. Абдулов К.П. Delphi и Windows. Москва, 2002 г. – 756стр.

приложение

Текст программки.

unit Abbox1
;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TAboutBox1 = class(TForm)

Panel1: TPanel;

ProgramIcon: TImage;

l1: TLabel;

Version: TLabel;

Copyright: TLabel;

OKButton: TButton;

Label1: TLabel;

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox1: TAboutBox1;

implementation

{$R *.DFM}

procedure TAboutBox1.FormActivate(Sender: TObject);

// При активации формы присваиваем свойству Caption метки строчку.

begin

l1.Caption:=’ Курсовой проект. игра «Кости». ‘+#13+

‘Разработал студент группы Оин-309-11’+#13+

‘Вася Пупкин’;

end;

end.

unit abbox2
;

// В этом модуле употребляются ресурсы. Потому указываем файл ресурсов.

{r k.res}

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TAboutBox2 = class(TForm)

Panel1: TPanel;

image: TImage;

lab2: TLabel;

lab3: TLabel;

lab4: TLabel;

lab1: TLabel;

OKButton: TButton;

Image1: TImage;

procedure FormActivate(Sender: TObject);

procedure OKButtonMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox2: TAboutBox2;

// Переменные, в которые будут загружены рисунки.

baks,kub:tbitmap;

implementation

{$R *.DFM}

procedure TAboutBox2.FormActivate(Sender: TObject);

// Операторы, которые будут выполнены при активации формы.

// На работу программки особенного воздействия не оказывают.

// Изготовлено для прекрасного дизайна.

begin

// Создаём битовый образ для вывода рисунки.

kub:=tbitmap.Create;

// Загружаем картину из файла ресурсов.

kub.LoadFromResourceName(hinstance,’kub’);

// Выводим картину

image.Canvas.Draw(0,0,kub);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Прячем пока ненадобные составляющие.

lab1.Visible:=false;

lab3.Visible:=false;

lab4.Visible:=false;

image1.Visible:=false;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Показываем компонент с первой картинкой.

image.Visible:=true;

// Меняем цвет компонент.

panel1.Color:=clscrollbar;

aboutbox2.Color:=clhighlight;

// Показываем метку и выводим информацию.

lab2.Visible:=true;

lab2.Caption:=’ Правила ординарны — угадай сумму цифр’+#13+

‘2-ух костей и выиграй ставку увеличенную’+#13+

‘в 4 раза. Если и загаданное число и сумма ‘+#13+

‘цифр костей больше 7 ставка — выирана.’+#13+

‘Если и загаданное число и сумма цифр ‘+#13+

костей меньше 7 ставка — также выиграна.’+#13+

‘В остальных вариантах ставка будет проиграна.’ ;

end;

procedure TAboutBox2.OKButtonMouseMove(Sender: TObject; Shift: TShiftState;

X, Y: Integer);

// При движении указателя на кнопочке «OK» для красы меняем наружный вид

// окна.

begin

// Прячем ненадобные составляющие.

lab2.Visible:=false;

image.Visible:=false;

// Показываем нужные.

lab1.Visible:=true;

lab3.Visible:=true;

lab4.Visible:=true;

image1.Visible:=true;

// Создаём битовый образ 2-ой рисунки.

baks:=tbitmap.Create;

// Загружаем вторую картину из файла ресурсов.

baks.LoadFromResourceName(hinstance,’baks’);

// Выводим вторую картину.

image1.Canvas.Draw(0,0,baks);

// Меняем цвет компонент.

panel1.Color:=clinactivecaption;

aboutbox2.Color:=clinactivecaptiontext;

end;

procedure TAboutBox2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

// При движении указателя на форме меняем наружный вид окна на начальный.

// Для что вызываем функцию активации формы.

begin

formactivate(sender);

end;

end.

unit abbox3
;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls, MPlayer, FileCtrl;

type

TAboutBox3 = class(TForm)

Panel1: TPanel;

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

file1: TFileListBox;

dir1: TDirectoryListBox;

disk1: TDriveComboBox;

disk2: TDriveComboBox;

dir2: TDirectoryListBox;

file2: TFileListBox;

Panel5: TPanel;

Med1: TMediaPlayer;

Med2: TMediaPlayer;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure disk1Change(Sender: TObject);

procedure dir1Change(Sender: TObject);

procedure disk2Change(Sender: TObject);

procedure dir2Change(Sender: TObject);

procedure file1Click(Sender: TObject);

procedure file2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox3: TAboutBox3;

implementation

// Подключаем модули главный формы и Aboutbox-а сообщающего о ошибке.

uses Cursproj,abbox4;

{$R *.DFM}

procedure TAboutBox3.Button1Click(Sender: TObject);

// Обработка действия Onclick клавиши ‘Ok’.

begin

// Присваеваем свойствам «FileName» медиаплейеров характеристики Text Edit-ов.

med1.FileName:=edit1.Text;

med2.FileName:=edit2.Text;

// Последующий блок программки — защита от неправильного пути к AVI-файлам.

// Пытаемся открыть медиаплейеры. Если возникнет ошибка (исключение)

// будут выполнены операторы опосля служебного слова ‘Except’.

try

med1.Open;

med2.Open;

except

// Вызываем окно сообщающее о ошибке.

aboutbox4.ShowModal;

// Выходим из процедуры, т.о. даем юзеру возможность повторить

// ввод пути.

exit;

end;

// Если ошибки не вышло.

// Закрываем медиаплейеры этого «Aboutbox-а». Это нужно,

// что бы AVI-файлы были доступны медиаплейерам главный формы

med1.Close;

med2.Close;

// Вызываем основную форму (поле игры).

form1.show;

// Свойствам ‘FileName’ медиаплейеров главный формы присваеваем

// сейчас буквально верные пути к AVI-файлам.

form1.mp1.FileName:=aboutbox3.Edit1.Text;

form1.mp2.FileName:=aboutbox3.Edit2.Text;

// «Прячем» окно ввода путей к AVI-файлам.

aboutbox3.Hide;

end;

procedure TAboutBox3.Button2Click(Sender: TObject);

// Клик на кнопочке ‘Выход’

begin

// Закрываем форму.

Close;

end;

// Последующие процедуры обрабатывают действия OnChange компонент //FileListBox,

// DirectoryListBox, DriveListBox. Обрабатывают таковым образом, что бы //связать

// их меж собой, т.е. при смене диска изменялись папки, при смене папки

// изменялись файлы, а при выбирании файла путь к нему прописывался в Edit-ах.

procedure TAboutBox3.disk1Change(Sender: TObject);

begin

dir1.Drive:=disk1.Drive;

end;

procedure TAboutBox3.dir1Change(Sender: TObject);

begin

file1.Directory:=dir1.Directory;

end;

procedure TAboutBox3.disk2Change(Sender: TObject);

begin

dir2.Drive:=disk2.Drive;

end;

procedure TAboutBox3.dir2Change(Sender: TObject);

begin

file2.Directory:=dir2.Directory;

end;

// При выбирании файла, путь к нему прописывается в Edit1

procedure TAboutBox3.file1Click(Sender: TObject);

begin

edit1.Text:=file1.FileName;

end;

// При выбирании файла, путь к нему прописывается в Edit2

procedure TAboutBox3.file2Click(Sender: TObject);

begin

edit2.Text:=file2.FileName;

end;

end.

unit abbox4
;

// Модуль окна, которое информирует о ошибке ввода пути к AVI-файлам.

// Не описано ни одной процедуры. Все надписи внесены при установке

// параметров компонент.

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

Buttons, ExtCtrls;

type

TAboutBox4 = class(TForm)

OKButton: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

private

{ Private declarations }

public

{ Public declarations }

end;

var

AboutBox4: TAboutBox4;

implementation

{$R *.DFM}

end.

unit Cursproj
;

//Указываем файл ресурсов.

{$r k.res}

interface

uses

//Обычные модули.

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

Menus, StdCtrls, ExtCtrls, MPlayer;

//Составляющие и процедуры использующиеся в программке.

type

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

Edit1: TEdit;

Edit2: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Label1: TLabel;

Button4: TButton;

Label2: TLabel;

Label3: TLabel;

l4: TLabel;

Image1: TImage;

Image2: TImage;

Label4: TLabel;

l5: TLabel;

Panel1: TPanel;

Panel2: TPanel;

mp1: TMediaPlayer;

mp2: TMediaPlayer;

Panel3: TPanel;

Panel4: TPanel;

Panel5: TPanel;

Panel6: TPanel;

Panel7: TPanel;

Panel8: TPanel;

Panel9: TPanel;

procedure N8Click(Sender: TObject);

procedure N7Click(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

procedure Button1Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

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

procedure Button3Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure N3Click(Sender: TObject);

procedure N4Click(Sender: TObject);

procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Button2MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Button3MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Button4MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Edit2MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

//Переменные, в которые будут загружены рисунки.

r1,r2,baks:tbitmap;

implementation

//Подключение модулей «ABOUTBOX-ов».

uses Abbox1, abbox2, abbox3;

{$R *.DFM}

procedure TForm1.N8Click(Sender: TObject);

begin

//Вызов окна о программке

aboutbox1.showmodal;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

//Вызов окна правила игры

aboutbox2.showmodal;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

//Процедура защиты от ввода недопустимых знаков в поле ввода числа

begin

//если введен знак «1», то последующим быть может лишь «0», «1» либо «2»

if edit1.Text=’1′ then

begin

edit1.MaxLength:=2;

case key of

‘0’..’2′,#8:

else key:=chr(0); //по другому знак не показывать

end

end

else //Пока ничего не введено (ноль не отображается).

case key of

‘1’..’9′,#8: //показывать лишь числа. Разрешено применять Backspase.

else key:=chr(0);

end;

//Если введена цифра 2,3,4,5,6,7,8 либо 9 наибольшая длинна строчки 1 знак.

if (edit1.Text=’2′) or (edit1.Text=’3′) or (edit1.Text=’4′)

or(edit1.Text=’5′) or (edit1.Text=’6′) or (edit1.Text=’7′)

or(edit1.Text=’8′) or (edit1.Text=’9′) then

edit1.MaxLength:=1

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

// Для поля ввода ставки запрет ненадобных знаков анологичен.

begin

edit2.MaxLength:=3;

if (edit2.Text=») or (strtoint(edit2.text)>strtoint(l4.caption)) then

case key of

‘1’..’9′,#8:

else key:=chr(0)

end

else

case key of

‘0’..’9′,#8:

else key:=chr(0)

end

end;

//Основная часть программки. Клик на кнопочке ‘Играться’.

procedure TForm1.Button1Click(Sender: TObject);

//Применяемые переменные.

// St — ставка игрока.

// bank- переменная отвечающая за кол-во очков.

// Sum — сумма цифр 2-ух костей.

// Chislo — число загаданное игроком.

// K1,k2 — выпавшие кости.

var sum,chislo,k1,k2:byte;st,bank:integer;

// «Перехват» вероятных ошибок.

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

begin

// Если не введены ни число ни ставка.

if (edit1.Text=») and (edit2.Text=») then

begin

// Выводится соответственное сообщение и программка выходит из процедуры.

messagedlg(‘Введите число и ставку’,mterror,[mbok],0);

edit1.SetFocus;

exit;

end;

// Если не введено число.

if edit1.Text=» then

begin

// Выводится соответственное сообщение и программка выходит из процедуры.

messagedlg(‘Введите число’,mterror,[mbok],0);

edit1.SetFocus;

exit;

end;

// Если не введена ставка.

if edit2.Text=» then

begin

// Выводится соответственное сообщение и программка выходит из процедуры.

messagedlg(‘Сделайте ставку’,mterror,[mbok],0);

edit2.SetFocus;

exit;

end;

// Если ставка равна нолю

if edit2.Text=’0′ then

begin

// Выводится соответственное сообщение и программка выходит из процедуры.

messagedlg(‘Ноль это не ставка’,mterror,[mbok],0);

edit2.SetFocus;

exit;

end;

// Преобразовываем строковые данные полей для ввода числа иставки и

// заносим в надлежащие переменные.

st:=strtoint(edit2.text);

chislo:=strtoint(edit1.text);

// Если игрок загадал единицу.

if chislo=1 then

begin

// Выводится соответственное сообщение и программка выходит из процедуры.

messagedlg(‘Сумма цифр 2-ух костей ‘+#13+

‘не быть может равна — 1.’,mterror,[mbok],0);

edit1.Text:=»;

edit1.SetFocus;

exit;

end;

// Если игрок сделал ствку больше чем есть в банке.

if st>strtoint(l4.caption) then

begin

// Выводится соответственное сообщение и программка выходит из процедуры.

messagedlg(‘В долг играться недозволено‘,mterror,[mbok],0);

edit2.SetFocus;

exit;

end;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// «Прячем» составляющие для вывода иллюстраций.

image1.Visible:=false;

image2.Visible:=false;

// «Показываем» составляющие (экраны) для вывода AVI-файлов.

panel1.Visible:=true;

panel2.Visible:=true;

// Открываем медиаплейеры и проигрываем AVI-файлы.

// Не предусматриваем исключения т.к. предусмотрели при закрытии

// формы для ввода путей к AVI — файлам.

mp1.Open;

// Задаём размеры области вывода AVI-файла.

mp1.DisplayRect:=rect(0,0,105,105);

// проигрывание

mp1.Play;

mp2.Open;

// Задаём размеры области вывода AVI-файла.

mp2.DisplayRect:=rect(0,0,105,105);

// проигрывание

mp2.Play;

// Устанавливаем задержку выполнения программки.

// Что-бы проиграть AVI-файл.

sleep(700);

// «Прячем» составляющие (экраны) для вывода AVI-файлов.

panel1.Visible:=false;

panel2.Visible:=false;

// «Показываем» составляющие для вывода иллюстраций.

image1.Visible:=true;

image2.Visible:=true;

// Включаем генератор случайных чисел.

randomize;

// «Бросаем» кубики.

// Присваеваем подходящим переменным функцию random(6) и прибавляем 1.

k1:=random(6)+1;

k2:=random(6)+1;

// Заносим в переменную сумму цифр костей.

sum:=k1+k2;

// Создаём битовый образ для вывода изображения первого кубика.

r1:=tbitmap.Create;

// Загружаем картину из файла ресурсов.

// имя рисунка указываем с учётом выпавшей числа.

r1.LoadFromResourceName(hinstance,’b’+inttostr(k1));

// Выводим картину.

image1.Canvas.Draw(0,0,r1);

// Создаём битовый образ для вывода изображения второго кубика.

r2:=tbitmap.Create;

// Загружаем картину из файла ресурсов.

// имя рисунка указываем с учётом выпавшей числа.

r2.LoadFromResourceName(hinstance,’b’+inttostr(k2));

// Выводим картину.

image2.Canvas.Draw(0,0,r2);

{=========================================================}

// Последующая часть программки описывает проиграл либо выиграл игрок.

// А так же величину выигрыша либо проигрыша.

// Если загаданное число равно сумме выпавших костей.

if sum=chislo then

begin

// Ставку увеличиваем в 4 раза, прибавляем к имеющимся очкам в банке.

bank:=strtoint(l4.caption)+4*st;

// В поле для вывода кол-ва глаз заносим теперешнее

l4.Caption:=inttostr(bank);

// В метку для вывода инфы

// выводим сообщение о выигрыше и его кол-во.

l5.Caption:=’Неописуемо!!! Вы угадали!!!’+#13+

‘Выигрыш — ‘+inttostr(4*st);

end

else

// Следуюшее условие. Если и загаданное число и сумма цифр 2-ух

// костей сразу больше либо меньше 7.

if (chislo<7) and (sum<7) or (chislo>7) and (sum>7) then

begin

// Ставку прибавляем к имеющимся очкам в банке.

bank:=strtoint(l4.caption)+st;

// В поле для вывода кол-ва глаз заносим теперешнее

l4.Caption:=inttostr(bank);

// В метку для вывода инфы

// выводим сообщение о выигрыше и его кол-во.

l5.Caption:=’Вы выиграли — ‘+inttostr(st)+#13+

‘Для вас определённо везёт!’;

end

else

// Все другие ситуации — проигрышные.

begin

// От имеющихся глаз в банке отнимаем ставку.

bank:=strtoint(l4.caption)-st;

// В поле для вывода кол-ва глаз заносим теперешнее

l4.Caption:=inttostr(bank);

// В метку для вывода инфы

// выводим сообщение о проигрыше и его кол-во.

l5.Caption:=’Вы проиграли — ‘+inttostr(st)+#13+

‘Попытайтесь ещё!’;

end;

// Определение победы либо поражения в игре.

// Если кол-во глаз в банке игрока превосходит 1000, игрок одолел.

if strtoint(l4.caption)>=1000 then

// При помощи диалогового окна с одной клавишей

// выводим сообщение о победе в игре.

begin

messagedlg(‘ Вы обанкротили казино!!!’+#13+

‘Вы сможете начать поновой.’,mtcustom,[mbok],0);

// Свойству «доступность» клавиши и пт меню ‘Играться’

// присваеваем

n3.Enabled:=false;

button1.Enabled:=false;

end;

// Если кол-во глаз в банке игрока равно 0, игрок проиграл.

// Заметим, что кол-во глаз в банке не быть может отрицательным,

// т.к. игрок не может поставить больше чем есть в банке,

// потому не используем символ ‘<=’.

if strtoint(l4.caption)=0 then

// выводим сообщение о поражении в игре.

begin

messagedlg(‘ Вы банкрот.’+#13+

‘ Начните поновой либо уходите побеждённым’,mtcustom,[mbok],0);

// Свойству «доступность» клавиши и пт меню ‘Играться’

// присваеваем

n3.Enabled:=false;

button1.Enabled:=false;

// Для пробуждения азарта у игрока свойству Caption клавиши и

// пт меню ‘Выход’ присваеваем не поднимающее дух выражение.

n6.Caption:=’уйти побеждённым’;

button3.Caption:=’ Уйти побеждённым’;

end;

edit1.SetFocus;

end;

{=========================================================}

procedure TForm1.FormActivate(Sender: TObject);

// Операторы, которые делает программка при активации формы.

begin

// «прячем» составляющие (экраны) для вывода AVI-файлов.

panel1.Visible:=false;

panel2.Visible:=false;

// Создаём битовый образ.

baks:=tbitmap.Create;

// Загружаем картину из файла ресурсов.

baks.LoadFromResourceName(hinstance,’baks’);

// Для прекрасного дизайна в составляющие для вывода иллюстраций, пока,

// до хода игрока, выводим набросок.

image1.Canvas.Draw(0,0,baks);

image2.Canvas.Draw(0,0,baks);

// В метку для вывода сообщений о выигрыше либо проигрыше выводим пожелание.

l5.Caption:=’ Фортуны!!!’;

// Т.к. во время выполнения изменяются надписи на кнопочке и пт меню

//’Выход’, и в предстоящем нам понадобится эта процедура присвоим

//»обычные» надписи.

button3.Caption:=’Выход’;

n6.Caption:=’Выход’;

// По той же причине

n3.Enabled:=true;

button1.Enabled:=true;

// Присвоим нулевые значения полям для ввода числа и ставки

// и стартовое

edit1.Text:=»;

edit2.Text:=»;

l4.Caption:=’100′;

end;

procedure TForm1.Button2Click(Sender: TObject);

// Клик на кнопочке ‘Поновой’.

begin

// нужно начать игру с начала для этого просто вызовем функцию:

FormActivate(Sender)

end;

procedure TForm1.Button4Click(Sender: TObject);

// Клик на кнопочке ‘Ва-приложение.

begin

// Обычное Windows-кое окно с 2-мя клавишами (надписи на российском).

if MessageBox(Form1.Handle,

PChar(‘Желаете выйти?’),

PChar(‘кости‘), 4)=mrYes then

// Клик на кнопочке ‘Да’

begin

// Параметру процедуры FormClose присваемваем

// (высвободить) закрыть.

action:=cafree;

// недозволено запамятовать про спрятавшееся окно Aboutbox2

// если его не закрыть «от него» не освободится оперативная память.

aboutbox3.close;

end

else

// По другому (клик на кнопочке ‘нет’)

// Параметру процедуры FormClose присваемваем

// ничего не созодать.

action:=canone;

end;

procedure TForm1.Button3Click(Sender: TObject);

// Клик на кнопочке ‘Выход’.

begin

// Вызываем функцию закрытия формы.

close

end;

procedure TForm1.N6Click(Sender: TObject);

// Клик на пт меню ‘Выход’.

begin

// Вызываем функцию закрытия формы.

close

end;

procedure TForm1.N3Click(Sender: TObject);

// Клик на пт меню ‘Играться’

// Дублирует клавишу ‘Играться’.

begin

// Вызываем функцию обработки действия Onclick клавиши ‘Играться’.

button1.Click

end;

procedure TForm1.N4Click(Sender: TObject);

// Клик на пт меню ‘Поновой’

// Дублирует клавишу ‘Поновой’.

begin

// Вызываем функцию обработки действия Onclick клавиши ‘Поновой’.

button2.Click

end;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Последующие процедуры обрабатывают действия MouseMove на различных компонентах,

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

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

button1.Default:=true;

end;

procedure TForm1.Button2MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

Button2.Default:=true;

end;

procedure TForm1.Button3MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

Button3.Default:=true;

end;

procedure TForm1.Button4MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

Button4.Default:=true;

end;

procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

edit1.Color:=clyellow;

end;

procedure TForm1.Edit2MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

edit2.Color:=clred;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

// движение указателя мыши на форме возвращает наружный вид компонент.

begin

button1.Default:=false;

button2.Default:=false;

button3.Default:=false;

button4.Default:=false;

edit1.Color:=clwindow;

edit2.color:=clwindow;

end;

end.


1
Macromedia FlashMX Professional 2004 — это встроенная среда разработки

управляемых данными приложений, интерактивных презентаций и видеоматериалов


1
Такового неудобства для юзера, как ввод пути к AVI-файлам, можно просто избежать при помощи программки сотворения установочных дисков, к примеру — InstallShield Express. Но это выходит за рамки этого курсового проекта.


1
Культин Н. Базы программирования в Delphi 7; издательство БХВ-Петербург, 2003 г. Страничка 1.

]]>