Учебная работа. Курсовая работа: Игра Tetris

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

Учебная работа. Курсовая работа: Игра Tetris

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ технический

УНИВЕРСИТЕТ им. Н.Э. БАУМАНА

КАЛУЖСКИЙ ФИЛИАЛ

КАФЕДРА ЭИУ2-КФ

«КОМПЬЮТЕРНЫЕ системы И СЕТИ»

КУРСОВАЯ РАБОТА

по курсу “Разработка программирования”

«Игра Tetris»




Введение

Игры – обязательная составляющая хоть какой людской культуры. слово «игра» мы прилагаем практически ко всякому детскому занятию. Средством игры более активно развивается целостное восприятие мира вокруг нас, наглядно-образное мышление, творческое воображение. Потому не считая программ, которые упрощают людям работу, программеры выдумали интересное развлечение-компьютерные игры. Поначалу в эти игры игрались лишь они сами, но весьма скоро их эстафету приняли детки и взрослые по всему миру. на данный момент уже тяжело отыскать человека, имеющего комп и никогда не игравшего в компьютерные игры.

В 1977г. Atari выпустила 2600 VCS, первую игровую приставку с несколькими играми. Ее технические свойства по сегодняшним временам могут вызвать лишь ухмылку, но по тем временам два кб ПЗУ и 128 б ОЗУ были полностью достаточны, чтоб обеспечить большой коммерческий фуррор. А далее все помчалось с неописуемой скоростью, как лавина по склону горы. В 1977 году КомпанияApple начала реализации Apple II, в 1978 знаменитейшая игра Space Invaders родилась все в той же японской фирме Taito, а в 1979 разрабами из Atari базирована КомпанияActivision. Тогда же возникла Atari 800, где в первый раз был задействован восьмибитный машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) (либо вычислительной системы) которое делает арифметические и логические операции данные программкой преобразования инфы управляет вычислительным действием и коор.Восьмидесятые, а поточнее, самое их начало, весьма и весьма стремительно проявили, что время компьютерных игр пришло серьезно и навечно. Phillips, подключившись ко всеобщей гонке, делает Odyssey2, Mattel выпускает Intellivision, хотя и с наилучшей графиков, но очень стршным устройством управления. Namco изобретает игру, дожившую до наших дней фактически без конфигураций: величавый Pac-Man, и по сей денек часто реализуемый на различных платформах и в различных видах.

Промышленность в эти годы благополучно взяла большой предел: больше 1-го млрд баксов (а если перечесть эту цифру на современные баксы, получится около 2-ух с половиной млрд). Продано было около 300000 приставок и игральных автоматов.

Atari не стояла на месте и изобрела Asteroids, ну и в других жанрах застоя не намечалось: в приключенческих играх родился традиционный текстовый квест от Infocom под заглавием Zork (потом переросший в серию), ну и 1-ая игра из серии Ultima вышла все в том же 1980…

А на последующий год бум достигнул совершенно немыслимого размаха. Продаж уже больше 6 млрд баксов, игры так и сыпались: Donkey Kong от Nintendo, Galaxian, Centipede, Tempest, сестричка Pac-Man’а по имени Ms.Pac-Man.

И все в том же 1981 вышло не очень приметное сначала, зато потом на сто процентов перевернувшее мир, событие: IBM в первый раз представила публике IBM PC.

И помчалось… Да как помчалось. Мгновенно стали создаваться компании, направленные только на домашние компы: Sierra On-Line, Broderbund, BudgeCo, Electronic Arts.

А в 1983 году всех ожидал суровейший кризис, продлившийся несколько лет. Компания Mattel растеряла на Intellivision 225 миллионов баксов, столько, сколько ей удалось заработать за все прошлые четыре года. Atari тоже столкнулась с суровыми финансовыми неуввязками. Coleco совершенно упала. К 1984 году общий размер игровой промышленности составлял всего около 800 миллионов баксов.

правда, невзирая на печальные условия, рождались и шедевры, ставшие чуток позже основой для новейшего подъема. к примеру, Commodore 64, легкий домашний комп, проданный в количестве около 20 миллионов штук.

А все в том же, богатом на сенсации, 1984 году Apple в первый раз представила народу Macintosh, и за 1-ые 6 месяцев продала 100 тыщ штук. Sierra On-Line выпустила первую игру из серии King’s Quest, сохранившей популярность и до сего времени.

1986 год до сего времени почти все вспоминают с теплым, хотя и печальным, чувством: конкретно тогда возникла «подружка» (Amiga на испанском языке), выпущенная компанией Commodore. Восхитительная машина, разработанная инженером из Atari Джеем Майнером (Jay Miner), была умопомрачительно сильной и напичканной новаторскими мыслями, но плохой правда, в крайнее время прогуливаются слухи о оживлении данной для нас марки, но получится ли чего-нибудть – пока непонятно.

время шло, компы потихоньку становились все сильнее, игры все привлекательнее, кое-где года с 1987 на IBM PC стали появляться игры, похожие на нынешние, именно в этот момент начал обширно применяться начал двигаться» бум и в играх для PC и в приставках. например, одна лишь компания Nintendo в 1992 году продала продукта на 7 млрд баксов (из их 4,7 млрд лишь в США

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

Данная курсовая работа производится в рамках предмета «Разработка программирования» и в связи с сиим хотелось бы в нескольких словах (из-за ограничения по размеру) отметить значимость данного предмета в ежедневной жизни.

Если ещё сначала прошедшего века присутствовали консерватизм и недоверие к техническим новаторствам, то в наши деньки мы лишь радуемся техническим новинкам, от мобильников до стиральных машин. на данный момент уже вовсю применяется «безлюдная разработка»-замена живого труда и относительно обычных устройств сложнейшими автоматами. сходу же охото предостеречь от узенького толкования слова «разработка» как метода организации производства на заводах. естественно, прогресс в технологии производства упрощает труд и увеличивает его производительность. Но в рамках данной курсовой работы нас интересует разработка научного поиска и опыта, разработка проектирования и, естественно, неувязка взаимодействия человека и ЭВМ .



1. Экспериментальная часть

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




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


1.2 Обзор подобных товаров

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

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


1.3 Описание игры

Данная игра графически реализует всем известную задачку по перемещению волка, козы и капусты с 1-го на иной сберегал. Её правила весьма ординарны: сразу на одном берегу без присмотра лодочника не может находиться волк с козой и коза с капустой. В лодке, не считая лодочника, может находиться лишь волк, коза либо капуста. Как волк, коза и капуста оказались на другом берегу, задачка является выполненной.


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

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

программка именуется «TETRIS», является традиционной версией российскей игры ТЕТРИС.[1] программка написана в встроенной среде Borland Delphi 7. Для её компиляции требуется транслятор с этого языка и ОС Windows 95/NT. Техно документация написана с внедрением программного продукта Microsoft WordXP.

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

Программка была написана и откомпилирована на компе со последующей конфигурацией PentimIII 500/128MbRAM/32MbVRAM/MSWindows 98.

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

Клавиши: «RIGHT», «LEFT», «UP» либо «ESC» — вводимые в процессе игры в режиме настоящего времени. Данные переменные организованы в виде символьных переменных.

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

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

5.Выводы по задачке.

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



2. Описание программки
2.1 Решение поставленной задачки

Главной неувязкой в решении данной для нас задачки являлся вывод графики в Паскале.

Для построения изображений на дисплее употребляется система координат. Отсчет начинается от верхнего левого угла экрана, который имеет координаты (0,0).

Изображение фона мы получили из Bmp-файла, из таковых же файлов взят, курсор мыши и элементы интерфейса. сейчас нужно верно считать Bmp-файлы и перевернуть картину «с головы на ноги».

По решению разрабов формат Bmp-файла не привязан к определенной аппаратной платформе. Этот файл состоит из 4 частей: заголовка, информационного заголовка, таблицы цветов (палитры) и данных изображения. Если в файле хранится изображение с глубиной цвета 24 бита (16 млн. цветов), то таблица цветов может отсутствовать, но в нашем, 256-цветном случае она есть. Структура каждой из частей файла, хранящего 256-цветное изображение, дана в таблице 1.


структура Bmp-файла

Имя
Длина
Смещение
Описание

Заголовок файла (BitMapFileHeader)

Type
2
0
Сигнатура «BM»

Size
4
2
Размер файла

Reserved 1
2
6
Зарезервировано

Reserved 2
2
8
Зарезервировано

OffsetBits
4
10
Смещение изображения от начала файла

Информационный заголовок (BitMapInfoHeader)

Size
4
14
Длина заголовка

Width
4
18
Ширина изображения, точки

Height
4
22
Высота изображения, точки

Planes
2
26
Число плоскостей

BitCount
2
28
Глубина цвета, бит на точку

Compression
4
30
Тип компрессии (0 — несжатое изображение)

SizeImage
4
34
Размер изображения, б

XpelsPerMeter
4
38
Горизонтальное разрешение, точки на метр

YpelsPerMeter
4
42
Вертикальное разрешение, точки на метр

ColorsUsed
4
46
Число применяемых цветов (0 — очень вероятное для данной глубины цвета)

ColorsImportant
4
50
Число главных цветов

Таблица цветов (гамма) (ColorTable)

ColorTable
1024
54
256 частей по 4 б

Данные изображения (BitMap Array)

Image
Size
1078
Изображение, записанное по строчкам слева вправо и снизу ввысь

Заголовок файла начинается с сигнатуры «BM», а потом идет длина файла, выраженная в б. Последующие 4 б зарезервированы для последующих расширений формата, а завершается этот заголовок смещением от начала файла до записанных в нем данных изображения. При 256 цветах это смещение составляет 1078.

Информационный заголовок начинается с своей длины (она может изменяться, но для 256-цветного файла составляет 40 б) и содержит размеры изображения, разрешение, свойства представления цвета и остальные характеристики.

Ширина и высота изображения задаются в точках растра и пояснений, пожалуй, не требуют.

количество плоскостей могло применяться в файлах, имеющих маленькую глубину цвета. При числе цветов 256 и больше оно постоянно равно 1.

Глубина цвета считается важной чертой метода представления цвета в файле и измеряется в битах на точку. В данном случае она равна 8.

Компрессия. В Bmp-файлах обычно не употребляется, но поле в заголовке для нее предвидено. Обычно она равна 0, и это значит, что изображение не сжато.

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

Горизонтальное и вертикальное разрешения измеряются в точках растра на метр. Они в особенности важны для сохранения масштаба отсканированных картинок. Изображения, сделанные при помощи графических редакторов, как правило, имеют в этих полях нули.

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

Число главных цветов — идет с начала палитры, и его лучше выводить без искажений. Данное поле бывает принципиально тогда, когда наибольшее число цветов монитора было меньше, чем в гамме Bmp-файла. При разработке формата, разумеется, принималось, что более нередко встречающиеся цвета будут размещаться сначала таблицы. На данный момент этого требования фактически не придерживаются, т. е. цвета не упорядочиваются по частоте, с которой они встречаются в файле. Это весьма принципиально, так как палитры 2-ух различных файлов, даже составленных из одних и тех же цветов, содержали бы их (цвета) в разном порядке, что могло значительно осложнить одновременный вывод таковых изображений на экран.

За информационным заголовком следует таблица цветов, представляющая собой массив из 256 (по числу цветов) 4-байтовых полей. Каждое поле соответствует собственному цвету в гамме, а три б из 4 — компонентам голубой, зеленоватой и красноватой составляющих для этого цвета. Крайний, самый старший б всякого поля зарезервирован и равен 0.

Опосля таблицы цветов находятся данные изображения, которое по строчкам растра записано снизу ввысь, а снутри строчки — слева вправо. Потому что на неких платформах нереально считать единицу данных, которая меньше 4 б, длина каждой строчки выровнена на границу в 4 б, т. е. при длине строчки, некратной четырем, она дополняется нулями. Это событие непременно нужно учесть при считывании файла, хотя, может быть, лучше заблаговременно позаботиться, чтоб горизонтальные размеры всех изображений были кратны 4.

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


2.2 метод решения задачки


2.3 Структура
программки

Программка состоит из 27 файлов. Главным файлом является файл Igra.pas к нему подключены другие файлы, к которым в свою очередь подключены остальные. Проще это подключение представить на графической схеме (рис.3).


2.4 Процедуры и функции

function Clock {время, прошедшее с пуска программки в 1/18 с}

procedure ResetTime; {сброс всех показаний времени в 0}

function GetFPS {текущее число кадров в секунду нужно вызывать 1 раз в любом кадре}

function Clock {время, прошедшее с пуска программки в 1/18 c}

procedure ResetTime; {сброс всех показаний времени в 0}

function GetFPS : single;

{текущее число кадров за секунду}

procedure SetTextParm {установка характеристик вывода текста}

{color- цвет текста}

{bkcolor- цвет фона}

{typetext = 0 — прозрачный фон}

{typetext = 1 — непрозрачный фон }

procedure GetTextParm (var color,bkcolor,typetext:byte); { запростекущихпараметров }

procedure PutText (x,y:Word;text:string); {выводтекстапокоординатам x,y (верхнийлевыйугол)}

procedure PutChar (x,y:Word;chr:char); {выводсимволапокоординатам x,y (верхнийлевыйугол)}

procedure PutPixel (x,y:Word;c:byte); {выводточки}

functiongetpixel (x,y:word):byte; {запросцветаточки}

procedure PutPixel (x,y:Word;c:byte); {выводточки}

function getpixel (x,y:word):byte; {запросцветаточки}

procedure PutPixel (x,y:Word;c:byte); {выводточки}

function getpixel (x,y:word):byte; {запросцветаточки}

procedure GetBuffer (Sprite:SpriteType); {сохранениефонаподспрайтомвбуфере}

procedure PutBuffer (Sprite:SpriteType); {восстановлениефона}

procedure PutSprite (Sprite:SpriteType); {выводспрайтанаэкран}

procedure CreateSprite (s:string; x,y,dx, dy:integer; var Sprite:SpriteType); {«создание» спрайта}

procedure DestroySprite (Sprite:SpriteType); {«ликвидирование» спрайта}

procedure CalcSpritePosition (var Sprite:SpriteType); {вычислениеновыхкоординатспрайта}

procedure PutBackground (s:string); {созданиефонанаэкране}

procedure CreateScreenBuffer; {созданиеэкранногобуфера}

procedure DestroyScreenBuffer; {уничтожениеэкранногобуфера}

procedure ScreenBufferToScreen; {отображениебуферанаэкран}

procedure CreateScreenBuffer; {созданиеэкранногобуфера}

procedure DestroyScreenBuffer; {уничтожениеэкранногобуфера}

procedure ScreenBufferToScreen; {отображениебуферанаэкран}

procedure GetBuffer (Sprite:SpriteType); {сохранениефонаподспрайтомвбуфере}

procedure PutBuffer (Sprite:SpriteType); {восстановлениефона}

procedure PutSprite (Sprite:SpriteType); {выводспрайтанаэкран}

procedure CreateSprite {«создание» спрайта}

procedure DestroySprite (Sprite:SpriteType); {«ликвидирование» спрайта}

procedure CalcSpritePosition (var Sprite:SpriteType);

procedure PutBackground (s:string); {созданиефонанаэкране}

procedure SetPal (var pal:byte;nbegpal,lenpal:integer); {установка 256-цветнойпалитры}

procedure GetPal (var pal:byte;nbegpal,lenpal:integer); {чтение 256-цветнойпалитры}

procedure WaitVerticalRetrace; {ожидание вертикально оборотного хода луча}

procedure BlackPal; {установка «темной» палитры}

procedure FadeOut (p:array of byte); {плавноегашениепалитры}

procedure FadeIn (p:array of byte); {плавнаяустановкапалитры}

procedure SetPal (var pal:byte;nbegpal,lenpal:integer); {установка 256-цветнойпалитры}

procedure GetPal (var pal:byte;nbegpal,lenpal:integer); {чтение 256-цветнойпалитры}

procedure WaitVerticalRetrace; {ожидание вертикально оборотного хода луча}

procedure BlackPal; {установка «темной» палитры}

procedure FadeIn (p:array of byte); {плавная установка палитры}

procedure FadeOut (p:array of byte); {плавное гашение палитры}

Function IsMouse: Boolean; {Возвращает TRUE, если мышь доступна}

Function InitMouse: Boolean; {Инициациямыши}

Procedure SetMousePage (Page: Byte); {Устанавливает страничку для указателя мыши}

Function GetMousePage: Byte; {Возвращает номер странички с указателем}

Procedure SetStepToPixel (Hor,Ver: Integer); {Устанавливает чувствительность мыши}

Procedure GetStepToPixel (var Hor,Ver: Integer); {Возвращает чувствительность мыши}

Procedure SetDoubleSpeed (Speed: Word); {Устанавливает порог удвоения скорости перемещения указателя}

Function GetDoubleSpeed: Word; {Возвращает порог удвоения скорости}

Function MouseTextCooX (X: Integer): Byte; {Возвращает текстовую координату по данной виртуальной}

Function MouseTextCooY (Y: Integer): Byte; {Возвращает текстовую координату по данной виртуальной}

Function MouseGraphCooX (X: Byte): Integer; {Возвращает виртуальную координату по данной текстовой}

Function MouseGraphCooY (Y: Byte): Integer; {Возвращает виртуальную координату по данной текстовой}

Procedure MouseWhereXY (var X,Y: Integer); {Возвращает виртуальные координаты мыши}

Procedure MouseGotoXY (X,Y: Integer); {Переводит указатель мыши в новое положение

X,Y — виртуальные координаты}

Function MouseWhereX: Byte; {Возвращает горизонтальную текстовую координату}

Function MouseWhereY: Byte; {Возвращает вертикальную текстовую координату}

Function MouseIn (X1,Y1,X2,Y2: Integer): Boolean; {Возвращает TRUE, если указатель находится

в данном прямоугольнике}

Function NumButton: Byte; {Возвращает количество клавиш мыши}

Procedure GetMouseState (var Butt,X,Y: Integer);

{Возвращает текущее состояние мыши:

BUTT — флаг состояния клавиш;

X,Y- текущие виртуальные координаты}

Function MousePressed: Boolean;

{Возвращает TRUE, если нажата неважно какая клавиша}

Procedure MouseButtPressed (Butt: Integer;

var Stat,Count,X,Y: Integer);

{Возвращает информацию о нажатой клавише:

BUTT — флаг выбора клавиши;

STAT — состояние кнопок;

COUNT — количество нажатий, X,Y — координаты}

Procedure MouseButtReleased (Butt: Integer;

var Stat,Count,X,Y: Integer);

{Возвращает информацию о отпущенной клавише:

BUTT — флаг выбора клавиши;

STAT — состояние кнопок;

COUNT — количество отпусканий;

X,Y — координаты}

Procedure MouseWindow (X1,Y1,X2,Y2: Integer);

{Задает координаты области перемещения

указателя. X1…Y2 — виртуальные координаты}

Procedure MouseScreen; {Устанавливает окно во весь экран}

Procedure ShowMouse; {Показать указатель мыши}

Procedure HideMouse; {Убратьуказательмыши}

Procedure MouseTextCursor (ScrMask,CurMask: Word);

{Устанавливает новейший вид текстового указателя}

Procedure MouseBlink (YUp,YDn: Byte);

{Задает аппаратный курсор подходящего размера}

Procedure MouseGraphCursor (var ScrCurMask;X,Y: Byte);

{Задаетвидграфическогоуказателя}

Function MouseBuffSize: Word;

{Возвращает длину буфера для сохранения характеристик}

Procedure SaveMouse (var Buff);

{Сохраняет в буфере текущее состояние мыши}

Procedure RestoreMouse (var Buff);

{Восстанавливает сохраненное состояние мыши}

Procedure SetMouseItem (NItem: Byte; var Items);

{Устанавливает элементы для выбора мышью:

NItem — количествоэлементов;

Items — array [1..NItem] of MouseItemType;

Старыеустановкисбрасываются}

Procedure AddMouseItem (Item: MouseItemType);

{Добавляет еще один элемент для выбора мышью.

Старенькые установки сохраняются}

Procedure ClearMouseItems;

{Сбрасывает ранее установленные элементы}

Procedure GetMouseItem (var NItem: Byte; var Items);

{Возвращает установленные элементы}

Function KeyOrMousePressed: Boolean;

{Возвращает TRUE, если нажата кнопка либо активна мышь}

Function ReadKeyOrMouse: Char;

{Возвращает знак нажатой клавиши либо избранной функции}

Procedure SetMouseHandler (Mask: Word; Proc: MouseHandlerType);

{Устанавливает адресок и условия вызова обработчика}

Procedure ChangeMouseHandler (Mask: Word;Proc: MouseHandlerType;

var OldMask: Word; var OldProc: Pointer);

Procedure ClearMouseHandler; {Удаляетобработчиксобытий}

Function IsMouse: Boolean; {Возвращает TRUE, еслимышьдоступна}

Function InitMouse: Boolean; {Инициациямыши}

Procedure SetMousePage (Page: Byte); {Устанавливает страничку для указателя мыши}

Function GetMousePage: Byte; {Возвращает номер странички с указателем}

Procedure SetStepToPixel (Hor,Ver: Integer); {Устанавливает чувствительность мыши}

Procedure GetStepToPixel (var Hor,Ver: Integer); {Возвращает чувствительность мыши}

Procedure SetDoubleSpeed (Speed: Word);

{Устанавливает порог удвоения скорости перемещения указателя}

Function GetDoubleSpeed: Word;

{Возвращает порог удвоения скорости}

Function MouseTextCooX (X: Integer): Byte;

{Возвращает текстовую координату по данной виртуальной}

Function MouseTextCooY (Y: Integer): Byte;

{Возвращает текстовую координату по данной виртуальной}

Function MouseGraphCooX (X: Byte): Integer;

{Возвращает виртуальную координату по данной текстовой}

Function MouseGraphCooY (Y: Byte): Integer;

{Возвращает виртуальную координату по данной текстовой}

Procedure MouseWhereXY (var X,Y: Integer);

{Возвращаетвиртуальныекоординатымыши}

Procedure MouseGotoXY (X,Y: Integer);

{Переводит указатель мыши в новое положение

X,Y — виртуальные координаты}

Function MouseWhereX: Byte;

{Возвращает горизонтальную текстовую координату}

Function MouseWhereY: Byte;

{Возвращает текстовую координату по вертикали}

Function MouseIn (X1,Y1,X2,Y2: Integer): Boolean;

{Возвращает TRUE, если указатель находится

в данном прямоугольнике}

Function NumButton: Byte;

{Возвращает количество клавиш мыши}

Procedure GetMouseState (var Butt,X,Y: Integer);

{Возвращает текущее состояние мыши:

BUTT — флаг состояния клавиш;

X,Y- текущие виртуальные координаты}

Function MousePressed: Boolean;

{Возвращает TRUE, если нажата неважно какая клавиша}

Procedure MouseButtPressed (Butt: Integer;

var Stat,Count,X,Y: Integer);

{Возвращает информацию о нажатой клавише:

BUTT — флаг выбора клавиши;

STAT — состояние кнопок;

COUNT — количество нажатий, X,Y — координаты}

Procedure MouseButtReleased (Butt: Integer;

var Stat,Count,X,Y: Integer);

{Возвращает информацию о отпущенной клавише:

BUTT — флаг выбора клавиши;

STAT — состояние кнопок;

COUNT — количество отпусканий;

X,Y — координаты}

Procedure MouseWindow (X1,Y1,X2,Y2: Integer);

{Задает координаты области перемещения указателя.

X1…Y2 — виртуальныекоординаты}

Procedure MouseScreen;

{Устанавливает окно во весь экран}

Procedure ShowMouse;

{Показать указатель мыши}

Procedure HideMouse;

{Убратьуказательмыши}

Procedure MouseTextCursor (ScrMask,CurMask: Word);

{Устанавливает новейший вид текстового указателя}

Procedure MouseBlink (YUp,YDn: Byte);

{Задает аппаратный курсор подходящего размера}

Procedure MouseGraphCursor (var ScrCurMask;X,Y: Byte);

{Задаетвидграфическогоуказателя}

Function MouseBuffSize: Word;

{Возвращает длину буфера для сохранения характеристик}

Procedure SaveMouse (var Buff);

{Сохраняет в буфере текущее состояние мыши}

Procedure RestoreMouse (var Buff);

{Восстанавливает сохраненное состояние мыши}

Procedure SetMouseItem (NItem: Byte; var Items);

{Устанавливает элементы для выбора мышью:

NItem — количествоэлементов;

Items — array [1..NItem] of MouseItemType;

Старыеустановкисбрасываются}

Procedure AddMouseItem (Item: MouseItemType);

{Добавляет еще один элемент для выбора мышью.

Старенькые установки сохраняются}

Procedure ClearMouseItems;

{Сбрасывает ранее установленные элементы}

Procedure GetMouseItem (var NItem: Byte; var Items);

{Возвращает установленные элементы}

Function KeyOrMousePressed: Boolean;

{Возвращает TRUE, если нажата кнопка

клавиатуры либо клавиша мыши}

Function ReadKeyOrMouse: Char;

{Возвращает знак нажатой клавиши либо избранного элемента}

Procedure MouseHandler; Far; Assembler;

{Ассемблерный интерфейс для вызова обработчика}

Procedure SetMouseHandler (Mask: Word; Proc: MouseHandlerType);

{Устанавливает адресок и условия вызова обработчика}

Procedure ChangeMouseHandler (Mask: Word;

Proc: MouseHandlerType; var OldMask: Word; var OldProc: Pointer); {Заменяетстарыйобработчикновым}

Procedure ClearMouseHandler; {Удаляетобработчиксобытий}

function vihod:boolean;

{проверка избран либо нет и клик мышки на надписи»ВЫХОД» }

procedure ReadBMP {чтение изображения из Bmp-файла}

procedure ReadBMPheader (header:bmhptr;filename:string);

{чтениезаголовка Bmp-файла}

procedure ReadBMP (image:arptr; var xim,yim:Word;

pal:arptr; filename:string); {чтениеизображенияиз Bmp-файла}

procedure ReadBMPheader (header:bmhptr;filename:string); {чтениезаголовка Bmp-файла}



3. Управление юзеру
3.1 Системные требования

программка запускается под управлением операционной системы MS Windows, начиная с версии NT/95. Для её работы требуется от 16 мб оперативки,
3.2 Предназначение программки

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


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

Пуск программки осуществляется при открытии файла igra.exe из каталога. При запуске игры возникает последующее меню:

Управление игрой осуществляется с помощью мышки. При выбирании пт «Помощь» выдается короткая справка, объясняющая правила игры. При помощи пт «Фавориты» вы сможете изучить перечень фаворитов. Пункт «Старт игры производит её пуск», и юзер лицезреет последующую картину

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

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

По окончанию ввода нужно надавить кнопку ENTER.


3.4 Технико-экономические характеристики

Приблизительная финансовая эффективность, достоинства по сопоставлению с аналогами, т.к. разработана в современной среде программирования.


3.5 Настройка программки

программка готова к работе, опции не просит.


Заключение

В данной работе были обширно применены способы ООП. Это позволило отлично структурировать программку и облегчило ее написание. Употребляются все три характеристики ООП — инкапсуляция, наследование, полиморфизм. Высочайшая структурированность программки сделала ее довольно прозрачной для внесения конфигураций и дополнений, в нее просто добавить еще несколько процедур для улучшения интеллектуальности игры (на данный момент на местах, где должны вызываться некие из этих процедур стоят программные заглушки, они все снабжены комментами и при желании их можно снять и дописать надлежащие процедуры)

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



Перечень применяемой литературы

1. Зуев. язык программирования Turbo Pascal 6.0.- М.: Унитех, 1992.- 298 с.

2. Довгаль С.И., Сбитнев А.И. Индивидуальные ЭВМ : Турбо — Паскаль V 7.0, Объектное программирование.- Киев: Довгаль,1995. — 320 с.

3. Епаншенков А.М., Епаншенков В.А. Программирование в среде TURBOPASCAL 7.0.- М.: Диалог — МИФИ, 1996.- 288 с.

4. Турбо Паскаль 7.0 — К.: Торгово — издательское бюро BHV, 1995 — 448 с.

5. История компьютерных игр (internet версия).

]]>