Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Prog] MoveTheDroid Game
Auteur Message
Répondre en citant
Message [Prog] MoveTheDroid Game 
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. 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 l'algorithme supprime l'image et la recrée plus loin, donc si on va trop vite, le droid clignotera. 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 l'exécutable: ICI

Aperçu :


Et voilà le code commenté :
Code:
#include <GUIConstants.au3>

HotKeySet("{esc}", "_quit") ;Si on appuye sur la touche escape alors on utilise la fonction _quit
HotKeySet("{LEFT}", "_gauche") ;Si on appuye sur la touche escape alors on utilise la fonction _gauche
HotKeySet("{RIGHT}", "_droite") ;Si on appuye sur la touche escape alors on utilise la fonction _droite


Dim $left = 390,$SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS ;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("C:\Users\nicolas\Pictures\banque d'images\android-logo-noir.jpg", $left, 120, 100, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place le logo d'android
$Pic2 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\créations images\nuage2.jpg", 784, -16, 185, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un nuage
$Pic3 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\créations images\nuage.jpg", 216, -56, 193, 140, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un nuage
$Pic4 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\créations images\soleil.jpg", -48, -48, 116, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un soleil
$Pic5 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\créations images\herbe.jpg", 0, 232, 476, 44, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;on place de l'herbe
$Pic6 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\créations images\herbe.jpg", 464, 232, 532, 44, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;on place de l'herbe
$Pic7 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\créations images\pierre.jpg", 535, 152, 140, 132, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;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
   $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.
GUICtrlDelete($Pic1) ;on efface l'image
$Pic1 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\banque d'images\android-logo-noir.jpg", $left, 120, 100, 108) ;on remet l'image à la position voulue
ElseIf $left = 950 Then ;si le personnage est tout à droite alors
$left = -50 ;on définit la position horizontale du personnage toute à gauche
GUICtrlDelete($Pic1) ;on efface l'image
$Pic1 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\banque d'images\android-logo-noir.jpg", $left, 120, 100, 108);on remet l'image à la position voulue
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.
GUICtrlDelete($Pic1);on efface l'image
$Pic1 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\banque d'images\android-logo-noir.jpg", $left, 120, 100, 108);on remet l'image à la position voulue
ElseIf $left = -50 Then ;si le personnage est tout à gauche alors
$left = 950   ;on définit la position horizontale du personnage toute à droite
GUICtrlDelete($Pic1);on efface l'image
$Pic1 = GUICtrlCreatePic("C:\Users\nicolas\Pictures\banque d'images\android-logo-noir.jpg", $left, 120, 100, 108);on remet l'image à la position voulue
Else ;sinon on ne fait rien
EndIf ;fin du if
EndFunc ;Fin de la fonction

Func _quit() ;Début de la fonction de sortie
Exit ;On quitte la programme
EndFunc ;Fin de la fonction




Dernière édition par sablier94 le Dim 26 Déc 2010 - 17:31; édité 1 fois

______________________________________________________
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Prog] MoveTheDroid Game 
Tu as oublié les images avec la version executable. Wink



Répondre en citant
Message [Prog] MoveTheDroid Game 
Ha oui, c'est vrai, désolé, je n'y avait plus pensé, car chez moi il marchait (normal ^^)

Je mets le fichier .zip à la place de l'exécutable.




______________________________________________________
Répondre en citant
Message [Prog] MoveTheDroid Game 
Hello!

Si tu veux faire moins scintiller le Droid, Il va falloir que tu expérimente la technique du double_buffering (si je me souviens bien Mr. Green), Le principe est que le mouvement ne se déroule plus comme cela:

  • On affiche le droide;
  • On efface le droide;
  • On "déplace" le droide;
  • On le "blitte" à l'écran;


mais comme ceci:

  • On affiche le premier droide droïde;
  • On "déplace" le droide;
  • On "blitte" le droide déplacé à l'écran;
  • On efface l'ancien droide;


Et comme ça ton droïde devrait scintiller beaucoup moins Mr. Green




______________________________________________________
--
> Que pensez vous de l'ajout du repertoire point dans $PATH ?
Ma version de troll 18.0.32 beta 3 vient de me faire un core dump.
-+- SE in Guide du Linuxien Pervers : Bien développer son troll -+-

[Dos9]
Visiter le site web du posteur Skype
Répondre en citant
Message [Prog] MoveTheDroid Game 
Salut,

Au fait, moi je fais ceci :

  • On affiche le droide;
  • On "déplace" le droide (on parle de la variable hein ?);
  • On efface le droide;
  • On le "blitte" à l'écran; (blitter veut dire afficher pour toi ?)


Donc ce que je devrais faire c'est afficher le deuxième droid avant d'effacer le 1er ?

Merci pour le conseil, je vais essayer pour voir ce que ça donne.




______________________________________________________
Répondre en citant
Message [Prog] MoveTheDroid Game 
Amusant!
ça donne envie de se mettre a l'autoit^^




______________________________________________________
I'm siiiiiiiiinging in the raiiiiiiiin!
And you?
Répondre en citant
Message [Prog] MoveTheDroid Game 
Hello!

Oui c'est bien ça, il faut afficher le second droid d'abord. ça risque de provoquer un flou si le décalage entre les deux images est trop importaant, mais ça devrait avoir un bien meilleur rendu Wink

@+




______________________________________________________
--
> Que pensez vous de l'ajout du repertoire point dans $PATH ?
Ma version de troll 18.0.32 beta 3 vient de me faire un core dump.
-+- SE in Guide du Linuxien Pervers : Bien développer son troll -+-

[Dos9]
Visiter le site web du posteur Skype
Répondre en citant
Message [Prog] MoveTheDroid Game 
J'ai fait ce que tu as dit et ça clignote moins ! Okay Il y a un très léger flou, mais c'est quasi rien. Par contre, j'ai du rajouter une redéfinition de la variable.

Merci pour l'astuce, je connaissais pas.

Voilà le code :
Code:
#include <GUIConstants.au3>

HotKeySet("{esc}", "_quit") ;Si on appuye sur la touche escape alors on utilise la fonction _quit
HotKeySet("{LEFT}", "_gauche") ;Si on appuye sur la touche escape alors on utilise la fonction _gauche
HotKeySet("{RIGHT}", "_droite") ;Si on appuye sur la touche escape alors on utilise la fonction _droite

