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