Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Jeu - Mr. Square
Auteur Message
Répondre en citant
Message Jeu - Mr. Square 
Hello Very Happy

Aujourd'hui j'ai découvert un jeu de logique sur iPhone, Mr. Square:



J'ai donc décider de réaliser un clone du jeu, sur PC.
Et c'est une réussite Mr. Green

Le but du jeu est de remplir toute les cases, en vous déplaçant à l'aide des flèches directionnelles. (R pour relancer le niveau, ECHAP pour quitter)

Vous pouvez également créer/éditer vos niveau avec le Bloc-Note, puis enregistrer sous la forme [N°Niveau].txt :

Code:
. = Vide
X = Joueur
# = Mur

Exemple - Niveau 16 (16.txt):

32 <- La dimension en pixel d'une case (Pas obligé que ce soit 32). C'est la première ligne à mettre !

....
..X.
....
.X..
....
..#.


Comme vous le voyez, comme dans le jeu original, on peut contrôler plusieurs joueur !
Les 21 premiers niveaux du jeu original sont jouables Wink

Code Source:


Code:

#Include <File.Au3>
#Include <Misc.Au3>
#Include <GUIConstants.Au3>
#Include <GUIConstantsEx.Au3>
#Include <WindowsConstants.Au3>

HotKeySet("{ESC}", _Quitter)

