[Ex] Mini jeu 2D MoveTheDroid

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
sablier94
Niveau 4
Niveau 4
Messages : 87
Enregistré le : lun. 20 sept. 2010 10:18
Localisation : Suisse
Status : Hors ligne

[Ex] Mini jeu 2D MoveTheDroid

#1

Message 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
Fichiers joints
MoveTheDroid.zip
Fichier .zip avec les images et l'exécutable.
(745.11 Kio) Téléchargé 355 fois
Modifié en dernier par sablier94 le lun. 08 août 2011 16:30, modifié 2 fois.
Colin117
Niveau 5
Niveau 5
Messages : 114
Enregistré le : jeu. 18 nov. 2010 17:57
Localisation : Vers là bas !
Status : Hors ligne

Re: [Ex] Mini jeu 2D MoveTheDroid

#2

Message par Colin117 »

c'est pas mal j'aime bien !

Franchement bien joué!
► Afficher le texte
Avatar du membre
GELDROC
Niveau 6
Niveau 6
Messages : 295
Enregistré le : sam. 10 oct. 2009 10:15
Status : Hors ligne

Re: [Ex] Mini jeu 2D MoveTheDroid

#3

Message par GELDROC »

j'aimerai bien avoir les fichier image ci c'est possible sil te plaie ...
Avatar du membre
sablier94
Niveau 4
Niveau 4
Messages : 87
Enregistré le : lun. 20 sept. 2010 10:18
Localisation : Suisse
Status : Hors ligne

Re: [Ex] Mini jeu 2D MoveTheDroid

#4

Message 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
Avatar du membre
Jones
Niveau 1
Niveau 1
Messages : 3
Enregistré le : jeu. 23 déc. 2010 12:12
Status : Hors ligne

Re: [Ex] Mini jeu 2D MoveTheDroid

#5

Message 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.
Avatar du membre
sablier94
Niveau 4
Niveau 4
Messages : 87
Enregistré le : lun. 20 sept. 2010 10:18
Localisation : Suisse
Status : Hors ligne

Re: [Ex] Mini jeu 2D MoveTheDroid

#6

Message 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:
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [Ex] Mini jeu 2D MoveTheDroid

#7

Message 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
Signez ici
Répondre