Código
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, ImgList, Gauges, StdCtrls, DXSounds;
type
TForm1 = class(TForm)
Timer1: TTimer;
Aviaod: TImage;
Bombad: TImage;
Bombae: TImage;
Aviaoe: TImage;
Timer2: TTimer;
Timer3: TTimer;
Gauge1: TGauge;
Gauge2: TGauge;
tela1: TImage;
Label1: TLabel;
Label2: TLabel;
DXSound1: TDXSound;
wl: TDXWaveList;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
adg,aeg: boolean;
mensagem:boolean;
comeco:boolean;
implementation
uses jogou2;
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if iniciar=true then //Se o botão 'iniciar' for clicado então
begin
if comeco=true then // Esta variável grava os nomes dos jogadores
begin
label1.caption:=form2.edit1.text; // O nome do Primeiro jogador aparecerá no canto superior esquerdo da tela
label2.caption:=form2.edit2.text; // O nome do Segundo jogador aparecerá no canto superior Direito da tela
end; comeco:=false; // Finaliza este bloco de código
// 1º Jogador //
if (getkeystate(75) and $8000)<> 0 then Aviaod.left:=Aviaod.left-5;
//Se a tecla 'K' for pressionada então o avião(1) vai para trás
if (getkeystate(186) and $8000)<> 0 then Aviaod.left:=Aviaod.left+5;
//Se a tecla 'Ç' for pressionada então o avião(1) vai para frente
if (getkeystate(79) and $8000)<> 0 then Aviaod.top:=Aviaod.top-5;
//Se a tecla 'O' for pressionada então o avião(1) vai para cima
if (getkeystate(76) and $8000)<> 0 then Aviaod.top:=Aviaod.top+5;
//Se a tecla 'L' for pressionada então o avião(1) vai para baixo
// 2º Jogador //
if (getkeystate(37) and $8000)<> 0 then Aviaoe.left:=Aviaoe.left-5;
//Se a tecla 'Frente' for pressionada então o avião(2) vai para frente
if (getkeystate(39) and $8000)<> 0 then Aviaoe.left:=Aviaoe.left+5;
//Se a tecla 'Trás' for pressionada então o avião(2) vai para trás
if (getkeystate(38) and $8000)<> 0 then Aviaoe.top:=Aviaoe.top-5;
//Se a tecla 'Cima' for pressionada então o avião(2) vai para cima
if (getkeystate(40) and $8000)<> 0 then Aviaoe.top:=Aviaoe.top+5;
//Se a tecla 'Baixo' for pressionada então o avião(2) vai para baixo
if (getkeystate(27) and $8000)<> 0 then close;
//Se a tecla 'Esc' for pressionada então programa será fechado
if Aviaod.Left<0 then Aviaod.left:=0; //Este código serve para não deixar que a posição horizontal do avião(1) seja menor que zero
if Aviaod.left>275 then Aviaod.left:=275; // Este código serve para não deixar o avião(1) passar para a area do avião(2)
if Aviaod.top<0 then Aviaod.top:=0; //Este código serve para não deixar que a posição vertical do avião(1) seja menor que zero
if Aviaod.top>420 then Aviaod.top:=420; //Este código serve para não deixar que a posição vertical do avião(1) seja maior que 420
if Aviaoe.Left<275 then Aviaoe.left:=275; //Este código serve para não deixar que o avião(2) ultrapasse a area do avião(1)
if Aviaoe.left>550 then Aviaoe.left:=550; //Este código serve para não deixar que o avião(2) ultrapasse 550
if Aviaoe.top<0 then Aviaoe.top:=0; //Este código serve para não deixar que a posição vertical avião(2) seja menor que Zero
if Aviaoe.top>420 then Aviaoe.top:=420; //Este código serve para não deixar que a posição vertical avião(2) seja maior que 420
//bombas
if (getkeystate(70) and $8000)<> 0 then begin
//Se a tecla 'F' for pressionada então
if adg=true then // Se a bomba(1) não estiver visivel então
begin // Este código ativa a animação da bomba
Bombad.Left:=Aviaod.left+45;
Bombad.top:=Aviaod.top+26;
Timer2.enabled:=true; // A animação é ativada
wl.items[0].play(false); // O som da bomba(1) é ativado
end;
end;
if Bombad.left>600 then // Se a posição da bomba(1) for maior que 600 então
begin
Timer2.enabled:=false; // Desativa a animação da bomba(1)
Bombad.visible:=false; // Bomba(1) desaparece
adg:=true; // Esta variável grava a informação que a bomba(1) pode ser lançada novamente
end;
// fim--> bombaD
// bombaE
if (getkeystate(101) and $8000)<> 0 then begin
//Se a tecla '5' (do lado Direito do teclado) for pressionada então
if aeg=true then // Se a bomba(2) não estiver visivel então
begin
Bombae.Left:=Aviaoe.left+45;
Bombae.top:=Aviaoe.top+26;
Timer3.enabled:=true; // A animação é ativada
wl.items[0].play(false); // O som da bomba(2) é ativado
end;
end;
if Bombae.left<0 then // Se a posição da bomba(2) for men0r que zero então
begin
Timer3.enabled:=false; // Desativa a animação da bomba(2)
Bombae.visible:=false; // Bomba(2) desaparece
aeg:=true; // Esta variável grava a informação que a bomba(2) pode ser lançada novamente
end;
// Ação ///////
if (Bombad.left>=Aviaoe.left) and (Bombad.left<=Aviaoe.left+Aviaoe.width)
and (Bombad.top>=Aviaoe.top) and(Bombad.top<=Aviaoe.top+Aviaoe.height)
and (Bombad.visible=true ) then begin
// Se a bomba(1) atingir o avião(2) então
Gauge2.Progress:=gauge2.Progress-1; // Energia do avião(2) diminui
wl.items[1].play(false); // Ativa o som da explosão
end;
if (Bombae.left>=Aviaod.left) and (Bombae.left<=Aviaod.left+Aviaod.width)
and (Bombae.top>=Aviaod.top) and(Bombae.top<=Aviaod.top+Aviaod.height)
and (Bombae.visible=true ) then begin
// Se a bomba(2) atingir o avião(2) então
Gauge1.Progress:=gauge1.Progress-1; // Energia do avião(1) diminui
wl.items[1].play(false); // Ativa o som da explosão
end;
//fim da ação//
if gauge1.progress=0 then // Se a energia do avião(1) chegar
begin
gauge1.progress:=100; // avião(1) recupera a energia
gauge2.progress:=100; // avião(2) recupera a energia
showmessage(form2.edit2.text+' ganhou'); // Uma mensagem aparecerá informando a vitória do avião(1)
gauge1.progress:=100; // avião(1) recupera a energia
gauge2.progress:=100; // avião(2) recupera a energia
end;
if gauge2.progress=0 then
begin
gauge1.progress:=100; // avião(1) recupera a energia
gauge2.progress:=100; // avião(2) recupera a energia
showmessage(form2.edit1.text+' ganhou'); // Uma mensagem aparecerá informando a vitória do avião(2)
gauge1.progress:=100; // avião(1) recupera a energia
gauge2.progress:=100; // avião(2) recupera a energia
end;
end;//fim -->iniciar
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
if adg=true then Bombad.visible:=true; // bomba(1) aparece
Bombad.left:=Bombad.left+11; // Bomba(1) é lançada contra o avião(2)
adg:=false; // Esta variável grava a informação que a bomba está visivel
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
if aeg=true then Bombae.visible:=true; // Bomba(2) é lançada contra o avião(2)
Bombae.left:=Bombae.left-11; // Bomba(2) é lançada contra o avião(1)
aeg:=false; // Esta variável grava a informação que a bomba está visivel
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
adg:=true; // A bomba(1) não está visivel
aeg:=true; // A bomba(2) não está visivel
tela1.Picture.LoadFromFile('tela1.bmp'); // Roda a imagem de fundo
tela1.Align:=alclient; // A imagem de fundo ocupa toda a tela
comeco:=true; // Ativa a variável que servirá para gravá os nomes dos jogadores
end;
procedure TForm1.FormClick(Sender: TObject);
begin
if iniciar=false then form2.show;
//Se o formulário inicial não for fechado então você não poderá começar o jogo
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if iniciar=false then form2.show;
//Este código faz com que apareça a tela para preencher os nomes dos jogadores
end;
end.
BEM ESSE É O CÓDIGO DO GAME SIMPLES QUE ESTOU FAZENDO EM DELPHI..... TAÍ SÓ PRA TER UMA NOÇÃO!!!!!
Muito obrigado e até a próxima vez com mais dicas interessantes...
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009