|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.04.2011, 22:52 | #1 |
Регистрация: 17.10.2009
Сообщений: 4
|
Проблема с 2D аркадой
Pобяты у меня ппц... полный, кризис жанра! вобщем я ворзнамерился написать 2D аркаду(а иначе у меня программинг не учиться тока так ставя перед собой сложные задачи и решая их я и могу учиться). Игра примитиф летит самолетик постояно стреляет патронами... мочиво пиф-паф итд. В чем собсно трабл? а вот в чем я незнаю как зделать так чтоб постояно стрелял патриками... подскажыте.Уже все перепробовал и через масиви и через таймер итд... нефига невыходит. Прилагаю код + екзешник.
Код HTML:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
ExtCtrls, Menus;
type
{ TForm1 }
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
Timer1: TTimer;
procedure FormActivate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure MenuItem5Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
background,spr1,bullet: TBitmap;
x1,y1,y2,i:integer;
implementation
{ TForm1 }
procedure TForm1.FormActivate(Sender: TObject);
begin
bullet:=TBitmap.Create;
spr1:= TBitmap.Create;
background :=TBitmap.Create;
background.LoadFromFile('Data/background.bmp');
bullet.LoadFromFile('Data/bullet.bmp');
Image1.Height:=Form1.Height;
Image1.Width:=Form1.Width;
Form1.Image1.Canvas.Draw(0,0, background);
spr1.LoadFromFile('Data/spr1.bmp');
Image2.Height:=spr1.Height;
Image2.width:=spr1.Width;
Form1.Image2.Canvas.Draw(0,0, spr1);
spr1.Transparent:=true;
spr1.TransparentColor:= spr1.Canvas.Pixels[1,1];
bullet.Transparent:=true;
bullet.TransparentColor:= bullet.Canvas.Pixels[1,1];
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
);
begin
with Image2 do
case Key of
37: Left:=Left-25;
40: Top:=Top+25;
39: Left:=Left+25;
38: Top:=Top-25;
65: Left:=Left-25;
83: Top:=Top+25;
68: Left:=Left+25;
87: Top:=Top-25;
end;
if Image2.Left>(Form1.Width-Image2.Width) then Image2.Left:=Form1.Width-Image2.Width;
if Image2.Left<0 then Image2.Left:=0;
if Image2.Top>(Form1.Height-Image2.Height) then Image2.Top:=Form1.Height-Image2.Height;
if Image2.Top<0 then Image2.Top:=0;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
end;
procedure TForm1.MenuItem5Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
x1:=Image2.Left+20;
y1:=Image2.Top+10;
y2:=Image2.Top+47;
Image1.Canvas.Draw(x1,y1, bullet);
Image1.Canvas.Draw(x1,y2,bullet);
end;
initialization
{$I unit1.lrs}
end.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с рамами/Проблема с ЖД | DRAGGER | Компьютерное железо | 6 | 04.01.2009 23:37 |