
Code 1:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
Image2: TImage;
Timer2: TTimer;
Timer3: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=True; //Código buffer pra imagem não ficar piscando
Image1.Picture.LoadFromFile('ship.bmp'); //Carrega nave
Image2.Picture.LoadFromFile('bullet.bmp'); //Carrega tiro nave
Image2.Visible:=false; //Esconde imagem tiro da nave
Image2.Enabled:=false; //Desabilita tiro da nave
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
//Tecla para esquerda
if (GetKeyState(vk_left)<0) then
begin
Image1.Left:=Image1.Left-5; //Movimenta nave pra esquerda
end;
//Tecla para direita
if (GetKeyState(vk_right)<0) then
begin
Image1.Left:=Image1.Left+5; //Movimenta nave pra direita
end;
//Tecla para cima
if (GetKeyState(vk_up)<0) then
begin
Image1.Top:=Image1.Top-5; //Movimenta nave pra cima
end;
//Tecla para baixo
if (GetKeyState(vk_down)<0) then
begin
Image1.Top:=Image1.Top+5; //Movimenta nave pra baixo
end;
//Tecla de espaço
if (GetKeyState(vk_space)<0) then
begin
Timer3.enabled:=true; //Ativa animação da nave
Image2.Enabled:=true; //Habilita imagem do tiro da nave
Image2.Visible:=true; //Deixa visível o tiro da nave
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
//Alinha tiro da nave com a imagem da nave
Image2.Top:=Image1.Top+33;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
Image2.Left:=Image1.Left+Random(500); //Tiro randômico
Timer3.Enabled:=false; //Desativa o timer da animação
Image2.Enabled:=false; //Desativa novamente o tiro da nave
Image2.Visible:=false; //Oculta novamente o tiro da nave
end;
end.
Code 2:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=True;
Image1.Picture.LoadFromFile('ship.bmp');
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (GetKeyState(vk_left)<0) then
begin
Image1.Left:=Image1.Left-5;
end;
if (GetKeyState(vk_right)<0) then
begin
Image1.Left:=Image1.Left+5;
end;
if (GetKeyState(vk_up)<0) then
begin
Image1.Top:=Image1.Top-5;
end;
if (GetKeyState(vk_down)<0) then
begin
Image1.Top:=Image1.Top+5;
end;
end;
end.
By Celio Azevedo.