[Ex] Jeu - Pong à l'ancienne
Posté : ven. 09 sept. 2011 18:27
par Baku
Salut, un petit pong développé par mes soins que je met à votre disposition.
Voici le code source, les images et sons qui sont nécessaires au jeu pour son bon fonctionnement sont inclues dans l'archive avec le script en fichier joint
Voici le code source, les images et sons qui sont nécessaires au jeu pour son bon fonctionnement sont inclues dans l'archive avec le script en fichier joint

► Afficher le texte
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: Warden
Script Function:
Pong.
#ce ----------------------------------------------------------------------------
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
FileInstall("balle.jpg", "balle.jpg")
FileInstall("bords.mp3", "bords.mp3")
FileInstall("fond.jpg", "fond.jpg")
FileInstall("letsgo.mp3", "letsgo.mp3")
FileInstall("loose.mp3", "loose.mp3")
FileInstall("raquette.jpg", "raquette.jpg")
FileInstall("raquettes.mp3", "raquettes.mp3")
HotKeySet("{F1}","_reset")
Opt("GuiOnEventMode", 1)
#cs ----------------------------------------------------------------------------
# Les variables ci dessous ne sont pas sensées être éditées.
#ce ----------------------------------------------------------------------------
Local $vitesse = 15, $hauteurRaquettes = 60, $largeurRaquettes = 14, $yB = 30, $hauteurlargeurBalle = 20, $xB = 390, $GO, $J1, $J2,$posMouse, $ballegauche = True, $pts1 = 0, $pts2 = 0, $random = 0, $MousePlay = 1, $titre = "GameTest"
#cs ----------------------------------------------------------------------------
# Vous pouvez éditer les variables ci-après :
#
# Note : - Le controle joueur1 s'effectue sur la gauche avec les touches Z et S.
# - Le controle joueur2 s'effectue sur la droite avec les flèches directionnelles HAUT et BAS.
# - Seul le joueur 2 dispose du controle à la souris si ce dernier est activé via la GUI.
#ce ----------------------------------------------------------------------------
Local $vitesseBalle = 5
Local $IAPrecision = 8 ; 0 = imbatable / 7 = Bon / 8 = Normal / 9 = Mauvais
Local $IAJoueur1 = 1 ; L'IA joue en joueur 1 si "1", pas d'IA en joueur 1 si "0"
Local $IAJoueur2 = 0 ; L'IA joue en joueur 2 si "1", pas d'IA en joueur 2 si "0"
#cs ----------------------------------------------------------------------------
# Début du script :
#ce ----------------------------------------------------------------------------
$GameWindow = GUICreate($titre, 800, 600, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Quit")
$MousePlayCheckbox = GUICtrlCreateCheckbox("Jouer avec la souris", 8, 8, 121, 17)
$StartButton = GUICtrlCreateButton("Commencer", 8, 32, 115, 25)
GUICtrlSetOnEvent($StartButton,"_GO")
GUISetState(@SW_SHOW)
While $GO <> 1
If GUICtrlRead($MousePlayCheckbox) = $GUI_CHECKED Then
$MousePlay = 1
Else
$MousePlay = 0
EndIf
WEnd
Func _GO()
$GO = 1
EndFunc
#cs ----------------------------------------------------------------------------
# Redéfinition de la GUI en terrain de jeu :
#ce ----------------------------------------------------------------------------
GUICtrlDelete($MousePlayCheckbox)
GUICtrlDelete($StartButton)
GUISetBkColor(0x000000)
GUICtrlSetOnEvent($GUI_EVENT_CLOSE, "_Quit")
$scores1 = GUICtrlCreateLabel("0", 312, 32, 40, 84)
GUICtrlSetFont(-1, 50, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$scores2 = GUICtrlCreateLabel("0", 456, 30, 40, 84)
GUICtrlSetFont(-1, 50, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$raquette1 = GUICtrlCreatePic("raquette.jpg", 8, 0, $largeurRaquettes, $hauteurRaquettes)
$raquette2 = GUICtrlCreatePic("raquette.jpg", 792-$largeurRaquettes, 0, $largeurRaquettes, $hauteurRaquettes)
$balle = GUICtrlCreatePic("balle.jpg", $xB, $yB, $hauteurlargeurBalle, $hauteurlargeurBalle)
#cs ----------------------------------------------------------------------------
# Début de la partie :
#ce ----------------------------------------------------------------------------
SoundPlay("letsgo.mp3", 0)
AdlibRegister("Adlib", 15)
While 1
$randbot1 = Round(Random(-5, 5))
$randbot2 = Round(Random(-5, 5))
While $ballegauche = True
$xB = $xB - $vitesseBalle
$yB = $yB + $random
GUICtrlSetPos($balle,$xB,$yB,$hauteurlargeurBalle,$hauteurlargeurBalle)
sleep(10)
_VerifCollision()
WEnd
While $ballegauche = False
$xB = $xB + $vitesseBalle
$yB = $yB + $random
GUICtrlSetPos($balle,$xB,$yB,$hauteurlargeurBalle,$hauteurlargeurBalle)
sleep(10)
_VerifCollision()
WEnd
WEnd
#cs ----------------------------------------------------------------------------
# Fin du script, début des fonctions :
#ce ----------------------------------------------------------------------------
Func Adlib() ; Lancement des vérifications qui doivent etre faites en temps réel.
If _IsPressed(26) Then _j2up()
If _IsPressed(28) Then _j2down()
If _IsPressed("5A") Then _j1up()
If _IsPressed(53) Then _j1down()
_IAControl()
$posMouse = MouseGetPos()
$posFenetre = WinGetPos($titre)
If $mouseplay = 1 Then
$J2 = $posMouse[1] - $posFenetre[1] - 25 - ($hauteurRaquettes/2)
_VerifRaquettesHauteur()
GUICtrlSetPos($raquette2,792-$largeurRaquettes,$J2,$largeurRaquettes,$hauteurRaquettes)
EndIf
EndFunc
Func _IAControl() ; Définition de l'IA.
If $IAJoueur1 = 1 Then
$J1 = $yB - ($hauteurRaquettes / 2) + ($randbot1 * $IAPrecision)
_VerifRaquettesHauteur()
GUICtrlSetPos($raquette1,8,$J1,$largeurRaquettes,$hauteurRaquettes)
EndIf
If $IAJoueur2 = 1 Then
$J2 = $yB - ($hauteurRaquettes / 2) + ($randbot2 * $IAPrecision)
_VerifRaquettesHauteur()
GUICtrlSetPos($raquette2,792-$largeurRaquettes,$J2,$largeurRaquettes,$hauteurRaquettes)
EndIf
EndFunc
Func _Reset() ; Réinitialisation de la partie à ses paramètres de lancements.
$xB = 390
$yB = 30
$pts1 = 0
$pts2 = 0
GUICtrlSetData($scores1,$pts1)
GUICtrlSetData($scores2,$pts2)
$random = 0
GUICtrlSetPos($raquette1,8, 0, $largeurRaquettes, $hauteurRaquettes)
GUICtrlSetPos($raquette2,792-$largeurRaquettes, 0, $largeurRaquettes, $hauteurRaquettes)
$J1 = 0
$J2 = 0
SoundPlay("letsgo.mp3", 0)
EndFunc
Func _VerifRaquettesHauteur() ; Vérification en temps réel de la position X des raquettes, pour éviter les sorties de terrain.
If $J1 < 0 Then $J1 = 0
If $J2 < 0 Then $J2 = 0
If $J1 > 600-$hauteurRaquettes Then $J1 = 600-$hauteurRaquettes
If $J2 > 600-$hauteurRaquettes Then $J2 = 600-$hauteurRaquettes
EndFunc
Func _yVerif() ; Vérification en temps réel de la position Y de la balle.
$zone = 0
If $yB > $J1 - $hauteurlargeurBalle And ($yB + $hauteurlargeurBalle) < ($J1 + $hauteurRaquettes + $hauteurlargeurBalle) Then $zone = $zone + 1
If $yB > $J2 - $hauteurlargeurBalle And ($yB + $hauteurlargeurBalle) < ($J2 + $hauteurRaquettes + $hauteurlargeurBalle) Then $zone = $zone + 2
Return $zone
EndFunc
Func _xVerif() ; Vérification en temps réel de la position X de la balle.
$zone = 0
If $xB < (8 + $largeurRaquettes) Then $zone = 1
If $xB > (792-$largeurRaquettes-$hauteurlargeurBalle) Then $zone = 2
If $xB < 0 Then $zone = -1
If $xB > (800 - $hauteurlargeurBalle) Then $zone = -2
Return $zone
EndFunc
Func _VerifCollision() ; Gestion en temps réel des collisions de la balle avec les bords et les raquettes.
If $Ballegauche = True And (_xVerif() = 1 And _yVerif() = 3) Then
$ballegauche = False
SoundPlay("raquettes.mp3",0)
$random = ((($yB + $hauteurlargeurBalle)/2) - (($J1 + $hauteurRaquettes)/2) + 10)/5
ElseIf $Ballegauche = False And (_xVerif() = 2 And _yVerif() = 3) Then
$ballegauche = True
SoundPlay("raquettes.mp3",0)
$random = ((($yB + $hauteurlargeurBalle)/2) - (($J2 + $hauteurRaquettes)/2) + 10)/5
ElseIf $Ballegauche = True And (_xVerif() = 1 And _yVerif() = 1) Then
$ballegauche = False
SoundPlay("raquettes.mp3",0)
$random = ((($yB + $hauteurlargeurBalle)/2) - (($J1 + $hauteurRaquettes)/2) + 10)/5
ElseIf $Ballegauche = False And (_xVerif() = 2 And _yVerif() = 2) Then
$ballegauche = True
SoundPlay("raquettes.mp3",0)
$random = ((($yB + $hauteurlargeurBalle)/2) - (($J2 + $hauteurRaquettes)/2) + 10)/5
Else
If _xVerif() < 0 Then
If _xVerif() = -1 Then $pts2 = $pts2 + 1
If _xVerif() = -2 Then $pts1 = $pts1 + 1
SoundPlay("loose.mp3", 1)
GUICtrlSetData($scores1,$pts1)
GUICtrlSetData($scores2,$pts2)
$ballegauche = Not $ballegauche
$xB = 390
SoundPlay("letsgo.mp3", 0)
EndIf
If $yB < 0 Then
$random = $random * -1
SoundPlay("bords.mp3", 0)
ElseIf ($yB - $hauteurlargeurBalle) > 550 Then
$random = $random * -1
SoundPlay("bords.mp3", 0)
EndIf
EndIf
EndFunc
Func _j1up() ; Déplacement manuel du joueur1 vers le haut.
$J1 = $J1 - $vitesse
_VerifRaquettesHauteur()
GUICtrlSetPos($raquette1,8,$J1,$largeurRaquettes,$hauteurRaquettes)
EndFunc
Func _j1down() ; Déplacement manuel du joueur1 vers le bas
$J1 = $J1 + $vitesse
_VerifRaquettesHauteur()
GUICtrlSetPos($raquette1,8,$J1,$largeurRaquettes,$hauteurRaquettes)
EndFunc
Func _j2up() ; Déplacement manuel du joueur2 vers le haut.
$J2 = $J2 - $vitesse
_VerifRaquettesHauteur()
GUICtrlSetPos($raquette2,792-$largeurRaquettes,$J2,$largeurRaquettes,$hauteurRaquettes)
EndFunc
Func _j2down() ; Déplacement manuel du joueur2 vers le bas.
$J2 = $J2 + $vitesse
_VerifRaquettesHauteur()
GUICtrlSetPos($raquette2,792-$largeurRaquettes,$J2,$largeurRaquettes,$hauteurRaquettes)
EndFunc
Func _Quit()
Exit
EndFunc