Page 1 sur 1

[Ex] Mini jeu 2D MoveTheDroid

Posté : dim. 26 déc. 2010 16:48
par sablier94
Bonjour,

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 :
Capture d'écran du jeu.
Capture d'écran du jeu.
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
Téléchargement du fichier zip :
MoveTheDroid.zip
(1.48 Mio) Téléchargé 298 fois

Re: [Ex] Mini jeu 2D MoveTheDroid

Posté : dim. 26 déc. 2010 16:57
par Colin117
c'est pas mal j'aime bien !

Franchement bien joué!

Re: [Ex] Mini jeu 2D MoveTheDroid

Posté : dim. 26 déc. 2010 17:10
par GELDROC
j'aimerai bien avoir les fichier image ci c'est possible sil te plaie ...

Re: [Ex] Mini jeu 2D MoveTheDroid

Posté : dim. 26 déc. 2010 17:32
par sablier94
Oui, pas de problème, je suis pas sûr que ça va marcher mais je suis entrain de les ajouter.

merci

EDIT : Voilà tout est dans le .zip

Re: [Ex] Mini jeu 2D MoveTheDroid

Posté : lun. 27 déc. 2010 14:07
par Jones
Autoit n'est peut être pas au top pour faire des jeux mais on peut avoir un rendu pas mal.

Regarde mon ancien projet : http://code.google.com/p/delta-test/

C'est assez fluide.

Re: [Ex] Mini jeu 2D MoveTheDroid

Posté : lun. 27 déc. 2010 16:35
par sablier94
Wow, j'ai vu toutes ces animations, avec les incldes et ton projet... je savais pas qu'on pouvait faire de la 3D avec autoit. :shock:

Re: [Ex] Mini jeu 2D MoveTheDroid

Posté : lun. 27 déc. 2010 17:48
par Iste
On peut tout faire (ou presque)
Dans votre exemple ce n'est pas autoit qui n'est pas approprié mais l'utilisation de guictrlcreatepic()
Penchez vous plutot sur GDI+ pour les dessins sur gui