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 1 von 6  1 23     Letzte »    
speedy23

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

break it problem

  Alt 31. Jan 2010, 16:50
ich habe diesen quelltext gefunden, der ist für pong... ich mache ein breakit aber ich habe das problem, dass ich den ball nicht im image halten kann. er fliegt einfach immer weiter... .



Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;

begin
  x := 5;
  y := 5;
  Shape1.Left := Shape1.Left +x ;
  Shape1.Top := Shape1.Top + y;

  
  if (Shape1.Top <= 100) or (Shape1.Top >= image1.ClientHeight) then
  begin
    y := -y;
  end;

  
  if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth) then
  begin
    x := -x;
  end;

end;

end.


müsste das nicht eigentlich durch image1.client... ausgeschlossen werden??

mfg

[edit=Matze][delphi]-Tags eingefügt. Zukünftig bitte selbst daran denken. MfG, Matze[/edit]
...oh yeah...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: break it problem

  Alt 31. Jan 2010, 16:57
Da x und y lokale Variabeln sind, interessiert es etwaige (durch die lokalen überdeckte) globale Variablen des selben Namens nicht die Bohne, was du dort zuweist
@Matze, warum hast du meinen Edit wegeditiert?
Markus Kinzler
  Mit Zitat antworten Zitat
speedy23

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

Re: break it problem

  Alt 31. Jan 2010, 17:00
und was sagt mir das jetzt... sorry aber ich versteh schon was das heißt aber wie wirkt sich das auf mein problem aus?

(sorry wegen dem falsch geposteten quelltext)
...oh yeah...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: break it problem

  Alt 31. Jan 2010, 17:01
Das heisst du sollst die lokalen Variablen weglassen!
Markus Kinzler
  Mit Zitat antworten Zitat
speedy23

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

Re: break it problem

  Alt 31. Jan 2010, 17:06
wenn ich aber x und y weglasse was ändert das an der sache ich muss ja den wechsel in die negative haben wenns reflektiert wird oder? wenn i einfach nur mit den zahlen anstatt variablen arbeite... i hab gerade n denkfehler
...oh yeah...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#6

Re: break it problem

  Alt 31. Jan 2010, 17:20
Erstmal die Reihenfolge ändern
und die Grenzen richtig setzen.
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;

begin
  x := 5;
  y := 5;
 
  if (Shape1.Top <= 100) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then
  begin
    y := -y;
  end;
  if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then
  begin
    x := -x;
  end;

  Shape1.Left := Shape1.Left + x;
  Shape1.Top := Shape1.Top + y;
end;
So, jetzt würden zumindestens die Shapes erstmal am Rand hängenbleiben, da rechtzeitig ausgewertet wird.

- Variable setzen
- diese Variable verrechnen
- jetzt erst die Begrenzung beachten und Wert änder bringt nichts mehr, da es schon verrechnet wurde


Ja und nun noch der nächste Schritt:

die variablem in den Private-Abschnitt der Form verschieben
var x,y:integer; und die Starteinstellung z.B. ins OnCreate (nur einmal bei, bzw. vor dem Start setzen)
Delphi-Quellcode:
x := 5;
y := 5;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
speedy23

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

Re: break it problem

  Alt 31. Jan 2010, 17:26
habs jetzt angepasst aber iwie bleibt das mittem auf meinem image hängen und pendelt... ich verstehs nicht...
wenn ich die x,y durch minus 5 ersetze startet er ja in entgegengesetzte richtung, aber das problem ist das er das image immernoch verlässt...



Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var x,y:integer;

begin
   x := 5;
  y := 5;

  if (Shape1.Top <= 0) or (Shape1.Top >= image1.ClientHeight - Shape1.Height) then
  begin
    y := -y;
  end;
  if (Shape1.Left <= 0) or (Shape1.Left >= image1.ClientWidth - Shape1.Width) then
  begin
    x := -x;
  end;

  Shape1.Left := Shape1.Left + x;
  Shape1.Top := Shape1.Top + y;
end;
[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt. Scheint manche hier zu überfordern, die entsprechende Sprache auszuwähen! Mfg, mkinzler[/edit]
...oh yeah...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#8

Re: break it problem

  Alt 31. Jan 2010, 17:31
was hab ich zu dem
Delphi-Quellcode:
x := 5;
y := 5;
geschrieben?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
speedy23

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

Re: break it problem

  Alt 31. Jan 2010, 17:41
hab ich jetzt gemacht, aber nun bewegt sich der ball gar nicht mehr ... die var x,y:integer; habsch oben beim form unter implementation und die x:=5, ... unter onbuttonclick bei meinem startknopf
...oh yeah...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: break it problem

  Alt 31. Jan 2010, 17:42
Und wo veränderst du diese Werte?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     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