Item_Sek: Logische abfrage, was ist falsch?

Beitrag lesen

Hallo liebe Web-Programmierer/Entwickler,

ähm, ich habe da so ein kleines problem mit einer logischen abfrage.
und zwar, ich möchte einen punkt in einem raum wandern lassen und sobald dieser dann die "wände" (Bildschirmrand) berührt soll er die richtung wechseln, aber in der richtigen richtung.

Der raum hat eine größe von 1024px -X/Breite- und 768 -Y/Höhe- ,
ich habe zur visuellen ünterstützung an allen vier bildschirmseiten eine "wand" mit einer dicke von 30px gezeichnet, also habe ich folgenden bereich zur verfügung:

X von 30 bis 1024-30px
Y von 30 bis 768-30px

Kommt der punkt von x y und berührt als erstes y soll er in richtung -y "abtrumpfen" aber in richtung x weiter fliegen bis x (also 1024-30px) erreicht ist.

Einfach gesagt, eine art ping-pong ball der im raum hin und her fliegt.

Aber ich bekomme nicht die abfrage und den richtungswechsel auf die reihe.

  
; ### Variablen der größe des BS und Startpunkt ###  
  
breite=30  
width=1024  
height=768  
x=1024/2  
y=768/2  
  
; ### Bewegungsrichung ###  
  
bx=-1  
by=-1  
Repeat  
 ExamineKeyboard()  
 ExamineMouse()  
 StartDrawing(ScreenOutput())  
 FrontColor(RGB(255,255,180))  
 BackColor(RGB(100,100,100))  
 DrawingMode(#PB_2DDrawing_Transparent)  
  x=x+bx  
  y=y+by  
  
  ; ### Zeichne die Wände (30px dick am Bildschrimrand) ###  
  
  Box(0,0,w,b)  
  Box(0,h-30,w,b)  
  Box(0,0,b,h)  
  Box(w-30,0,b,h)  
  
  ; ### Abfrage ###  
  
  
  If y<=30  
   by=1  
   Else  
   by=-1  
  EndIf  
  
  If y>=768-30  
   by=-1  
   Else  
   by=1  
  EndIf  
  
  If x<=30  
   bx=1  
   Else  
   bx=-1  
  EndIf  
  
  If x>=1024-30  
   bx=-1  
   Else  
   bx=1  
  EndIf  
  
  ; ### Lasse mir die aktuellen x y werte anzeigen  
  
  DrawText(0,0,"x y:"+Str(x)+" "+Str(y),RGB(0,0,0))  
  
  ; ### Zeichne den Ball  
  
 Circle(x,y,10)  
 StopDrawing()  
 FlipBuffers()  
 ClearScreen(0)  

Wenn z.B y seinen max wert hat, soll er wieder runtergehen/zählen, dass passiert mit by, entweder by=1 oder by=-1 dieser wert wird dann der wirklichen y variable übergeben y=y+by, dass gleich mit x.

Der Ball geht zwar nicht durch die wand, trumpft aber auch nicht ab.... und ich begreife nicht warum......

Ich hoffe das mit jemand von euch einen kleinen tritt in die richtige richtung geben kann, thx.!

Item_Sek