PurePong
Publié : jeu. 26/août/2004 21:22
C'est mon premier petit jeu en PureBasic.
Rien de très original si ce n'est que l'ordi joue tout seul avec une marge d'erreur aléatoire afin de rendre le jeu le moins linéaire possible.
Je crois que ça peut faire un bon tuto pour débutants.
Si ça intéresse, je peux commenter le code.
A noter comme d'habitude avec moi la gestion du son et des images sans utilisation de medias (je sais c'est con mais ça me plaît, ça fait des petits exe et ça se diffuse plus facilement !)
Rien de très original si ce n'est que l'ordi joue tout seul avec une marge d'erreur aléatoire afin de rendre le jeu le moins linéaire possible.
Je crois que ça peut faire un bon tuto pour débutants.
Si ça intéresse, je peux commenter le code.
A noter comme d'habitude avec moi la gestion du son et des images sans utilisation de medias (je sais c'est con mais ça me plaît, ça fait des petits exe et ça se diffuse plus facilement !)
Code : Tout sélectionner
; PurePong par Hackotedelaplaque
debut :
InitSprite()
InitKeyboard()
#raquette = 0
#balle = 1
OpenScreen(640, 480, 8, "PurePong")
SetFrameRate(75)
CreateSprite(#raquette, 20, 50, 0)
CreateSprite(#balle, 10, 10, 0)
StartDrawing(SpriteOutput(#raquette))
Box(0, 0, 20, 50, RGB(255, 255, 255))
StopDrawing()
StartDrawing(SpriteOutput(#balle))
Box(0, 0, 10, 10, RGB(255, 255, 255))
StopDrawing()
Structure raquette
x.l
y.l
score.b
EndStructure
Structure balle Extends raquette
sens.b
echange.w
faute.w
EndStructure
Dim raquette.raquette(1)
raquette(0)\x = 0
raquette(1)\x = 620
For n = 0 To 1
raquette(n)\y = 220
raquette(n)\score = 0
Next
Global balle.balle
balle\echange = 0
balle\faute = Random(9)
balle\x = 320
balle\y = 220
balle\sens = Random(3)
Procedure moveraquettes()
If KeyboardPushed(#PB_Key_Down)
If raquette(0)\y < 430
raquette(0)\y + 5
Else
raquette(0)\y = 430
EndIf
EndIf
If KeyboardPushed(#PB_Key_Up)
If raquette(0)\y > 0
raquette(0)\y - 5
Else
raquette(0)\y = 0
EndIf
EndIf
If balle\echange > balle\faute
raquette(1)\y = balle\y + 10
Else
raquette(1)\y = balle\y - 10
EndIf
EndProcedure
Procedure moveballe()
Select balle\sens
Case 0
balle\x - 4
balle\y - 4
Case 1
balle\x + 4
balle\y - 4
Case 2
balle\x - 4
balle\y + 4
Case 3
balle\x + 4
balle\y + 4
EndSelect
EndProcedure
Procedure collisiontest()
If balle\y < 0 Or balle\y > 470 ; test collision avec les bords
Beep_(1000, 50)
Select balle\sens
Case 0 : balle\sens = 2
Case 1 : balle\sens = 3
Case 2 : balle\sens = 0
Case 3 : balle\sens = 1
EndSelect
EndIf
For n = 0 To 1
If SpriteCollision(#balle, balle\x, balle\y, #raquette, raquette(n)\x, raquette(n)\y)
Beep_(200, 100)
balle\echange + 1
Select balle\sens
Case 0 : balle\sens = 1
Case 1 : balle\sens = 0
Case 2 : balle\sens = 3
Case 3 : balle\sens = 2
EndSelect
EndIf
Next
EndProcedure
Procedure score()
If balle\x < 0 Or balle\x > 640
If balle\x < 0
raquette(1)\score + 1
For a = 1 To 100
Beep_(200 - a, 10)
Next
Else
raquette(0)\score + 1
For a = 1 To 100
Beep_(1000 + a, 10)
Next
EndIf
balle\echange = 0
balle\faute = Random(7)
balle\x = 320
balle\y = 220
balle\sens = Random(3)
raquette(0)\x = 0
raquette(1)\x = 620
raquette(n)\y = 220
raquette(1)\y = 220
For n = 0 To 1
If raquette(n)\score = 5
CloseScreen()
MessageRequester("Merci d'avoir joué à PurePong", "Score Final : " + Str(raquette(0)\score) + " à " + Str(raquette(1)\score), #PB_MessageRequester_Ok)
If MessageRequester("PurePong", "On remet ça ? ", #PB_MessageRequester_YesNo) = 6 ; 6=yes 7=no
Goto debut
Else
MessageRequester("PurePong", "Dommage, une autre fois alors !", #PB_MessageRequester_OK)
End
EndIf
EndIf
Next
EndIf
EndProcedure
;- Boucle
Repeat
ClearScreen(0, 0, 0)
StartDrawing(ScreenOutput())
Line(0, 0, 640, 0, RGB(255, 255, 255))
Line(0, 479, 640, 0, RGB(255, 255, 255))
Locate(250, 240)
DrawingMode(1)
FrontColor(255, 255, 255)
DrawText(Str(raquette(0)\score))
Locate(390, 240)
DrawText(Str(raquette(1)\score))
StopDrawing()
DisplaySprite(#raquette, raquette(0)\x, raquette(0)\y)
DisplaySprite(#raquette, raquette(1)\x, raquette(1)\y)
DisplaySprite(#balle, balle\x, balle\y)
ExamineKeyboard()
moveraquettes()
collisiontest()
moveballe()
score()
FlipBuffers(0)
Until KeyboardPushed(#PB_Key_Escape)
End