Dim $left = 390, $piece = 140,$SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS ;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(@ScriptDir &"\android-logo-noir.jpg", $left, 120, 100, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place le logo d'android
$Pic2 = GUICtrlCreatePic(@ScriptDir &"\nuage2.jpg", 784, -16, 185, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un nuage
$Pic3 = GUICtrlCreatePic(@ScriptDir &"\nuage.jpg", 216, -56, 193, 140, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un nuage
$Pic4 = GUICtrlCreatePic(@ScriptDir &"\soleil.jpg", -48, -48, 116, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un soleil
$Pic5 = GUICtrlCreatePic(@ScriptDir &"\herbe.jpg", 0, 232, 476, 44, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;on place de l'herbe
$Pic6 = GUICtrlCreatePic(@ScriptDir &"\herbe.jpg", 464, 232, 532, 44, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;on place de l'herbe
$Pic7 = GUICtrlCreatePic(@ScriptDir &"\pierre.jpg", 535, 152, 140, 132, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;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
   $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.
$Pic2 = GUICtrlCreatePic(@ScriptDir &"\android-logo-noir.jpg", $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
ElseIf $left = 950 Then ;si le personnage est tout à droite alors
$left = -50 ;on définit la position horizontale du personnage toute à gauche
$Pic2 = GUICtrlCreatePic(@ScriptDir &"\android-logo-noir.jpg", $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
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.
$Pic2 = GUICtrlCreatePic(@ScriptDir &"\android-logo-noir.jpg", $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
ElseIf $left = -50 Then ;si le personnage est tout à gauche alors
$left = 950   ;on définit la position horizontale du personnage toute à droite
$Pic2 = GUICtrlCreatePic(@ScriptDir &"\android-logo-noir.jpg", $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
Else ;sinon on ne fait rien
EndIf ;fin du if
EndFunc ;Fin de la fonction

Func _quit() ;Début de la fonction de sortie
Exit ;On quitte la programme
EndFunc ;Fin de la fonction





______________________________________________________
Répondre en citant
Message [Prog] MoveTheDroid Game 
Yop,

J'ai modifier mon code pour que quand on appuie sur la touche haut ou bas, le droid change de couleur, mais il y avait beaucoup trop de bugs et ça allait très lentement.
Alors j'ai refais le code et j'ai mis des _ispressed dans une boucle infinie plutôt que d'utiliser les hotkeypressed. Ça va beaucoup plus vite ! Very Happy (J'ai même du rajouter un sleep tellement le changement de couleur était rapide ^^

Voilà le code : (le fichier .zip a également été mis à jour et il est indispensable pour avoir les autres couleurs.)

Code:
#include <GUIConstants.au3>
#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,$SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS, $droid = @ScriptDir &"\android-logo-noir-vert.jpg" ;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, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place le logo d'android
$Pic2 = GUICtrlCreatePic(@ScriptDir &"\nuage2.jpg", 784, -16, 185, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un nuage
$Pic3 = GUICtrlCreatePic(@ScriptDir &"\nuage.jpg", 216, -56, 193, 140, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un nuage
$Pic4 = GUICtrlCreatePic(@ScriptDir &"\soleil.jpg", -48, -48, 116, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un soleil
$Pic5 = GUICtrlCreatePic(@ScriptDir &"\herbe.jpg", 0, 232, 476, 44, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;on place de l'herbe
$Pic6 = GUICtrlCreatePic(@ScriptDir &"\herbe.jpg", 464, 232, 533, 44, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;on place de l'herbe
$Pic7 = GUICtrlCreatePic(@ScriptDir &"\pierre.jpg", 535, 152, 140, 132, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;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
   $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.
$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
ElseIf $left = 950 Then ;si le personnage est tout à droite alors
$left = -50 ;on définit la position horizontale du personnage toute à gauche
$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
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.
$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
ElseIf $left = -50 Then ;si le personnage est tout à gauche alors
$left = 950   ;on définit la position horizontale du personnage toute à droite
$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
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





______________________________________________________
Répondre en citant
Message [Prog] MoveTheDroid Game 
Hello,

J'ai encore mis à jour mon script, car je viens de trouver une fonction qui permet de déplacer une image (je la cherchais depuis longtemps...). Cette fonction, c'est GuiCtrlSetPos.
Alors, ça va tellement vite que j'ai du rajouter encore plus de pauses Mr. Green. Bon, du coup le script deviens beaucoup plus basique.

Voilà le code (je n'ai pas mis à jour le .zip, il suffit de copier-coller le code dans le fichier .au3) :

Code:
#include <GUIConstants.au3>
#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,$SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS, $droid = @ScriptDir &"\android-logo-noir-vert.jpg" ;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, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place le logo d'android
$Pic2 = GUICtrlCreatePic(@ScriptDir &"\nuage2.jpg", 784, -16, 185, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un nuage
$Pic3 = GUICtrlCreatePic(@ScriptDir &"\nuage.jpg", 216, -56, 193, 140, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un nuage
$Pic4 = GUICtrlCreatePic(@ScriptDir &"\soleil.jpg", -48, -48, 116, 108, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) ;on place un soleil
$Pic5 = GUICtrlCreatePic(@ScriptDir &"\herbe.jpg", 0, 232, 476, 44, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;on place de l'herbe
$Pic6 = GUICtrlCreatePic(@ScriptDir &"\herbe.jpg", 464, 232, 533, 44, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;on place de l'herbe
$Pic7 = GUICtrlCreatePic(@ScriptDir &"\pierre.jpg", 535, 152, 140, 132, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))  ;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
   $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





______________________________________________________
Message [Prog] MoveTheDroid Game 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch