Registriert seit: 20. Nov 2010
6 Beiträge
|
AW: Fokus auf Paintbox/Image setzen
20. Nov 2010, 18:30
Also: hier das FormKeyDown
Code:
procedure TF_Snake.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
vk_Space:
begin
Timer1.Enabled := not Timer1.Enabled;
if Timer1.Enabled = false then F_Snake.Caption := 'Snake - Um zu starten, drücke Leertaste';
if Timer1.Enabled = true then F_Snake.Caption := 'Snake - Um zu pausieren, drücke Leertaste';
end;
vk_Up : step := 1;
vk_Right : step := 2;
vk_Left : step := -2;
vk_Down : step := -1;
end;
end;
das wird dann in der Unit Steuerung so umgesetzt:
Code:
procedure TSteuerung.BewegeSnake(move: integer);
var XKopf, YKopf, XApfel, YApfel: integer;
begin
Spielfeld.LadeBild;
step := move;
Snake.Bewegen(move);
Treffer := Snake.Kollision;
xKopf := Snake.GetXPosition(0);
YKopf := Snake.GetYPosition(0);
XApfel := Apfel.GetXPosition;
YApfel := Apfel.GetYPosition;
if (xKopf = xApfel) and (YKopf = YApfel) then
begin
Snake.Wachsen;
inc(Score);
Panel1.Caption := 'Score: ' + IntToStr(Score);
SetzeApfel;
Apfel.Zeigen;
end;
Snake.Zeigen;
Apfel.Zeigen;
end;
und dann hier in der Unit Snake
Code:
procedure TSnake.Bewegungsvorgang;
begin
case Step of
1: Teile[0].SetXYPosition(Teile[0].GetXPosition,Teile[0].GetYPosition-20);
2: Teile[0].SetXYPosition(Teile[0].GetXPosition+20,Teile[0].GetYPosition);
-2: Teile[0].SetXYPosition(Teile[0].GetXPosition-20,Teile[0].GetYPosition);
-1: Teile[0].SetXYPosition(Teile[0].GetXPosition,Teile[0].GetYPosition+20);
end;
if Teile[0].GetXPosition = Breite then Teile[0].SetXYPosition(0,Teile[0].GetYPosition);
if Teile[0].GetXPosition < 0 then Teile[0].SetXYPosition(Breite-20,Teile[0].GetYPosition);
if Teile[0].GetYPosition = Hoehe then Teile[0].SetXYPosition(Teile[0].GetXPosition,0);
if Teile[0].GetYPosition < 0 then Teile[0].SetXYPosition(Teile[0].GetXPosition,Hoehe-20);
end;
Geändert von mkinzler (20. Nov 2010 um 18:31 Uhr)
Grund: Code-Tags durch Delphi-Tags ersetzt
|
|
Zitat
|