Алгоритм решения задачи
Структура программы
Программа состоит из 27 файлов. Основным файлом является файл Igra.pas к нему подключены остальные файлы, к которым в свою очередь подключены другие. Проще это подключение представить на графической схеме (рис.3).
Процедуры и функции
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-файла}
Популярное: Почему стероиды повышают давление?: Основных причин три... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (161)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |