Moin Moin!
Also bin ziemlich neu hier und überhaupt Einsteiger in der Welt des Programmierens. Zur Zeit arbeite ich an einem kleinem Spiel das jeder kennt. Es handelt sich um Pong für zwei Spieler. Es funktioniert schon ganz gut doch sobald der ball ins aus geht wird abgebrochen obwohl er die punkte zählen soll und erst ab einem betimmten wert abgebrochen werden soll. wär cool wenn mir einer von euch mal ein bisschen auf die sprünge helfen könnte!!
danke schon mal im voraus!!!!
InitSprite()
InitKeyboard()
OpenScreen(640,480,16,"pong_für_zwei")
DefType.w
Global ballx
Global bally
Global bewegx
Global bewegy
Global schlaegerux
Global schlaegeruy
Global schlaegerox
Global schlaegeroy
Global punkteu
Global punkteo
ballx = 319
bally = 239
a =1
b = 1
bewegx = a
bewegy = b
schlaegerux = 304 ; da der schlager 30 pixel breit ist
schlaegeruy = 469
schlaegerox = 304
schaegeroy = 0
punkteu = 0
punkteo = 0
If punkteu < 5 Or punkteo < 5
Repeat
ClearScreen(0,0,0)
StartDrawing(ScreenOutput())
FrontColor(255,255,255)
Box(0,0,20,479)
Box(619,0,20,479)
Box(ballx-1,bally-1,3,3)
FrontColor(055,099,243)
Box(schlaegerux,schlaegeruy,30,10)
FrontColor(132,203,123)
Box(schlaegerox,schlaegeroy,30,10)
StopDrawing()
FlipBuffers()
ExamineKeyboard()
If KeyboardPushed(#pb_key_left)
schlaegerux -2
EndIf
If KeyboardPushed(#pb_key_right)
schlaegerux + 2
EndIf
If schlaegerux < 21
schlaegerux = 21
EndIf
If schlaegerux > 588
schlaegerux = 588
EndIf
If KeyboardPushed(#pb_key_a)
schlaegerox -2
EndIf
If KeyboardPushed(#pb_key_d)
schlaegerox + 2
EndIf
If schlaegerox < 21
schlaegerox = 21
EndIf
If schlaegerox > 588
schlaegerox = 588
EndIf
ballx + bewegx
bally + bewegy
If ballx > 619
bewegx = -a
EndIf
If ballx < 20
bewegx = a
EndIf
If ballx > schlaegerux - 1 And ballx < schlaegerux + 29 And bally >schlaegeruy -1 And bally < schlaegeruy + 9
bewegy = -b
EndIf
If ballx > schlaegerox -1 And ballx < schlaegerox + 29 And bally > schlaegeroy -1 And bally < schlaegeroy + 9
bewegy = b
EndIf
If bally < 0
punkteu + 1
EndIf
If bally > 479
punkteo +1
EndIf
Until KeyboardPushed(1) Or punkteu = 5 Or punkteo = 5
EndIf
pong für zwei problem
Also kann dir grad net helfen vielleicht später aber mal ein paar Tipps zum Aufbau eines Programms.
1) Man sollte die Sachen in Prozeduren packen, damit behältst du später die Übersicht.
2) Wenn du Alle Globalen in eine Structure packst, kannst du wenn du die Structure auch global machst, wesentlich übersichtlicher Handeln.
3) Einrücken von Codeteilen bei IFs, Repeat usw
4) Damit du nicht 100% Speicherauslastung hast brauchst du ein Delay von mindestens 1
5) Code kommt hier im Board in CodeTags
(Soll net böse gemeint sein, eher als Tipp)
1) Man sollte die Sachen in Prozeduren packen, damit behältst du später die Übersicht.
2) Wenn du Alle Globalen in eine Structure packst, kannst du wenn du die Structure auch global machst, wesentlich übersichtlicher Handeln.
3) Einrücken von Codeteilen bei IFs, Repeat usw
4) Damit du nicht 100% Speicherauslastung hast brauchst du ein Delay von mindestens 1
5) Code kommt hier im Board in CodeTags

(Soll net böse gemeint sein, eher als Tipp)
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Zu 2) das ist IMHO so, so könnte man zB die Daten der Personen auch gleich in einem Array speichern
Ohne mir den Code angeschaut zu Haben (hab nur probegespielt) gehe ich mal davon aus, dass wen der Ball auserhalb des Spielfeldes ist, dass er dann nicht wieder in die Mitte gesetzt wird und er so immer "Auserhalb" bleibt, und dann die 5 Punkte schnell zusammen sind. (Überprüfe ich jetzt mal)
Ohne mir den Code angeschaut zu Haben (hab nur probegespielt) gehe ich mal davon aus, dass wen der Ball auserhalb des Spielfeldes ist, dass er dann nicht wieder in die Mitte gesetzt wird und er so immer "Auserhalb" bleibt, und dann die 5 Punkte schnell zusammen sind. (Überprüfe ich jetzt mal)
Hab jetzt nochmal geschaut:
Ändere den Schluss einfach in :
Das müsste so eigendlich gehen 
Ändere den Schluss einfach in :
Code: Alles auswählen
If bally < 0
punkteu + 1
ballx=300
bally=300
EndIf
If bally > 479
ballx=300
bally=300
punkteo +1
EndIf
Delay(10)
If punkteu = 5 Or punkteo = 5
Break
EndIf
