Метод
|
Аргументы
|
Возвращаемое
значение
|
Описание
|
SetName
|
Name: string
|
-
|
Задает
имя игрока.
|
SetLife
|
Life: integer
|
-
|
Задает
уровень жизни игрока переданный в качестве аргумента.
|
SetColor
|
Color: System.Drawing.Color
|
-
|
Задает
цвет имени игрока.
|
LifeInit
|
-
|
-
|
Задает
определенный (не изменяемый) уровень здоровья для игрока.
|
Контрольный пример
При запуске игры пользователю предлагается
начать игру или выйти.
Рис.
После нажатия кнопки «начать», можно наблюдать
появление графических объектов, таких как: 2 башни, информационное табло с
именем игрока, кто должен атаковать, время выделяемое на ход, 2 индикатора
силы, необходимые для задания скорости полета снаряда и 2 кнопки: рестарт -
перезагрузить игру и выход. Имя игрока пишется на индикаторе силы. Количество
жизней башни отображается на ней же.
Рис.
На рисунке 10 и 11 показано, изменения угла
орудия. Угол меняется на левую и правую стрелку, на клавиатуре.
Рис.
Рис.
На рисунке 11 и 12 показан индикатор скорости
полета снаряда. Увеличение скорости происходит по нажатию «стрелки вверх»,
уменьшение «стрелки вниз», на клавиатуре.
Рис.
Запуск снаряда производится на клавишу Enter.
Также в зависимости от количества жизней башни, отображается соответствующая
картинка с трещинами разрушения. Рисунок 13 и 14 наглядно это демонстрирует.
Рис.
Рис.
После победы одного из игроков, на экран
выводится поздравление. Для возможности игры заново, необходимо нажать кнопку
рестарт.
Рис.
Список использованных источников
.Информационный
ресурс о играх. URL:
http://www.kongregate.com/games/Moly/gorillas-bas
2.Сайт
факультета математики, механики и компьютерных наук Южного федерального
университета. URL: http://pascalabc.net/
.Материал
из Википедии, свободной энциклопедии. URL: http://ru.wikipedia.org/wiki/Worms
.Материал
из Википедии, свободной энциклопедии. URL:
http://ru.wikipedia.org/wiki/Angry_Birds
5.Материал
из Википедии, свободной энциклопедии. URL:
http://ru.wikipedia.org/wiki/Баллистика
Приложение А
Тексты основных программных модулей
uses GraphABC, ABCObjects, Timers;_x
= 1000; { ширина окна
}
window_y = 700; { высота окна }= 9.81; {
гравитационная постоянная }= 3.14; { математическая константа }_step = 41; {
время хода в секундах }
type= class(PictureABC): string; { имя
игрока
}
Life: integer; { кол-во жизней },Y: integer; {
расположение башен }_x: integer; { расположение индикатора силы по Х }:
System.Drawing.Color; { цвет игрока }
protectedCreate(x,y: integer; fname:
string);;.X:=x;.Y:=y;;SetName(Name: string);.Name := Name;;SetLife(Life:
integer);.Life := Life;;SetColor(Color: System.Drawing.Color);.Color :=
Color;;LifeInit;:= 100;;PName: string read Name write SetName;PLife: integer
read Life write SetLife;PColor: System.Drawing.Color read Color write
SetColor;;= class, StepStatus: boolean;, Speed, EventEnable, Sec, Counter:
integer;, MenuBG, InfoStep, InfoTime, InfoNameP1, InfoNameP2, PowerP1, PowerP2,
RightBG, LeftBG, Celebration: PictureABC;, ButtonExit, ButtonRestart:
PictureABC;, Player2, ActPlayer, PasPlayer: Players;:
Timer;Create;(window_x);(window_y);;;:= KeyDown;:= Mouse;:= new PictureABC(0,
0, 'models\bg.png');:= new Players(0, 580, 'models\original_tower.png');:= new
Players(880, 580, 'models\original_tower.png');:= new Timer(1000,
Seconds);.Power_x := 120;.Power_x := -90;:= new PictureABC(window_x, window_y,
'models\core_2.png');:= new PictureABC(window_x div 2 - 150, 20,
'models\step.png');:= new PictureABC(window_x div 2 - 60, window_y - 620,
'models\form_button.png');:= new PictureABC(Player1.X+Player1.Power_x-3,
Player1.Y+60, 'models\power3.png');:= new
PictureABC(Player2.X+Player2.Power_x-3, Player2.Y+60, 'models\power3.png');:=
new PictureABC(Player2.x, Player2.y-50, 'models\right_bg.png');:= new
PictureABC(Player1.x, Player2.y-50, 'models\left_bg2.png');:= new
PictureABC((window_x div 2) - 200 , window_y div 3,
'models\celebration.png');;;:= new PictureABC((window_x div 2) - 80, window_y
div 3, 'models\button_start.png');:= new PictureABC((window_x div 2) - 80,
(window_y div 3)+50, 'models\button_exit1.png');:= new PictureABC(20, 10,
'models\button_restart.png');.Visible := FALSE;;
{ Метод
определяет
координаты
полета
снаряда
}Physics(v0, angle: real);x,y: integer;: real;t<15 do begin:= t+0.03;:=
ActPlayer.y-round(5*(v0*sin(Angle*pi/180)*t-g*t*t/2));:=
50+ActPlayer.x+round(5*(v0*cos(Angle*pi/180)*t));y > window_y then
continue;x > window_x then continue;.MoveTo(x, y);PasPlayer.Intersect(Ball)
then beginPasPlayer.Life < 1 then begin; EXIT;;.Life -=
1;;;(5);;PasPlayer.Life < 100 then ChangeTower;
end;
{ Метод определяет активного игрока }
procedure ActivePlayer(player:
Players);.Stop;.Start;:= player;:= 1; { Если
равно
1, то
разрешно
одно
нажатие
на
Enter }
Angle := 90; { Задаем начальный угол }:=
time_step;
Speed := 0; { Начальная
скорость
};;
end;
{ Метод определяет кто является не активны
игроком }
procedure PassivePlayer(player:
Players);:= player;
end;
{ Таймер отсчитывает сколько имеется секунд на
ход }
procedure Seconds;sub_nil:
string;(Sec);(Sec < 10) then sub_nil := '0'sub_nil := '';Sec < 1 then
begin+= 1;:= TRUE;;.FontColor := ActPlayer.Color;.Text := '00:' + sub_nil +
Sec.ToString;;
{ Запуск
игры
}GameInit;;;;:= TRUE;:= 0;TRUE do beginStepStatus = TRUE then begin(Counter mod
2 = 0) then begin(Player1);(Player2);:= FALSE;else begin(Player2);(Player1);:=
FALSE;;;(1000);;;
{ Рестарт
игры
}RestartGame;.LifeInit;.LifeInit;;.Start;:= time_step;.Visible :=
FALSE;.ChangePicture('models\original_tower.png');.ChangePicture('models\original_tower.png');;
{ Конец
игры
}GameOver;.Stop;.Visible := TRUE;.TextScale := 0.6;.FontColor := clWhite;.Text
:= ActPlayer.Name + ' одержал
победу!';
end;
{ Метод вывод на экран ход текущего игрока }
procedure StepPrint;.FontColor :=
ActPlayer.Color;.Text := 'Ход
игрока:
' + ActPlayer.Name;;
{ Состояние
жизней
}LifePrint;life: string;.FontColor := clWhite;.FontColor := clWhite;.TextScale
:= 0.4;.TextScale := 0.4;.Text := Player1.Life.ToString;.Text :=
Player2.Life.ToString;;
{ Ники
игроков
}NamePrint;.FontColor := Player1.Color;.FontColor := Player2.Color;.Text :=
Player1.Name;.Text := Player2.Name;;
{ Индикаторы
силы
}IndicatorPrint;.Redraw;
PowerP2.Redraw;;
{ Метод меняет изображение башни в зависимости
от уроня HP }
procedure ChangeTower;(PasPlayer.Life
> 90) and (PasPlayer.Life < 100) then
PasPlayer.ChangePicture('models\tower_crack\1.png')if PasPlayer.Life > 80
then PasPlayer.ChangePicture('models\tower_crack\2.png')if PasPlayer.Life >
70 then PasPlayer.ChangePicture('models\tower_crack\3.png')if PasPlayer.Life
> 60 then PasPlayer.ChangePicture('models\tower_crack\4.png')if
PasPlayer.Life > 50 then
PasPlayer.ChangePicture('models\tower_crack\5.png')if PasPlayer.Life > 40
then PasPlayer.ChangePicture('models\tower_crack\6.png')if PasPlayer.Life >
30 then PasPlayer.ChangePicture('models\tower_crack\7.png')if PasPlayer.Life
> 20 then PasPlayer.ChangePicture('models\tower_crack\8.png')if
PasPlayer.Life > 10 then
PasPlayer.ChangePicture('models\tower_crack\9.png')if PasPlayer.Life > 0 then
PasPlayer.ChangePicture('models\tower_crack\10.png');
end;
{ Скрытие графических элементов }Hidden;
beginInfoTime.Visible = TRUE then
InfoTime.Visible := FALSE;InfoStep.Visible = TRUE then InfoStep.Visible :=
FALSE;Player1.Visible = TRUE then Player1.Visible := FALSE;Player2.Visible =
TRUE then Player2.Visible := FALSE;PowerP1.Visible = TRUE then PowerP1.Visible
:= FALSE;PowerP2.Visible = TRUE then PowerP2.Visible :=
FALSE;Celebration.Visible = TRUE then Celebration.Visible := FALSE;
end;
{ Показать графические элементы }Show;
beginInfoTime.Visible = FALSE then
InfoTime.Visible := TRUE;InfoStep.Visible = FALSE then InfoStep.Visible :=
TRUE;Player1.Visible = FALSE then Player1.Visible := TRUE;Player2.Visible =
FALSE then Player2.Visible := TRUE;PowerP1.Visible = FALSE then PowerP1.Visible
:= TRUE;PowerP2.Visible = FALSE then PowerP2.Visible := TRUE;;
{ События
}KeyDown(key: integer);(Angle > 135) then Angle -= 2;(Angle < 45) then
Angle += 2;(Speed > 98) then Speed -= 2;(Speed < 1) then Speed += 2;key
of_Right:=2;.Redraw;.Redraw;(clWhite);(50+ActPlayer.x, ActPlayer.y,
50+ActPlayer.x+Round(50*cos((0+Angle)*pi/180)),
ActPlayer.y-Round(50*sin((0+Angle)*pi/180)));;_Left:+=2;.Redraw;.Redraw;(clWhite);(50+ActPlayer.x,
ActPlayer.y, 50+ActPlayer.x+Round(50*cos((0+Angle)*pi/180)),
ActPlayer.y-Round(50*sin((0+Angle)*pi/180)));;_Enter:EventEnable = 1 then
begin(Speed/1.5, Angle);:= 0;+=1;:=
TRUE;.Redraw;.Redraw;;;_Up:(clRed);(ActPlayer.X+ActPlayer.Power_x+Speed,
ActPlayer.Y+80, ActPlayer.X+ActPlayer.Power_x+Speed, ActPlayer.y+62);+=2;;_Down:(clWhite);(ActPlayer.X+ActPlayer.Power_x+Speed,
ActPlayer.Y+80, ActPlayer.X+ActPlayer.Power_x+Speed, ActPlayer.y+62);=2;;; { конец
case };Mouse (x,y,mousebutton: integer);ButtonStart.PtInside(x, y) then
begin.Destroy;.MoveTo(20, 50);:= TRUE;.Visible := TRUE;;ButtonExit.PtInside(x,
y) then begin;;ButtonRestart.PtInside(x, y) then begin;;;; { конец
класса
}: CGame := new CGame;Game.Start <> TRUE do sleep(500);.Player1.PName :=
'Орк';.Player2.PName
:= 'Гэндальф';.Player1.PColor
:= clGold;.Player2.PColor := clWhite;.Player1.LifeInit;.Player2.LifeInit;
Game.GameInit;.
Приложение Б
Техническое задание по ГОСТ
19.201-78 ЕСПД
Б1. Введение
Наименование программы
Наименование - Игра «2 башни»
Б2. Основания для разработки
Разработка проводится на основании:
задания на курсовой проект по специальности
231000 «Программная Инженерия» факультета «Информатика и вычислительная
техника» Донского государственного технического университета;
задания на программную реализацию игры, данного
Слоновским Алексеем Владимировичем.
Тема курсового проекта: Программная реализация
игры «2 башни».
Б3. Назначение разработки
Б3.1. Функциональное назначение
Предоставление пользователю возможности
электронного прохождения игры «2 башни».
Б3.2. Эксплуатационное назначение
Программное средство предназначено для
функционирования на рабочих станциях конечных пользователей в качестве
приложения.
Б4. Требования к программе или программному
изделию
Программное изделие должно состоять из одной
программы:
использование небольшого объема оперативной
памяти компьютера;
возможность использования ПП на любой версии MS
Windows, начиная с версии 2000;
удобный и интуитивно понятный интерфейс
приложения.
Б4.1. Требования к функциональным
характеристикам
Игра «2 башни» должна обеспечивать возможность
выполнения перечисленных ниже функций:
функция графического вывода на экран;
Функция запуска новой игры;
функция управления углом атаки;
функция управления скоростью атаки;
функция запуска снаряда;
функция выхода из игры.
Б4.1.1. Выходные данные системы
Вывод на экран графического отображения всех
объектов игрового процесса .
Б4.2. Условия эксплуатации
Б4.2.1. Климатические условия эксплуатации
Климатические условия эксплуатации, при которых
должны обеспечиваться заданные характеристики, должны удовлетворять
требованиям, предъявляемым к техническим средствам в части условий их
эксплуатации.
Б4.2.2. Требования к видам обслуживания
Программное средство не требует проведения
каких-либо видов обслуживания.
Б4.2.3 Требования к численности и квалификации
персонала
Необходима 1 штатная единица-опертор.
Б4.2.4 Требования к составу и параметрам
технических средств
В состав технических средств должен входить
IBM-совместимый персональный компьютер (ПЭВМ), включающий в себя:
процессор Pentium-3 с тактовой частотой не менее
1 ГГц;
оперативную память объемом не менее 512 Мб;
жесткий диск со скорость не менее 5400 об/мин и
свободным местом не менее 100Мб;совместимый видеоадаптер;
монитор с разрешением не менее 800x600 пикселей;
клавиатуру;
мышь.
Б4.3. Требования к маркировке и упаковке
Программа поставляется в виде программного
изделия - на дистрибутивном (внешнем оптическом) носителе (компакт-диске).
Б4.3.1. Требования к маркировке
Требования к маркировке программного изделия не
предъявляются.
Б4.3.2. Требования к упаковке
Упаковка программного изделия должна
осуществляться согласно требованиям предприятия-изготовителя носителя
информации.
Б4.4. Требования к транспортированию и хранению
Допускается транспортирование программного
изделия в транспортной таре всеми видами транспорта.
При транспортировании и хранении программного
изделия должна быть предусмотрена защита от попадания пыли и атмосферных
осадков. Не допускается кантование программного изделия.
Климатические условия транспортирования должны
соответствовать требованиям, предъявляемым предприятием-изготовителем к
носителю информации с программным изделием.
Б5. Требования к программной документации
Программная документация должна содержать:
лист задания;
алгоритмы решения;
пояснительная записка;
тексты основных программных модулей;
техническое задание (по ГОСТ 19.201-78).
Б6. Стадии и этапы разработки
Разработка программного средства включает в себя
следующие этапы:
анализ требований;
разработка технического задания;
разработка программного продукта;
тестирование системы;
внедрение;
составление акта внедрения.
Разработка программного средства осуществляется
одним человеком в период с ноября по декабрь 2012 года.
Б7. Порядок контроля и приемки
Порядок и контроль приёмки определяются
преподавателем «ПОВТ и АС» и основаны на демонстрации знаний технологии и
умении создавать программные средства для различных предметных областей.
Главным требованием к приему является наличие корректно работающей программы и
отчета, представленного в печатном виде.
Б8. Приложение к техническому заданию.
Обоснование выбора технологии
Для реализации программного средства выбрано
приложение PascalABC.NET, в связи с его использованием в процессе обучения.
Разработчик студент группы ВПР 22 Голиков
Иван /_______/ 27.12.2012