[AutoIt] Mr. Square
2 participants
Game Maker forum :: Les jeux/La programmation :: Vos autres jeux que ceux Game Maker :: La programmation en général
Page 1 sur 1
[AutoIt] Mr. Square
Hello
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
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 :
Comme vous le voyez, comme dans le jeu original, on peut contrôler plusieurs joueur !
Les 21 premiers niveaux du jeu original sont jouables
Code Source:
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:
Amusez-vous bien
Dylan
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
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
Code Source:
- Spoiler:
- 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
Dylan
Re: [AutoIt] Mr. Square
Je viens de tester... J'aime bien et ça marche bien. Il faudrait que j'essaye de créer mon propre niveau.
esria- Rédacteur
- Messages : 563
Sujets similaires
» [AutoIt]Screenshot Quickly - Réaliser des vidéos avec des captures d'écran !
» [AutoIt] Calcul Mental.
» [AutoIt] TRON (2 Joueurs)
» [AutoIt] Avoid - Un jeu très difficile !
» [AutoIt] Calculatrice à virgule flottante.
» [AutoIt] Calcul Mental.
» [AutoIt] TRON (2 Joueurs)
» [AutoIt] Avoid - Un jeu très difficile !
» [AutoIt] Calculatrice à virgule flottante.
Game Maker forum :: Les jeux/La programmation :: Vos autres jeux que ceux Game Maker :: La programmation en général
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|