Ir para o conteúdo
Makavelii

Snake Delphi XE7

Mensagens Recomendadas

Makavelii

Boas, eu como trabalho de final de ano decidi fazer o snaka em pascal, delphi.

Para a deteção de se a cobra come a comida decidi fazer uma comparação de coordenadas. Infelizmente não consigo correr o programa para testar devido a erros. Podem analisar o meu codigo ainda muito básico?

Podiam também ajudar em como aumentar o tamanho da cobra?

var
Form1: TForm1;
hx,hy,cx,cy: integer;
TempImage:TBitmap;
implementation
{$R *.dfm}
procedure TForm1.DrawTimer(Sender: TObject);
begin
with TempImage do
begin
canvas.Brush.Style:=bssolid;
canvas.Brush.Color:=clwhite;
canvas.FillRect(Rect(0,0,width,height));
canvas.Draw(hx,hy,head.Picture.Graphic);
canvas.Draw(cx,cy,comida.Picture.Graphic);
end;
self.Canvas.Draw(0,0,TempImage);

end;
procedure TForm1.FormCreate(Sender: TObject);
begin
hx:=10;
hy:=10;
TempImage:=TBitmap.Create;
TempImage.Width:=width;
TempImage.Height:=height;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
TempImage.Free;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if hx:=cx and hy:=cy then
begin
cx:=random(form1.width,form1.height);
cy:=random(form1.width,form1.height);
end
else
if key=87 then hy:=hy-10;
end;
if hx:=cx and hy:=cy then
begin
cx:=random(form1.width,form1.weight);
cy:=random(form1.width,form1.weight);
end;
else
if key=83 then hy:=hy+10;
end;
if hx:=cx and hy:=cy then
begin
cx:=random(form1.width,form1.weight);
cy:=random(form1.width,form1.weight);
end;
 else
if key=65 then hx:=hx-10;
end;
if hx:=cx and hy:=cy then
begin
cx:=random(form1.width,form1.weight);
cy:=random(form1.width,form1.weight);
end
else
if key=68 then hx:=hx+10;
 end;
end;
end.

PS:já vi em outros foruns para tentar e não encontrei nada de jeito.

Obrigado a quem ajudar

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Kline777

Explica aí a tua ideia com este código para podermos ajudar.

Já agora, estou a ver mal ou repetes o código

if hx:=cx and hy:=cy then
begin
cx:=random(form1.width,form1.weight);
cy:=random(form1.width,form1.weight);
end

3 vezes desnecessariamente?

Editado por Kline777

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.