Einzelnen Beitrag anzeigen

MaKa117

Registriert seit: 20. Nov 2010
6 Beiträge
 
#5

AW: Fokus auf Paintbox/Image setzen

  Alt 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
  Mit Zitat antworten Zitat