Computergegner?
Verfasst: 08.11.2007 18:30
Hi, das hier ist die vereinfachtere Version (ohne Bilder, Ton oder animationen) meines ersten Spieles oder besser gesagt das erste was ich je mi PB programmiert habe...
Es ist ein Ping Pong Spiel für 2 Spieler, Ich will das jetzt aber erweitern das auch Einspieler Modus mit Computergegner und 3 Schwierigskeitstufen möglich ist.
Mir fehlt leider jeder Anhaltspunkt wie das gehen soll...
Wie funktioniert das im Prinzip?
Weiters fliegen die Bälle oft durch die Schläger und sogar durch die SchlägerWand ... Wie kann ich das ändern?
Danke Tompazi
Ps: falls wer ausprobiert....
Steurung: Linker Schläger WASD, Rechter Schläger Pfeiltasten, Wand für linken Schläger left Shift, Wand für rechten Schläger right Strg, Gegnerischer Spieler bleibt stehen SPACE für den linken Spieler und Enter für den rechten Spieler.
Empfohlene Levels 2-5
Es ist ein Ping Pong Spiel für 2 Spieler, Ich will das jetzt aber erweitern das auch Einspieler Modus mit Computergegner und 3 Schwierigskeitstufen möglich ist.
Mir fehlt leider jeder Anhaltspunkt wie das gehen soll...
Wie funktioniert das im Prinzip?
Weiters fliegen die Bälle oft durch die Schläger und sogar durch die SchlägerWand ... Wie kann ich das ändern?
Code: Alles auswählen
InitSprite()
InitKeyboard()
If OpenWindow(0, 100, 200, 200, 100, "Spieloptionen", #PB_Window_BorderLess |#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(0))
StringGadget(1,70,10, 100, 20,"Spieler 1")
TextGadget(2, 10, 10, 60, 20, "Spieler 1:")
StringGadget(3,70,30, 100, 20,"Spieler 2")
TextGadget(4, 10, 30, 60, 20, "Spieler 2:")
TextGadget(6, 10, 70, 60, 20, "Level:")
SpinGadget(5, 70, 70, 30, 20, 0,7,#PB_Spin_ReadOnly | #PB_Spin_Numeric)
ButtonGadget(0, 140, 66, 50, 24, "GO")
EndIf
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Gadget
If EventGadget() = 5
SetGadgetText(5, Str(GetGadgetState(5)))
EndIf
Select EventGadget()
Case 0
Player1$ = GetGadgetText(1)
Player2$ = GetGadgetText(3)
Level = GetGadgetState(5)
EventID = #PB_Event_CloseWindow
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
OpenScreen(1024,768,32 ,"Ping-Pong BETA")
X = 1
Y = 1
SP1 = 0
SPL = 0
SP2 = 0
SPR = 0
SchlaegerWand = 0
SchlaegerWand1 = 0
pause = 0
Punkte1 = 0
Punkte2 = 0
BallX = 500
BallY = 380
Ball2X = 520
Ball2Y = 390
BewegX = -level - 1
BewegY = -level - 1
Beweg2X = level + 1
Beweg2Y = level + 1
SchlaegerRX = 1007
SchlaegerRY = 384
SchlaegerLX = 0
SchlaegerLY = 384
Repeat
ClearScreen($000000)
StartDrawing(ScreenOutput())
DrawingMode(1)
FrontColor($FFFFFF)
Circle(BallX, BallY,10)
Circle(Ball2X, Ball2Y,10)
Box(0,0,1024,32)
Box(0,736,1024,32)
Box(SchlaegerLX - 10, SchlaegerLY,10,48)
Box(SchlaegerRX + 10, SchlaegerRY,10,48)
If SchlaegerWand = 1
Box(SchlaegerLX - 10,0,10,768)
EndIf
If SchlaegerWand1 = 1
Box(SchlaegerRX + 10,0,10,768)
EndIf
DrawText(0,40,Player1$+Chr(10)+": " + Str(Punkte1))
DrawText(0,60,"Special: " + Str(SPL))
DrawText(912,40,Player2$+Chr(10)+": " + Str(Punkte2))
DrawText(912,60,"Special: " + Str(SPR))
DrawText(480,5,"Level:" + Str(Level))
StopDrawing()
FlipBuffers()
ExamineKeyboard()
If KeyboardReleased(#PB_Key_P)
If pause = 0
pause = 1
StartDrawing(ScreenOutput())
DrawingMode(1)
FrontColor($FFFFFF)
If pause = 1
DrawText(480,380,"-PAUSE-")
EndIf
StopDrawing()
FlipBuffers()
Repeat
pause = 1
Delay(1)
ExamineKeyboard()
Until KeyboardReleased(#PB_Key_P)
pause = 0
EndIf
EndIf
If X = 1
If KeyboardPushed(#PB_Key_Up)
SchlaegerRY - level -2
EndIf
If KeyboardPushed(#PB_Key_Down)
SchlaegerRY + level +2
EndIf
If KeyboardPushed(#PB_Key_Left)
SchlaegerRX - level -2
EndIf
If KeyboardPushed(#PB_Key_Right)
SchlaegerRX + level +2
EndIf
EndIf
If Y = 1
If KeyboardPushed(#PB_Key_A)
SchlaegerLX - level -2
EndIf
If KeyboardPushed(#PB_Key_D)
SchlaegerLX + level +2
EndIf
If KeyboardPushed(#PB_Key_W)
SchlaegerLY - level -2
EndIf
If KeyboardPushed(#PB_Key_S)
SchlaegerLY + level +2
EndIf
EndIf
If SPL > 0
If KeyboardReleased(#PB_Key_Space)
SPL = SPL - 1
uts4 = Date()
X = 0
EndIf
EndIf
If (Date() > uts4 + 4) And (x=0)
X = 1
EndIf
If SPL > 0
If KeyboardReleased(#PB_Key_LeftShift)
SPL = SPL - 1
uts3 = Date()
SchlaegerWand = 1
EndIf
EndIf
If (Date() > uts3 + 4) And (SchlaegerWand=1)
SchlaegerWand = 0
EndIf
If SchlaegerWand = 1
If BallX > SchlaegerLX And BallX < SchlaegerLX + 10
BewegX = -BewegX
EndIf
If Ball2X > SchlaegerLX And Ball2X < SchlaegerLX + 10
Beweg2X = -Beweg2X
EndIf
EndIf
If SPR > 0
If KeyboardReleased(#PB_Key_Return)
SPR = SPR - 1
uts1 = Date()
Y = 0
EndIf
EndIf
If (Date() > uts1 + 4) And (Y=0)
Y = 1
EndIf
If SPR > 0
If KeyboardReleased(#PB_Key_RightControl)
SPR = SPR - 1
uts2 = Date()
SchlaegerWand1 = 1
EndIf
EndIf
If (Date() > uts2 + 4) And (SchlaegerWand1=1)
SchlaegerWand1 = 0
EndIf
If SchlaegerWand1 = 1
If BallX > SchlaegerRX And BallX < SchlaegerRX + 10
BewegX = -BewegX
EndIf
If Ball2X > SchlaegerRX And Ball2X < SchlaegerRX + 10
Beweg2X = -Beweg2X
EndIf
EndIf
If SchlaegerRY < 33
SchlaegerRY = 32
EndIf
If SchlaegerRY > 688
SchlaegerRY = 688
EndIf
If SchlaegerRX < 0
SchlaegerRX = 0
EndIf
If SchlaegerRX > 998
SchlaegerRX = 998
EndIf
If SchlaegerLY < 33
SchlaegerLY = 32
EndIf
If SchlaegerLY > 688
SchlaegerLY = 688
EndIf
If SchlaegerLX < 10
SchlaegerLX = 10
EndIf
If SchlaegerLX > 1008
SchlaegerLX = 1008
EndIf
BallX + BewegX
BallY + BewegY
Ball2X + Beweg2X
Ball2Y + Beweg2Y
If Ball2Y < 42
Beweg2Y = -Beweg2Y
EndIf
If Ball2Y > 726
Beweg2Y= -Beweg2Y
EndIf
If BallY < 42
BewegY = -BewegY
EndIf
If BallY > 726
BewegY= -BewegY
EndIf
If BallX > SchlaegerLX And BallX < SchlaegerLX + 10 And BallY > SchlaegerLY And BallY < SchlaegerLY + 48
BewegX = -BewegX
EndIf
If Ball2X > SchlaegerLX And Ball2X < SchlaegerLX + 10 And Ball2Y > SchlaegerLY And Ball2Y < SchlaegerLY + 48
Beweg2X = -Beweg2X
EndIf
If BallX > SchlaegerRX And BallX < SchlaegerRX + 10 And BallY > SchlaegerRY And BallY < SchlaegerRY + 48
BewegX = -BewegX
EndIf
If Ball2X > SchlaegerRX And Ball2X < SchlaegerRX + 10 And Ball2Y > SchlaegerRY And Ball2Y < SchlaegerRY + 48
Beweg2X = -Beweg2X
EndIf
If BallX = < 0
Punkte2 = Punkte2 + 1
BallX = 512
BallY = 384
BewegX = -level - 1
BewegY = -level - 1
EndIf
If BallX = > 1024
Punkte1 = Punkte1 + 1
BallX = 512
BallY = 384
BewegX = -level - 1
BewegY = -level - 1
EndIf
If Ball2X = < 0
Punkte2 = Punkte2 + 1
Ball2X = 512
Ball2Y = 384
Beweg2X = level + 1
Beweg2Y = level + 1
EndIf
If Ball2X = > 1024
Punkte1 = Punkte1 + 1
Ball2X = 512
Ball2Y = 384
Beweg2X = level + 1
Beweg2Y = level + 1
EndIf
If (Punkte1/ 10) + 1 > SP1
SP1 = SP1 + 1
SPL = SPL + 1
EndIf
If (Punkte2/ 10) + 1 > SP2
SP2 = SP2 + 1
SPR = SPR + 1
EndIf
Until KeyboardPushed(1)
CloseScreen()
If Punkte1 > Punkte2
Winner$ = Player1$
ElseIf Punkte1 < Punkte2
Winner$ = Player2$
ElseIf Punkte1 = Punkte2
Winner$ = "Niemand"
EndIf
MessageRequester("Spiel Beendet",Winner$ + " gewinnt! " + "Punktestand: " + Str(Punkte1) + ":" + Str(Punkte2),0)
Ps: falls wer ausprobiert....
Steurung: Linker Schläger WASD, Rechter Schläger Pfeiltasten, Wand für linken Schläger left Shift, Wand für rechten Schläger right Strg, Gegnerischer Spieler bleibt stehen SPACE für den linken Spieler und Enter für den rechten Spieler.
Empfohlene Levels 2-5