Ich habs eben drüben auf dem anderen Rechner aus dem Kopf nochmal eingefügt (das oben von Dir Beschriebene mit dem PaddelSpeed)
Dabei kam ich irgendwie plötzlich nicht mehr ganz an den Rand...
Zusätzlich hab ich also noch eine Variable gebraucht (ich rechne halt kein Ergebnis gerne 2mal oder öfter aus sondern merk mir's lieber), und zwar PaddelMove- eben die tatsächliche Bewegung,
Paddelspeed hab ich doch wieder bis auf 1 runter zugelassen- und das Maximum auf 15 reduziert und den PaddelSpeed sofort an anderen Stellen im Code verwendet.
im Eingabe verarbeiten siehts nun bei mir so aus:
Code: Alles auswählen
Case #Befehl_Abfeuern
If GameLevel = 0
If hatJoystick
SetGadgetText(Statusanzeige, "F1 or JoyButton 1 to Start a new Game")
Else
SetGadgetText(Statusanzeige, "F1 to Start a new Game")
EndIf
Else
ResetList(Ball())
While NextElement(Ball())
If Ball()\Geschw = 0
Ball()\Einschlag = #bumms_Paddel
Ball()\Korrigieren = 0
Ball()\Geschw = 5 + Random(GameLevel)/10
If vorherigerBefehl= #Befehl_GehLinks
Ball()\Richtung= 269 - 2 * PaddelSpeed
ElseIf vorherigerBefehl = #Befehl_GehRechts
Ball()\Richtung= 271 + 2 * PaddelSpeed
Else
Repeat
Ball()\Richtung = 255 + Random(30)
Until Ball()\Richtung <> 270
EndIf
EndIf
Wend
SetGadgetText(Statusanzeige, "Level " + Str(GameLevel))
ZusatzCount = 0
EndIf
Case #Befehl_GehLinks
If vorherigerBefehl = #Befehl_GehLinks
If PaddelSpeed < 15
PaddelSpeed = PaddelSpeed + 1
EndIf
Else
PaddelSpeed = 1
EndIf
If PaddelLinks >= PaddelSpeed
PaddelMove = PaddelSpeed
Else
PaddelMove = PaddelLinks
EndIf
PaddelLinks = PaddelLinks - PaddelMove
ResetList(Ball())
While NextElement(Ball())
If Ball()\Geschw = 0
Ball()\Pos\X = Ball()\Pos\X - PaddelMove
EndIf
Wend
Case #Befehl_GehRechts
If vorherigerBefehl = #Befehl_GehRechts
If PaddelSpeed < 15
PaddelSpeed = PaddelSpeed + 1
EndIf
Else
PaddelSpeed = 1
EndIf
If PaddelLinks + PaddelBreit + PaddelSpeed < 512
PaddelMove = PaddelSpeed
Else
PaddelMove= 512 - (PaddelLinks + Paddelbreit)
EndIf
PaddelLinks = PaddelLinks + PaddelMove
ResetList(Ball())
While NextElement(Ball())
If Ball()\Geschw = 0
Ball()\Pos\X = Ball()\Pos\X + PaddelMove
EndIf
Wend
EndSelect
und die Prozedur "Umkehren" ist nun auch etwas geändert- da lassen die Bälle sich so richtig schön anschneiden und auch gezielt aus den Ecken bzw. vom Rand weglenken indem man eben kürzer oder länger gegen die Seitenwand drückt
Code: Alles auswählen
Case #bumms_Paddel
neueRichtung= -1 * (Richtung - 90) + 270
; etwas abfälschen...
If letzterBefehl=#Befehl_GehLinks
neueRichtung = neueRichtung - PaddelSpeed
ElseIf letzterBefehl = #Befehl_GehRechts
neueRichtung = neueRichtung + PaddelSpeed
EndIf
; und in senkrechte Richtung zwingen
If neueRichtung >= 315
neueRichtung = neueRichtung - 3
ElseIf neueRichtung <= 225
neueRichtung = neueRichtung + 3
EndIf
EndSelect
Das mit dem Bildschirmschoner test ich doch gleich mal...
EDIT:
getestet: ja- auch so gehts, das Bild bleibt erhalten wenn man die Buffers so flippt, egal ob Screen vorher active war oder nicht - konfus - wär mir so nicht in den Sinn gekommen
Kauf den Kindern lieber ein Gamepad als einen Joystick. Würd ich sagen. Wenn Du's auch benutzen willst sollte es schon eines mit 2 Joysticks, einem Steuerkreuz und 12, davon 10 sichtbaren Buttons sein (2 Buttons sind die Jysticks die kann man runter dücken) - also der ganz normale Playstation-Standard - gibts von unzähligen Herstellern.
PS. Lassen sich gepostete Codes in diesem Forum irgendwie ein/ausklappbar machen?