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