Flèche haut et Flèche bas pour contrôler, et ESC pour sortir :p
Code : Tout sélectionner
;-PONGY PAR CRYSTAL NOIR
;Initialisation des composants
InitSprite()
InitKeyboard()
;Initialisation des constantes
;Variables Globales
Global MaFenetre ;Fenêtre principale
Global JoueurX ;Position en X du joueur
Global JoueurY ;Idem en Y
Global AdversaireX ;Position du PC en X
Global AdversaireY ;Position du PC en Y
Global BalleX ;Position de la balle en X
Global BalleY ;Position de la balle en Y
Global SpeedX ;Sens de la balle et vitesse en X
Global SpeedY ;Sens de la balle et vitesse en Y
Global Aleatoire ;IA du PC
Global AdvScore ;Score du PC
Global JouScore ;Score du joueur
;Constantes
#Bat_Joueur = 1 ;Sprite du joueur
#Bat_Adversaire = 2 ;Sprite du PC
#Decor = 3 ;Ben...c'est le décor
#Balle = 4 ;C'est la bouboule
;Création de la fenêtre principale
SetRefreshRate(60)
MaFenetre = OpenScreen(800,600,32,"Test")
If MaFenetre = 0
MessageRequester("Erreur", "Impossible d'ouvrir une fenêtre DirectX", #PB_MessageRequester_Ok)
EndIf
;Création des sprites
CreateSprite(#Bat_Joueur,20,100)
JoueurX = 10
JoueurY = 250
JouScore = 0
StartDrawing(SpriteOutput(#Bat_Joueur))
Box(0,0,20,100,RGB(255,255,255))
StopDrawing()
CreateSprite(#Bat_Adversaire,20,100)
AdversaireX = 772
AdversaireY = 250
Aleatoire = Random(99) +1
AdvScore = 0
StartDrawing(SpriteOutput(#Bat_Adversaire))
Box(0,0,20,100,RGB(255,255,255))
StopDrawing()
CreateSprite(#Decor,800,600)
StartDrawing(SpriteOutput(#Decor))
Box(0,0,800,10,RGB(255,255,255))
Box(0,590,800,10,RGB(255,255,255))
Box(400,0,10,600,RGB(255,255,255))
StopDrawing()
CreateSprite(#Balle,15,15)
BalleX = 300
BalleY = 250
SpeedX = 5
SpeedY = 5
StartDrawing(SpriteOutput(#Balle))
Box(0,0,15,15,RGB(255,0,0))
StopDrawing()
TransparentSpriteColor(#Balle,0,0,0)
Procedure MovePlayer()
If KeyboardPushed(#PB_Key_Up) :JoueurY - 4 :EndIf
If KeyboardPushed(#PB_Key_Down) :JoueurY + 4 :EndIf
If JoueurY < 12 :JoueurY = 12 :EndIf
If JoueurY > 487 :JoueurY = 487 :EndIf
DisplaySprite(#Bat_Joueur,JoueurX,JoueurY)
EndProcedure
Procedure MoveBalle()
If BalleX > 799
JouScore + 1
BalleY = 300
BalleX = 400
JoueurX = 10
JoueurY = 250
AdversaireX = 772
AdversaireY = 250
SpeedX = -SpeedX
Aleatoire = Random(99) + 1
EndIf
If BalleX < 20
AdvScore + 1
BalleY = 300
BalleX = 400
JoueurX = 10
JoueurY = 250
AdversaireX = 772
AdversaireY = 250
Aleatoire = Random(99) + 1
EndIf
If BalleY < 20 Or BalleY > 575
SpeedY = -SpeedY
EndIf
If SpriteCollision(#Balle,BalleX,BalleY,#Bat_Joueur,JoueurX,JoueurY)
SpeedX = SpeedX-(SpeedX*2)
StartDrawing(SpriteOutput(#Balle))
Box(0,0,15,15,RGB(Random(255),Random(255),Random(255)))
StopDrawing()
Aleatoire = Random(99) + 1
EndIf
If SpriteCollision(#Balle,BalleX,BalleY,#Bat_Adversaire,AdversaireX,AdversaireY)
SpeedX = SpeedX-(SpeedX*2)
StartDrawing(SpriteOutput(#Balle))
Box(0,0,15,15,RGB(Random(255),Random(255),Random(255)))
StopDrawing()
Aleatoire = Random(99) + 1
EndIf
BalleX + SpeedX
BalleY + SpeedY
DisplaySprite(#Balle,BalleX,BalleY)
EndProcedure
Procedure MoveAdversaire()
If BalleY > AdversaireY
If Aleatoire < 35
If AdversaireY < BalleY - 100
AdversaireY + 5
EndIf
Else
AdversaireY + 5
EndIf
EndIf
If BalleY < AdversaireY
If Aleatoire < 35
If AdversaireY > BalleY + 100
AdversaireY - 5
EndIf
Else
AdversaireY - 5
EndIf
EndIf
If AdversaireY < 12 :AdversaireY = 12 :EndIf
If AdversaireY > 487 :AdversaireY = 487 :EndIf
DisplaySprite(#Bat_Adversaire,AdversaireX,AdversaireY)
timer - 1
EndProcedure
Procedure DisplayScore()
StartDrawing(ScreenOutput())
Locate(325,30)
BackColor(0,0,0)
FrontColor(255,255,255)
DrawText(Str(JouScore))
Locate (480,30)
DrawText(Str(AdvScore))
StopDrawing()
EndProcedure
Repeat
FlipBuffers()
ExamineKeyboard()
DisplaySprite(#Decor,0,0)
MovePlayer()
MoveAdversaire()
MoveBalle()
DisplayScore()
Until KeyboardPushed(#PB_Key_Escape)