Código Delphi
[-]
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, pngimage, ExtCtrls, StdCtrls;
const
DISTANCIA_AL_BORDE = 20;
type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
esp1: TImage;
esp2: TImage;
img: TImage;
Timer1: TTimer;
imgmisil: TImage;
Timer2: TTimer;
Timer3: TTimer;
ene: TImage;
Timer4: TTimer;
Timer5: TTimer;
Label1: TLabel;
Timer6: TTimer;
Timerderecha: TTimer;
TimerArriba: TTimer;
TimerAbajo: TTimer;
TimerIzquierda: TTimer;
procedure PaintBox1Paint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Timer3Timer(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
procedure Timer6Timer(Sender: TObject);
procedure TimerderechaTimer(Sender: TObject);
procedure TimerArribaTimer(Sender: TObject);
procedure TimerAbajoTimer(Sender: TObject);
procedure TimerIzquierdaTimer(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
Count: Integer;
public
end;
var
Form1: TForm1;
x: integer;
Ganadas : integer;
Perdidas: integer;
sh:TShape;
y: integer;
implementation
const
arr: array[0..65, 0..10] of integer =
((1, 1, 2, 1, 1,1 ,1 ,1 ,1 ,1 ,1 ),
(1, 1, 2, 2, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(1, 1, 1, 1, 2 ,1 ,2 ,1 ,1 ,1 ,2),
(1, 1, 2, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(1, 1, 1, 1, 2 ,2 ,1 ,2 ,1 ,1 ,2),
(2, 1, 2, 2, 2 ,2 ,1 ,1 ,1 ,1 ,1),
(2, 1, 1, 1, 1 ,1 ,1 ,2 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,2 ,2 ,1 ,2),
(2, 1, 1, 2, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 2,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 2 ,1 ,2 ,1 ,2 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 2, 2, 2 ,2 ,1 ,1 ,1 ,1 ,1),
(2, 1, 1, 1, 1 ,1 ,1 ,2 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,2 ,2 ,1 ,2),
(2, 1, 1, 2, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 2,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 2 ,1 ,2 ,1 ,2 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 2, 2, 2 ,2 ,1 ,1 ,1 ,1 ,1),
(2, 1, 1, 1, 1 ,1 ,1 ,2 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,2 ,2 ,1 ,2),
(2, 1, 1, 2, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 2,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 2 ,1 ,2 ,1 ,2 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 2, 2, 2 ,2 ,1 ,1 ,1 ,1 ,1),
(2, 1, 1, 1, 1 ,1 ,1 ,2 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,2 ,2 ,1 ,2),
(2, 1, 1, 2, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 2,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 2 ,1 ,2 ,1 ,2 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,2),
(2, 1, 1, 1, 1 ,1, 1, 1, 1 ,1 ,2));
{$R *.dfm}
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
x: integer;
y: integer;
begin
for x := 0 to 20 do begin
for y := 0 to 10 do begin
case arr[x, y] of
0: paintbox1.Canvas.CopyRect(Rect(x*75, y*75,
(x*75)+75,(y*75)+75),esp1.canvas,rect(0,0,75,75));
1: paintbox1.Canvas.CopyRect(Rect(x*75, y*75,
(x*75)+75,(y*75)+75),esp2.canvas,rect(0,0,75,75));
2: paintbox1.Canvas.CopyRect(Rect(x*75, y*75,
(x*75)+75,(y*75)+75),esp1.canvas,rect(0,0,75,75));
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.DoubleBuffered := True;
Img.Width := Img.Picture.Width;
Img.Height := Img.Picture.Height;
ImgMisil.Width := ImgMisil.Picture.Width;
ImgMisil.Height := ImgMisil.Picture.Height;
ene.Width := ene.Picture.Width;
ene.Height := ene.Picture.Height;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
imgmisil.top := imgmisil.top -6;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = 27 then close;
if key = vk_control then
timer1.Enabled := false;
timer6.Enabled :=false;
imgmisil.Visible := true;
timer2.Enabled := true;
if key = vk_left then timerizquierda.Enabled := true;
if key = vk_right then timerderecha.Enabled := true;
if key = vk_down then timerabajo.Enabled := true;
if key = vk_up then timerarriba.Enabled := true;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
var
r1, r2, b1, b2:Integer;
begin
r1 := (IMG.Left + IMG.Width);
r2 := (ENE.Left + ENE.Width);
b1 := (IMG.Top + IMG.Height);
b2 := (ENE.Top + ENE.Height);
if (((IMG.Left < ENE.Left) and (r1 > ENE.Left))and
((IMG.Top < ENE.Top) and (b1 > ENE.Top))) or
(((ENE.Left < IMG.Left) and (r2 > IMG.Left))and
((ENE.Top < IMG.Top) and (b2 > IMG.Top))) or
(((IMG.Left < ENE.Left) and (r1 > ENE.Left))and
((ENE.Top < IMG.Top) and (b2 > IMG.Top))) or
(((ENE.Left < IMG.Left) and (r2 > IMG.Left)) and
((IMG.Top < ENE.Top) and (b1 > ENE.Top))) then begin
Ganadas := Ganadas + 1;
img.Visible := False;
TIMER4.Enabled := FALSE;
end
end;
procedure TForm1.Timer4Timer(Sender: TObject);
begin
if img.Left > ene.left then
ene.left := ene.left +1;
if img.Left < ene.left then
ene.Left := ene.left -1;
if img.Top > ene.Top then
ene.Top := ene.Top +1;
if img.Top < ene.Top then
ene.Top := ene.Top -1;
end;
procedure TForm1.Timer5Timer(Sender: TObject);
var
r1, r2, b1, b2:Integer;
begin
r1 := (IMGMISIL.Left + IMGMISIL.Width);
r2 := (ENE.Left + ENE.Width);
b1 := (IMGMISIL.Top + IMGMISIL.Height);
b2 := (ENE.Top + ENE.Height);
if (((IMGMISIL.Left < ene.Left) and (r1 > ene.Left)) and
((IMGMISIL.Top < ene.Top) and (b1 > ene.Top))) or
(((ene.Left < IMGMISIL.Left) and (r2 > IMGMISIL.Left)) and
((ene.Top < IMGMISIL.Top) and (b2 > IMGMISIL.Top))) or
(((IMGMISIL.Left < ene.Left) and (r1 > ene.Left)) and
((ene.Top < IMGMISIL.Top) and (b2 > IMGMISIL.Top))) or
(((ene.Left < IMGMISIL.Left) and (r2 > IMGMISIL.Left)) and
((IMGMISIL.Top < ene.Top) and (b1 > ene.Top))) then begin
ene.Visible := False;
imgmisil.Visible := False;
TIMER4.Enabled := FALSE;
end;
end;
procedure TForm1.Timer6Timer(Sender: TObject);
begin
imgmisil.Left := img.Left;
imgmisil.Top := img.Top ;
end;
procedure TForm1.TimerderechaTimer(Sender: TObject);
begin
if (GetKeyState(VK_RIGHT) and $90) > 0 then
Img.Left:= Img.Left + 4;
end;
procedure TForm1.TimerArribaTimer(Sender: TObject);
begin
if (GetKeyState(VK_UP) and $90) > 0 then
Img.Top:= Img.Top - 4;
end;
procedure TForm1.TimerAbajoTimer(Sender: TObject);
begin
if (GetKeyState(VK_DOWN) and $90) > 0 then
Img.Top:= Img.Top + 4;
end;
procedure TForm1.TimerIzquierdaTimer(Sender: TObject);
begin
if (GetKeyState(VK_LEFT) and $90) > 0 then
Img.Left:= Img.Left - 4;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ImgMisil.Left := Img.Left + Img.Width -36;
ImgMisil.Top := Img.Top + round(Img.Height / 4);
end;
end.
es el codigo de mi jueguito =D dispara un solo misil
aaaa para los graficos estoy utilizando los componentes png que lo unico que hace(lo unico encerio =D) Es usar el Timage comun de delphi para hacerlo que soporte mas formatos como jpg png etc...