Comme vous le savez sûrement, Autoit n'est pas vraiment au top pour faire des jeux "qui bougent". Pourtant, c'est possible, voici mon exemple dont le but est de déplacer la mascotte d'android à gauche et à droite avec les flèches gauche et droite de votre clavier. Vous pouvez aussi changer de couleur avec les flêches haut et bas. J'ai mis un caillou qu'on ne peux pas traverser et si on arrive au bout d'un coté du programme, on apparaît de l'autre. On voit tout de même que ce n'est pas optimal car si on va trop vite, le droid clignotera un peu. Je vais rajouter plus tard des pièces à récupérer pour se faire des points.
Si vous voulez le tester, je vous conseille de télécharger le fichier zip plus bas.
Aperçu : Et voilà le code commenté :
Code : Tout sélectionner
#include <GUIConstants.au3> ;Pour la GUI
#Include <Misc.au3> ;Pour _IsPressed
HotKeySet("{esc}", "_quit") ;Si on appuye sur la touche escape alors on utilise la fonction _quit
Dim $left = 390, $piece = 140, $droid = @ScriptDir &"\android-logo-noir-vert.jpg", $top = 0, $soleil = Random(0,998,1) ;on définit quelques variables.
#Region ### START Koda GUI section ### ;début de la GUI
$Form1 = GUICreate("MoveTheDroid Game by sablier94", 998, 276, 203, 159) ;on crée la fenêtre
GUISetBkColor(0x000000) ;on met la couleur de fond en noir
$Pic1 = GUICtrlCreatePic($droid, $left, 120, 100, 108) ;on place le logo d'android
$Pic2 = GUICtrlCreatePic(@ScriptDir &"\nuage2.jpg", 784, -16, 185, 108) ;on place un nuage
$Pic3 = GUICtrlCreatePic(@ScriptDir &"\nuage.jpg", 216, -56, 193, 140) ;on place un nuage
$Pic4 = GUICtrlCreatePic(@ScriptDir &"\soleil.jpg", $soleil, $top, 116, 108) ;on place un soleil
$Pic5 = GUICtrlCreatePic(@ScriptDir &"\herbe.jpg", 0, 232, 476, 44) ;on place de l'herbe
$Pic6 = GUICtrlCreatePic(@ScriptDir &"\herbe.jpg", 464, 232, 533, 44) ;on place de l'herbe
$Pic7 = GUICtrlCreatePic(@ScriptDir &"\pierre.jpg", 535, 152, 140, 132) ;on place une pierre
GUISetState(@SW_SHOW) ;on affiche la GUI
#EndRegion ### END Koda GUI section ### ;fin de la création de la GUI
While 1 ;début de la boucle infinie en cas de fermeture du programme
If _IsPressed("25") Then _gauche() ;Si la touche flèche gauche est pressée, alors on utilise la fonction _gauche
If _IsPressed("27") Then _droite() ;Si la touche flèche droite est pressée, alors on utilise la fonction _droite
If _IsPressed("26") Then _UpColor() ;Si la touche flèche hautest pressée, alors on utilise la fonction _UpColor
If _IsPressed("28") Then _DownColor() ;Si la touche flèche bas est pressée, alors on utilise la fonction _DownColor
If Not $soleil <= 0 Then
$top = $top +1
GUICtrlSetPos($Pic4, $soleil, $top)
Sleep(10)
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;si on appuye sur la croix
Exit ;on ferme
EndSwitch ;fin du switch
WEnd ;fin de la boucle infinie
Func _droite() ;Début de la fonction _droite
If $left <> 430 And $left <> 950 Then ;si le personnage n'est pas devant la pierre ni tout à droite alors
$left = $left+10 ;on définit la position horizontale du personnage de 5 pixels de plus que l'ancienne position.
GUICtrlSetPos($pic1,$left,120)
Sleep(1)
ElseIf $left = 950 Then ;si le personnage est tout à droite alors
$left = -50 ;on définit la position horizontale du personnage toute à gauche
GUICtrlSetPos($pic1,$left,120)
Sleep(1)
Else ;sinon on ne fait rien
EndIf ;fin du if
EndFunc ;Fin de la fonction
Func _gauche() ;Début de la fonction _gauche
If $left <> 680 And $left <> -50 Then ;si le personnage n'est pas derriere la pierre ni tout à gauche alors
$left = $left-10 ;on définit la position horizontale du personnage de 5 pixels de moins que l'ancienne position.
GUICtrlSetPos($pic1,$left,120)
Sleep(1)
ElseIf $left = -50 Then ;si le personnage est tout à gauche alors
$left = 950 ;on définit la position horizontale du personnage toute à droite
GUICtrlSetPos($pic1,$left,120)
Sleep(1)
Else ;sinon on ne fait rien
EndIf ;fin du if
EndFunc ;Fin de la fonction
Func _UpColor() ;Début de la fonction pour changer la couleur (+ foncé)
Switch $droid ;Début du Switch
Case @ScriptDir &"\android-logo-noir-vert.jpg" ;Si la couleur est vert :
$droid = @ScriptDir &"\android-logo-noir-jaune.jpg" ;Alors on définit la nouvelle couleur
Case @ScriptDir &"\android-logo-noir-jaune.jpg" ;Si la couleur est jaune :
$droid = @ScriptDir &"\android-logo-noir-rouge.jpg" ;Alors on définit la nouvelle couleur
Case @ScriptDir &"\android-logo-noir-rouge.jpg" ;Si la couleur est rouge :
$droid = @ScriptDir &"\android-logo-noir-ciel.jpg" ;Alors on définit la nouvelle couleur
Case @ScriptDir &"\android-logo-noir-ciel.jpg" ;Si la couleur est ciel (bleu) :
$droid = @ScriptDir &"\android-logo-noir-vert.jpg" ;Alors on définit la nouvelle couleur
EndSwitch
$Pic2 = GUICtrlCreatePic($droid, $left, 120, 100, 108);on remet l'image à la position voulue
GUICtrlDelete($Pic1);on efface l'image du 1er droid
$pic1 = $pic2 ;on remet l'image en pic1
sleep(300) ;on fait une pause de 0.3 secondes pour pas que le changement de couleur se fasse trop rapidement.
EndFunc ;Fin de la fonction
Func _DownColor() ;Début de la fonction pour changer la couleur (- foncé)
Switch $droid ;Début du Switch
Case @ScriptDir &"\android-logo-noir-ciel.jpg" ;Si la couleur est ciel (bleu) :
$droid = @ScriptDir &"\android-logo-noir-rouge.jpg" ;Alors on définit la nouvelle couleur
Case @ScriptDir &"\android-logo-noir-rouge.jpg";Si la couleur est rouge :
$droid = @ScriptDir &"\android-logo-noir-jaune.jpg" ;Alors on définit la nouvelle couleur
Case @ScriptDir &"\android-logo-noir-jaune.jpg" ;Si la couleur est jaune :
$droid = @ScriptDir &"\android-logo-noir-vert.jpg" ;Alors on définit la nouvelle couleur
Case @ScriptDir &"\android-logo-noir-vert.jpg" ;Si la couleur est vert :
$droid = @ScriptDir &"\android-logo-noir-ciel.jpg" ;Alors on définit la nouvelle couleur
EndSwitch
$Pic2 = GUICtrlCreatePic($droid, $left, 120, 100, 108);on remet l'image à la position voulue
GUICtrlDelete($Pic1);on efface l'image du 1er droid
$pic1 = $pic2 ;on remet l'image en pic1
sleep(300) ;on fait une pause de 0.3 secondes pour pas que le changement de couleur se fasse trop rapidement.
EndFunc ;Fin de la fonction
Func _quit() ;Début de la fonction de sortie
Exit ;On quitte la programme
EndFunc ;Fin de la fonction