pong für zwei problem

Anfängerfragen zum Programmieren mit PureBasic.
Micha
Beiträge: 2
Registriert: 19.12.2005 20:15

pong für zwei problem

Beitrag von Micha »

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
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

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


:allright:

(Soll net böse gemeint sein, eher als Tipp)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ad 2) : blödsinn

aber: bitte code tags... das kann so keiner lesen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

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)
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Hab jetzt nochmal geschaut:
Ä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
Das müsste so eigendlich gehen :allright:
Micha
Beiträge: 2
Registriert: 19.12.2005 20:15

Beitrag von Micha »

vielen dank für dein hilfe!!!
werd mich in zukunft darum bemühen dein tipps zu befolgen.
Antworten