![]() |
Ping-Pong
Hallo Leute,
ich habe ein Problem und zwar will ich ein PINK-PONK programmiern. Es funktioniert ja soweit mit an den Seiten abprallen und so, aber ich kann den balken nicht richtig bewegen bzw. garnicht. Beim Compilieren brinnt er aber keinen Fehler. Wer kann mir helfen? CODE:
Delphi-Quellcode:
[edit=MrSpock]Doppelpost gelöscht. Code Tags gesetzt. Mfg, MrSpock[/edit]
procedure TForm1.Button1Click(Sender: TObject);
const radius=15; balkenbreite=70; balkenhoehe=15; begin loeschcolor:=form1.color; loeschpen:=form1.color; loeschbrush:=form1.color; canvas.brush.color:=clblue; canvas.pen.color:=clblue; balkenmitte := form1.clientwidth div 2; balkenbx:=4; x:=width div 2; y:=height div 2; // Position bx:= 2; by:=2; canvas.pen.color:=clgreen; canvas.Brush.color:=clyellow; rechteck.Left := 80; rechteck.Top := 70; rechteck.Right := 130; rechteck.Bottom := 120; form1.Canvas.Rectangle(rechteck); //Rechteck repeat stop:=false; form1.canvas.Pen.Color:=clgreen; form1.canvas.Brush.color:=clyellow; canvas.Ellipse(x-radius,y-radius,x+radius,y+radius); //malen sleep(5); //warten form1.canvas.Pen.color:=loeschpen; form1.canvas.Brush.color:=loeschbrush; form1.Canvas.ellipse(x-radius,y-radius,x+radius,y+radius); //loeschen# x:=x+bx; y:=y+by; //rechnen if (x<radius) or(x>form1.clientwidth-radius) then begin bx:=-bx; end; if (y<radius) or(y>form1.ClientHeight-radius) then begin by:=-by; end; application.ProcessMessages; until stop=true; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=vk_F1 then begin rechteck.Left:=rechteck.left-5; rechteck.bottom:=rechteck.bottom-5; rechteck.Right:=rechteck.right-5; rechteck.Top:=rechteck.top-5; end; if Key=vk_F2 then begin rechteck.Left:=rechteck.left+5; rechteck.bottom:=rechteck.bottom+5; rechteck.Right:=rechteck.right+5; rechteck.Top:=rechteck.top+5; end; end; end. |
Re: Ping-Pong
So wird das nicht funktionieren. Du müsstes das Rechteck im Keydown schon neu zeichnen - und vorher das alte löschen - damit man die Änderung sieht.
|
Re: Ping-Pong
ausserdem würde ich empfehlen, das mit einem TShape zu machen.
->Muss man nicht neu zeichnen, sondern nur Top verändern. Und wegen F1 und F2: Nimm einfach VK_UP (pfeil hoch) und VK_DOWN (pfeil runter). Ansonsten, falls du Beispiel suchst, hab auch schon eins programmiert und kann dir evtl. Quellcode schicken. |
Re: Ping-Pong
Da ich um Code gebeten worden bin - so in etwa könnte dein KeyDown dann aussehen:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin canvas.pen.color := form1.color canvas.Brush.color := form1.color; form1.Canvas.Rectangle(rechteck); // Rechteck löschen if Key=vk_F1 then begin rechteck.Left:=rechteck.left-5; rechteck.bottom:=rechteck.bottom-5; rechteck.Right:=rechteck.right-5; rechteck.Top:=rechteck.top-5; end; if Key=vk_F2 then begin rechteck.Left:=rechteck.left+5; rechteck.bottom:=rechteck.bottom+5; rechteck.Right:=rechteck.right+5; rechteck.Top:=rechteck.top+5; end; canvas.pen.color:=clgreen; canvas.Brush.color:=clyellow; form1.Canvas.Rectangle(rechteck); // Rechteck an neuer Position zeichnen end; |
Re: Ping-Pong
Stichwort:
TForm.KeyPreview! |
Re: Ping-Pong
Naja ohne DelphiX kannst du sowieso nur eine Taste einlesen ;)
|
Re: Ping-Pong
Zitat:
|
Re: Ping-Pong
aso? ... naja aber das muss man dann ja die ganze Zeit abfragen ?! ist auch keine gute lösung
oder versteh ich das jetzt nicht ganz |
Re: Ping-Pong
Zitat:
|
Re: Ping-Pong
Danke an alle, die mir helfen konnten
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz