AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

break it problem

Ein Thema von speedy23 · begonnen am 31. Jan 2010 · letzter Beitrag vom 1. Feb 2010
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
speedy23

Registriert seit: 11. Nov 2008
76 Beiträge
 
#11

Re: break it problem

  Alt 31. Jan 2010, 17:47
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... )
...oh yeah...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: break it problem

  Alt 31. Jan 2010, 17:52
Dann verwende besser Konstanten
const dx=5, dy=5;
Markus Kinzler
  Mit Zitat antworten Zitat
speedy23

Registriert seit: 11. Nov 2008
76 Beiträge
 
#13

Re: break it problem

  Alt 31. Jan 2010, 18:00
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.
...oh yeah...
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#14

Re: break it problem

  Alt 31. Jan 2010, 18:10
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:
  • Warum verwendest du lokale Variablen, die genauso heißen, wie deine Konstanten?
  • Wie willst du denn damit Werte ungleich 0 erreichen?
  • Mal debuggen und gucken, was dx und dy so für werte haben.

Delphi-Quellcode:
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;
Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
speedy23

Registriert seit: 11. Nov 2008
76 Beiträge
 
#15

Re: break it problem

  Alt 31. Jan 2010, 18:21
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;
...oh yeah...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#16

Re: break it problem

  Alt 31. Jan 2010, 18:24
Hier
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#17

Re: break it problem

  Alt 31. Jan 2010, 18:28
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
speedy23

Registriert seit: 11. Nov 2008
76 Beiträge
 
#18

Re: break it problem

  Alt 31. Jan 2010, 18:36
Delphi-Quellcode:
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;
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
aber ich denke ich soll mit konstanten arbeiten
...oh yeah...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: break it problem

  Alt 31. Jan 2010, 18:41
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;
Markus Kinzler
  Mit Zitat antworten Zitat
speedy23

Registriert seit: 11. Nov 2008
76 Beiträge
 
#20

Re: break it problem

  Alt 31. Jan 2010, 18:44
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?
...oh yeah...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz