Punktevergabe bei Zielsystem funktioniert nicht

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
FLTech
Beiträge: 1
Registriert: So 29. Mai 2022, 19:20

Punktevergabe bei Zielsystem funktioniert nicht

Beitrag von FLTech »

Hallo!
Ich bin noch rellativ neu bei Lazarus und programmiere momentan ein Spiel, indem man ein Fadenkreuz (Image1) mit Pfeiltasten auf Ziele (Image2) bewegen, und durch drücken der Leertaste "abschiessen" muss.
Leider bekommt man nun nicht nur bei schuss auf ein Ziel, sondern bei jeder Tasteneingabe, egal welche, einen Punkt.
Kann mir da jemand helfen?
Danke schonmal im Vorraus.

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
);
begin

Case key of
VK_Space: Space:=true;
VK_left: image1.Left:=image1.left-10;
VK_Right: image1.left:=image1.left+10;
VK_Up: image1.Top:=image1.Top-10;
VK_Down: image1.Top:=image1.Top+10;
end;
if Level2
then
begin
if (image1.top < image2.Top + image2.Height) and
(image1.top + image1.Height > image2.top) and
(image1.left < image2.Left + image2.Width) and
(image1.left + image1.Width > image2.left) and
Space
then
result := true;
if result=true then
begin
image2.hide;
punkte:=punkte+1;
panel1.Caption:=inttostr(punkte);
result:=false;
space:=false;
image2.left:=image2.left+1000;
tstart:=GetTickCount;
tstart:=tstart+10000 ;
repeat
tende:=GetTickCount;
Application.ProcessMessages;
until tende>tstart;
image2.left:=image2.left-1000;


end;

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Punktevergabe bei Zielsystem funktioniert nicht

Beitrag von six1 »

Hi,
mal abgesehen davon, dass du:
- den Code in "< />" einschließen solltest
- "result" der Rückgabewert einer FUNCTION ist
- ich nicht weiß, wo "Level2" definiert ist und für was es gut ist

du unbedingt mal über die Regel: Punkt vor Strich nachdenken musst!
Gruß, Michael

Antworten