Организация входных и выходных данных
Входными данными являются команды, поступающие от пользователя о направлении движения пусковой установки и выстрелах. В зависимости от этих данных определяется положение установки на игровом поле. После обработки поступающих данных в игровом процессе на экран выдается результат (выходные данные) в виде полученных очков. Также во время игры случайным образом создаются самолеты и летят по случайно заданным «маршрутам». Результат этих действий игрок видит на экране.
Разработка рабочего проекта Разработка программы Для разработки приложения игры «Сбей самолет» используется среда визуального программирования Delphi. Проект программы содержит одно окно. Окно – Form1 представлено на рисунке 3. Рисунок 3 - Окно приложения
Компонент Form1 Свойства: Caption-Самолетик; Border- bssingle;
1-компонент Button1; свойства: caption-Поехали; Событие: Onclick- активация ttimer1
2-компонент label2; свойства: caption- для того чтобы остановить игру нажмите клавишу ESC
3-компонент label1; свойства: caption-вы сбили
4-компонент label3; свойства: caption-кол-во сбитых самолетов;
5-компонент image1; поле на котором рисуется поле битвы
6-компонент ttimer1; свойства: enable-false; interval-10 мс; Спецификация программы Исполняемый файл программы «Сбей самолет» имеет название Project1.exe. Его работоспособность не зависит от расположения на диске. Необходимо, чтобы файлы, прилагающиеся к программе, находились в указанных каталогах. Наименования файлов входящих в проект и краткая информация об их содержании представлены в приложении. Текст программы unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls;
type TForm1 = class(TForm) Image1: TImage; Timer1: TTimer; Button1: TButton; Label2: TLabel; Label1: TLabel; Label3: TLabel; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
//============================================================================== procedure FillZap(ind: integer); //==============================================================================
const n=10;
type TSprite= record X,Y : integer; vectX, vectY: integer; koef_a, koef_b: real; speed : integer; Gr : TBitmap; end;
TRocket= record X,Y: integer; Gr : TBitmap; Destroed: Boolean; end;
var Form1: TForm1; a:integer=0; Su25: array [1..n] of TSprite; turel: TSprite; rocket: TRocket;
Killed: integer=0; implementation
{$R *.dfm} //============================================================================== procedure Colision; var I: integer; begin for i:=1 to n do begin if (rocket.X>Su25[i].X) and (rocket.X<(Su25[i].X+Su25[i].Gr.Width)) and (rocket.Y<(Su25[i].Y+Su25[i].Gr.Height)) and (rocket.Y>Su25[i].Y) then begin rocket.Destroed:=true; rocket.Y:=Form1.Image1.Height+10; inc(Killed); FillZap(i); end; end; end; //============================================================================== procedure FillZap(ind: integer); begin Su25[ind].X:=random(Form1.Image1.Width-35); Su25[ind].Y:=-1; Su25[ind].vectX:=random(Form1.Image1.Width div 2); Su25[ind].vectY:=Form1.Image1.Height+10; Su25[ind].koef_b:=Su25[ind].X; Su25[ind].koef_a:=Su25[ind].vectX/Su25[ind].vectY; end; //============================================================================== procedure Calc; var i: integer; begin For i:=1 to n do begin if Su25[i].Y>Form1.Image1.Height then FillZap(i); Su25[i].X:=round(Su25[i].Y*Su25[i].koef_a+Su25[i].koef_b); inc(Su25[i].Y,random(10)); end;
if rocket.Destroed<>true then dec(rocket.Y,10); if rocket.Y<-10 then begin rocket.Destroed:=true; rocket.Y:=Form1.Image1.Height+10; end; end; //============================================================================== procedure ClearScr; begin Form1.Image1.Canvas.Brush.Color:=clBlack; Form1.Image1.Canvas.FillRect(Rect(0,0,Form1.Image1.Width,Form1.Image1.Height)); end; //============================================================================== procedure LoadImages_; var i: integer; begin For i:=1 to n do begin Su25[i].Gr:=TBitmap.Create; Su25[i].Gr.LoadFromFile('graph\samolet1.bmp'); Su25[i].Gr.TransparentColor:=clRed; Su25[i].Gr.Transparent:=true; end; turel.Gr:=TBitmap.Create; turel.Gr.LoadFromFile('graph\turel.bmp'); turel.Gr.TransparentColor:=clRed; turel.Gr.Transparent:=true; turel.X:=turel.Gr.Width+10; turel.Y:=521-turel.Gr.Height;
Rocket.Gr:=TBitmap.Create; Rocket.Gr.LoadFromFile('graph\bullet.bmp'); Rocket.Gr.TransparentColor:=clWhite; Rocket.Gr.Transparent:=true; Rocket.Y:=Form1.Image1.Height+10; Rocket.Destroed:=true;
end; //============================================================================== procedure DrawScene; var I: integer; begin For i:=1 to n do begin Form1.Image1.Canvas.Draw(Su25[i].X,Su25[i].Y, Su25[i].Gr);
end; Form1.Image1.Canvas.Draw(turel.X,turel.Y,turel.Gr); Form1.Image1.Canvas.Draw(rocket.x,rocket.Y, rocket.Gr); end; //============================================================================== procedure Precache_; var i: integer; begin For i:=1 to n do FillZap(i); end; //============================================================================== procedure TForm1.Timer1Timer(Sender: TObject); begin Calc; Colision; ClearScr; DrawScene; label3.Caption:=inttostr(Killed)+' самолетов'; if killed>=100 then begin label3.Caption:='Вы выйграли'; Timer1.Enabled:=false; Button1.Enabled:=true; killed:=0; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin Randomize; LoadImages_; Precache_; ClearScr; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Timer1.Enabled:=false; end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin case Key of VK_LEFT : begin if turel.X >0 then dec(turel.X,10); end; VK_RIGHT : begin if turel.X<Image1.Width-turel.Gr.Width then inc(turel.X,10); end; VK_SPACE : begin if rocket.Destroed then begin rocket.Destroed:=false; rocket.X:=turel.X + turel.Gr.Width div 2; end; end; VK_ESCAPE : begin Timer1.Enabled:=false; Button1.Enabled:=true;
end; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin
Button1.Enabled:=false; Timer1.Enabled:=true; end; procedure TForm1.N2Click(Sender: TObject); begin Showmessage('Игра "Сбей самолет"'#13#13#13'Автор: студент Дин-809-01 Быстрикова Анна') end; end.
Описание программы Общие сведения: программа разработана в среде программирования Delphi 7. Функциональное назначение программы: программа предназначена для развлечения. Используемые технические средства: при разработке программы были использованы следующие технические и программные средства: ü компьютер на базе процессора Intel Pentium 4 3.00 GHz ü объем оперативной памяти 512 Мб ü операционная система Windows XP Professional Вызов и загрузка: для того, чтобы запустить программу, необходимо запустить файл «Project1.exe».
Популярное: Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (225)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |