Ja man sieht das du neu bist, bitte nutze die Code Tags dann sieht das ganze schon viel Hübscher aus. ( Trotzdem Herzlich willkommen in der
DP )
und dein Code könnte etwas Struktur gebrauchen.
Delphi-Quellcode:
Procedure TForm1.FormKeyPress(Sender: TObject; Var Key: Char);
Begin
dicke := 20;
If key = 's' Then Begin
form1.Refresh;
y := y + 5;
End;
If key = 'd' Then Begin
form1.Refresh;
x := x + 5;
End;
If key = 'a' Then Begin
form1.Refresh;
x := x - 5;
End;
If key = 'w' Then Begin
form1.Refresh;
y := y - 5;
End;
canvas.brush.color := clnavy;
canvas.ellipse(x, y, x + dicke, y + dicke);
canvas.MoveTo(50, 0);
canvas.lineto(50, 350);
canvas.MoveTo(50, 400);
canvas.lineto(50, 500);
label1.Caption := inttostr(x);
label2.caption := inttostr(y);
End;
bei diesem Code ist die Semantik die selbe wie bei deinem, nur ist der Code deutlich kürzer.
und zu guter letzt ein Hinweis auf deine Lösung :
Delphi-Quellcode:
Procedure TForm1.FormKeyPress(Sender: TObject; Var Key: Char);
Begin
dicke := 20;
If key = 's' Then Begin
form1.Refresh;
y := y + 5;
End;
If key = 'd' Then Begin
form1.Refresh;
x := x + 5;
End;
If key = 'a' Then Begin
form1.Refresh;
x := x - 5;
End;
If key = 'w' Then Begin
form1.Refresh;
y := y - 5;
End;
If x < 0 Then x := 0;
If x > width - dicke Then x := width - dicke;
If y < 0 Then y := 0;
If y > width - dicke Then y := height - dicke;
canvas.brush.color := clnavy;
canvas.ellipse(x, y, x + dicke, y + dicke);
canvas.MoveTo(50, 0);
canvas.lineto(50, 350);
canvas.MoveTo(50, 400);
canvas.lineto(50, 500);
label1.Caption := inttostr(x);
label2.caption := inttostr(y);
End;
Dieser Teil beschränkt das Feld deiner "Kugel" auf die Form und man kann nicht mehr raus laufen, evtl hilft dir das schon ein bischen weiter