Global $Niveau = 1
_ChargerNiveau(".\Niveaux\" & $Niveau & ".txt")

Func _ChargerNiveau($1)
   Global $Taille_Case = FileReadLine($1, 1)
   Global $Nb_Ligne = 0
   For $I = 3 To _FileCountLines($1)
     $Nb_Ligne+=1
   Next
   Global $Case = StringSplit(FileReadLine($1, 3), "")
   Global $X = 3
   Global $Y = 3
   Global $Vitesse = 80
   Global $Case_X = 3
   Global $Case_Y = 3
   Global $Nb_Case_Libre = 0
   Global $Largeur = $Case[0]*$Taille_Case+(3*$Case[0])+3
   Global $Hauteur = $Nb_Ligne*$Taille_Case+(3*$Nb_Ligne)+3
   Global $Nb_Joueur = 0
   Global $GUI = GUICreate("Niveau " & $Niveau, $Largeur, $Hauteur, (@DesktopWidth-$Largeur)/2, (@DesktopHeight-$Hauteur)/2)
   GUISetState(@SW_SHOW, $GUI)
   For $I = 3 To _FileCountLines($1)
     Global $Case = StringSplit(FileReadLine($1, $I), "")
     For $J = 1 To $Case[0]
       If $Case[$J] = "X" Then
         $Nb_Joueur+=1
         Assign("Case_" & $Case_X & "_" & $Case_Y & "_Type", "Joueur", 2)
         Assign("Joueur_" & $Nb_Joueur & "_X", $Case_X, 2)
         Assign("Joueur_" & $Nb_Joueur & "_Y", $Case_Y, 2)
       EndIf
       If $Case[$J] = "." Then
         $Nb_Case_Libre+=1
         Assign("Case_" & $Case_X & "_" & $Case_Y & "_Type", "Libre", 2)
       EndIf
       If $Case[$J] = "#" Then Assign("Case_" & $Case_X & "_" & $Case_Y & "_Type", "Mur", 2)
       Assign("Case_" & $Case_X & "_" & $Case_Y, GUICtrlCreateLabel("", $X, $Y, $Taille_Case, $Taille_Case), 2)
       If Eval("Case_" & $Case_X & "_" & $Case_Y & "_Type") = "Libre" Then GUICtrlSetBkColor(Eval("Case_" & $Case_X & "_" & $Case_Y), "0xC0C0C0")
       If Eval("Case_" & $Case_X & "_" & $Case_Y & "_Type") = "Joueur" Then GUICtrlSetBkColor(Eval("Case_" & $Case_X & "_" & $Case_Y), "0x970000")
       If Eval("Case_" & $Case_X & "_" & $Case_Y & "_Type") = "Mur" Then GUICtrlSetBkColor(Eval("Case_" & $Case_X & "_" & $Case_Y), "0x404040")
       $X+=$Taille_Case+3
       $Case_X+=1
     Next
     $Y+=$Taille_Case+3
     $Case_Y+=1
     Global $Case_X = 3
     Global $X = 3
   Next

   While $Nb_Case_Libre <> 0
     If _IsPressed("25") Then _Gauche()
     If _IsPressed("27") Then _Droite()
     If _IsPressed("26") Then _Haut()
     If _IsPressed("28") Then _Bas()
     If _IsPressed("52") Then
       GUIDelete()
       _ChargerNiveau(".\Niveaux\" & $Niveau & ".txt")
     EndIf
   WEnd
   $Niveau+=1
   If FileExists(".\Niveaux\" & $Niveau & ".txt") Then
     GUIDelete()
     _ChargerNiveau(".\Niveaux\" & $Niveau & ".txt")
   Else
     Exit
   EndIf
EndFunc

Func _Gauche()
   For $I = 1 To $Nb_Joueur
     While Eval("Case_" & Eval("Joueur_" & $I & "_X")-1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") <> "Mur"
       If Eval("Case_" & Eval("Joueur_" & $I & "_X")-1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") = "" Then ExitLoop
       If Eval("Case_" & Eval("Joueur_" & $I & "_X")-1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") = "Joueur" Then ExitLoop
       If Eval("Case_" & Eval("Joueur_" & $I & "_X")-1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") = "Libre" Then
         Assign("Case_" & Eval("Joueur_" & $I & "_X")-1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type", "Joueur", 2)
         If Eval("Case_" & Eval("Joueur_" & $I & "_X")-1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") = "Joueur" Then
            GUICtrlSetBkColor(Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")), "0xC70000")
            GUICtrlSetBkColor(Eval("Case_" & Eval("Joueur_" & $I & "_X")-1 & "_" & Eval("Joueur_" & $I & "_Y")), "0x970000")
         EndIf
         Assign("Joueur_" & $I & "_X", Eval("Joueur_" & $I & "_X")-1, 2)
         $Nb_Case_Libre-=1
         Sleep($Vitesse)
       EndIf
     WEnd
   Next
EndFunc

Func _Droite()
   For $I = 1 To $Nb_Joueur
     While Eval("Case_" & Eval("Joueur_" & $I & "_X")+1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") <> "Mur"
       If Eval("Case_" & Eval("Joueur_" & $I & "_X")+1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") = "" Then ExitLoop
       If Eval("Case_" & Eval("Joueur_" & $I & "_X")+1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") = "Joueur" Then ExitLoop
       If Eval("Case_" & Eval("Joueur_" & $I & "_X")+1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") = "Libre" Then
         Assign("Case_" & Eval("Joueur_" & $I & "_X")+1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type", "Joueur", 2)
         If Eval("Case_" & Eval("Joueur_" & $I & "_X")+1 & "_" & Eval("Joueur_" & $I & "_Y") & "_Type") = "Joueur" Then
            GUICtrlSetBkColor(Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")), "0xC70000")
            GUICtrlSetBkColor(Eval("Case_" & Eval("Joueur_" & $I & "_X")+1 & "_" & Eval("Joueur_" & $I & "_Y")), "0x970000")
         EndIf
         Assign("Joueur_" & $I & "_X", Eval("Joueur_" & $I & "_X")+1, 2)
         $Nb_Case_Libre-=1
         Sleep($Vitesse)
       EndIf
     WEnd
   Next
EndFunc

Func _Haut()
   For $I = 1 To $Nb_Joueur
     While Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")-1 & "_Type") <> "Mur"
       If Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")-1 & "_Type") = "" Then ExitLoop
       If Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")-1 & "_Type") = "Joueur" Then ExitLoop
       If Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")-1 & "_Type") = "Libre" Then
         Assign("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")-1 & "_Type", "Joueur", 2)
         If Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")-1 & "_Type") = "Joueur" Then
            GUICtrlSetBkColor(Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")), "0xC70000")
            GUICtrlSetBkColor(Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")-1), "0x970000")
         EndIf
         Assign("Joueur_" & $I & "_Y", Eval("Joueur_" & $I & "_Y")-1, 2)
         $Nb_Case_Libre-=1
         Sleep($Vitesse)
       EndIf
     WEnd
   Next
EndFunc

Func _Bas()
   For $I = 1 To $Nb_Joueur
     While Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")+1 & "_Type") <> "Mur"
       If Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")+1 & "_Type") = "" Then ExitLoop
       If Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")+1 & "_Type") = "Joueur" Then ExitLoop
       If Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")+1 & "_Type") = "Libre" Then
         Assign("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")+1 & "_Type", "Joueur", 2)
         If Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")+1 & "_Type") = "Joueur" Then
            GUICtrlSetBkColor(Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")), "0xC70000")
            GUICtrlSetBkColor(Eval("Case_" & Eval("Joueur_" & $I & "_X") & "_" & Eval("Joueur_" & $I & "_Y")+1), "0x970000")
         EndIf
         Assign("Joueur_" & $I & "_Y", Eval("Joueur_" & $I & "_Y")+1, 2)
         $Nb_Case_Libre-=1
         Sleep($Vitesse)
       EndIf
     WEnd
   Next
EndFunc

Func _Quitter()
   Exit
EndFunc



Télécharger: Mr. Square.zip

Dans la prochaine version, vous aurez:

- Apparition d'un menu
- Apparition des portails de téléportation

Je vous invites à postez vos niveaux, et pourquoi pas les solutions des niveaux sous la forme:

Code:

*** Solution Niveau 3 ***

HAUT - DROITE - BAS - GAUCHE - BAS - DROITE - HAUT - GAUCHE - BAS


Amusez-vous bien Okay

Dylan

PS: J'ai fais une erreur dans le niveau 19, voila la correction:

Code:

24

......
..X.#.
......
.X....
......





______________________________________________________
Viens découvrir INTERPOL, un nouveau langage interprété !

Yahoo Messenger
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Jeu - Mr. Square 
Superbe Dylan,

c'est normal que ça va extremement vite lorsque tu appuyes sur les touches de direction ?

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message Jeu - Mr. Square 
Ah, pourtant moi la vitesse à 80 ça passe bien, j'ai l'impression que c'est pas pareil sur tout les PC.
Essaye de changer la variable $Vitesse Okay

EDIT: Te connaissant Sacha, je précise, si par "extrêmement vite" tu entends le fait que le personnage se déplace de plusieurs case à l'appuie de la touche, c'est normal, c'est le but, et c'est là la difficulté du jeu. Tant qu'il y a une case libre devant lui, le personnage avance pour la remplir Okay Si ce n'est pas fait, regarde la vidéo Mr. Green




______________________________________________________
Viens découvrir INTERPOL, un nouveau langage interprété !

Yahoo Messenger
Répondre en citant
Message Jeu - Mr. Square 
Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message Jeu - Mr. Square 
Franchement GG , seule default , Peut tu rajouté un bouton pour recommencer le niveau




______________________________________________________
Visiter le site web du posteur Skype
Répondre en citant
Message Jeu - Mr. Square 
Touche R pour recommencer Okay




______________________________________________________
Viens découvrir INTERPOL, un nouveau langage interprété !

Yahoo Messenger
Répondre en citant
Message Jeu - Mr. Square 
oki merci 




______________________________________________________
Visiter le site web du posteur Skype
Répondre en citant
Message Jeu - Mr. Square 
Vraiment sympas ! (et le R est mieux xD)
Le truc avec les 2 carrés est assez rigolol, mais je bloque au level 20 Very Happy
Bien joué !



Répondre en citant
Message Jeu - Mr. Square 
gg le level 20




______________________________________________________
Visiter le site web du posteur Skype
Répondre en citant
Message Jeu - Mr. Square 
Je suis tombé accro de ton jeux , omg. x)



Répondre en citant
Message Jeu - Mr. Square 
Et encore, vous n'avez pas encore joué avec les téléporteurs ...
Je corrige un petit bug et je poste dès que c'est fait Okay




______________________________________________________
Viens découvrir INTERPOL, un nouveau langage interprété !

Yahoo Messenger
Répondre en citant
Message Jeu - Mr. Square 
Enorme ! Même si je suis bloqué au niveau 18 Laughing
Tu m'as aussi fait découvrir le jeu sur mon téléphone je geek dessus maintenant ahah, merci Okay




______________________________________________________
C'est en forgeant que l'on devient un forgeron Razz
Visiter le site web du posteur
Répondre en citant
Message Jeu - Mr. Square 
xD pas tester sur mobil mais sa doit etre vraiment dar sur PC




______________________________________________________
Visiter le site web du posteur Skype
Message Jeu - Mr. Square 


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