![]() |
Re: break it problem
inwiefern? na im timer oder net? solange der timer läuft wird alle 0,1 sek das shape 5 pixel verschoben oder hab ich das system nicht verstanden? (offensichtlich... :oops:)
|
Re: break it problem
Dann verwende besser Konstanten
Delphi-Quellcode:
const dx=5, dy=5;
|
Re: break it problem
daran liegt das glaube ich leider nicht... ich zeig dir mal den kompletten code, vllt kannst du mir dann weiterhelfen, wenn du magst.
Code:
implementation const dx=5; dy=5; {$R *.dfm} var x,y:integer; procedure TForm1.PauseknopfClick(Sender: TObject); begin {Spiel pausieren und button pause unsichtbar --> Start sichtbar} pauseknopf.visible:=false; timer1.enabled:=false; end; procedure TForm1.StartknopfClick(Sender: TObject); begin {macht den pauseknopf sichtbar, setzt spiel fort} timer1.Enabled:=true; pauseknopf.Visible:=True; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if reflektor.left > 110 then begin case ord(key) of vk_left:reflektor.left:=reflektor.left-14; end; end; if (reflektor.left < 426) then begin case ord(key) of vk_right:reflektor.left:=reflektor.left+14; end; end; end; procedure TForm1.Timer1Timer(Sender: TObject); var dx,dy:integer; begin if (Shape1.Top <= 0) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then begin dy := -dy; end; if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then begin dx := -dx; end; Shape1.Left := Shape1.Left + dx; Shape1.Top := Shape1.Top + dy; end; procedure TForm1.FormCreate(Sender: TObject); begin timer1.Enabled:=false; end; procedure TForm1.NeuesSpiel1Click(Sender: TObject); begin timer1.enabled:=true; end; end. |
Re: break it problem
HI,
um die schönen Formatierungen wie in den obrigen Posts hinzubekommen, verwende NICHT Code sondern Delphi-Tags. Die gibts übrigens in der Menüleiste unter "Oft genutzt". so, zu deinem Problem:
Delphi-Quellcode:
Bernhard
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer; begin // x = dx; // y = dy; if (Shape1.Top <= 0) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then begin dy := -dy; end; if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then begin dx := -dx; end; Shape1.Left := Shape1.Left + dx; Shape1.Top := Shape1.Top + dy; end; |
Re: break it problem
sorry aber nur das mit den variablen habe ich verstanden... was meinst du mit dem rest? wieso muss ich ungleich null erreichen? und debuggen... habsch noch nie gemacht?
edit| tut mir leid das ich euch so auf die nerven gehe aber ich finde den fehler einfach nicht... ich versteh das so...
Delphi-Quellcode:
rocedure TForm1.Timer1Timer(Sender: TObject);
var dx,dy:integer; begin if (Shape1.Top <= 0) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then //wenn oberseite // vom kreis=0 oder der kreis die höhe des images überschreitet , dann reflektiere begin dy := -dy; //richtungsänderung end; if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then begin dx := -dx; // richtungsänderung end; Shape1.Left := Shape1.Left + dx; // das verrücken ohne kollision vom kreis Shape1.Top := Shape1.Top + dy; end; |
Re: break it problem
![]() |
Re: break it problem
nochmal: für deine Richtungsänderung kannst du keine Konstanten nehmen, da wie der Name schon sagt, Konstanten konstant sind und du denen somit keinen ANDEREN Wert als den einmal zugewiesenen geben kannst. Also brauchst du ne Variable (da die variabel ist), der du dann den Wert der Konstanten zuweist und dann die Richtungsänderung ausführst.
Bernhard |
Re: break it problem
Delphi-Quellcode:
ich verstehe einfach nicht was ich tun soll könntest du nicht evtl sagen was ich durch was ersetzen muss... ichv erstehe deine gedanken mit den konstanten klar die können sich dann nciht verändern
begin
// x:=DX; // y:=dy; if (Shape1.Top <= 0) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then begin dy := -dy; end; if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then begin dx := -dx; end; Shape1.Left := Shape1.Left + dx; Shape1.Top := Shape1.Top + dy; end; aber ich denke ich soll mit konstanten arbeiten |
Re: break it problem
Die Konstanten waren für den Wert 5 gedacht.
Delphi-Quellcode:
x:=DX;
y:=dy; if (Shape1.Top <= 0) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then begin y := -dy; end; if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then begin x := -dx; end; Shape1.Left := Shape1.Left + x; Shape1.Top := Shape1.Top + y; |
Re: break it problem
danke für die antwort :)
leider funktinoiert es weiterhin nicht der punkt wird kreiert und flimmert auf einer stelle ohne jegliche bewegung... was zu hölle mach ich denn falsch? |edit soll ich evtl den ganzen quelltext nochmal posten? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 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