[JEU] Labyrinthe en batch !

Vous avez réalisé un script utile, faites en profiter la communauté !

Modérateur : WIN32-[GG]

Répondre
bigeyes
Batcheur occasionnel
Messages : 2
Enregistré le : 24 juil. 2012 14:55

[JEU] Labyrinthe en batch !

Message par bigeyes »

Salut à tous !

Edit : ajout d'une archive ZIP contenant les fichiers listés ci-dessous. Dézoulé j'avais pas vu ;-)

Voici un petit script permettant de lire une "carte" écrite sur un fichier externe et de générer un labyrinthe en fonction des infos entrées dans le-dit fichier.
Il est donc tout à fait possible pour n'importe qui de créer une map qui sera ensuite lue par le script. Voir les indications après.

Si vous ne modifiez pas le code, pensez à créer un dossier "maps" au même niveau que le script et à y inclure les deux cartes données après le script.

Bonne lecture !

laby.bat

Code : Tout sélectionner

rem  CONFIG
set map=
set title=laby v0.1b
title %title% %map%
mode con cols=40 lines=30
@echo off
cls

rem  CHOICE
echo.
echo.
echo.
echo                  LABY
echo                    v0.1b
set tmp=0
echo.
echo.
echo.
echo.
echo   ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
echo   º Choose a map
echo   º
for /f %%i in ('DIR .\maps\*.laby /b') do echo   º     - %%~ni
echo   º
echo   º Type map name: 
set /p map=
if not exist .\maps\%map%.laby goto QUIT

rem  INIT
set map=.\maps\%map%.laby
set tmp=%RANDOM%%RANDOM%.tmp
set go=LOAD
set win=0
set rep=0

:START
find "NAME" %map% > %tmp%
echo   º
echo   º
echo   º
echo   º       *** INFORMATIONS ***
echo   º
for /f "tokens=2 delims=;" %%i in (%tmp%) do echo   º Name: %%i
for /f "tokens=3 delims=;" %%i in (%tmp%) do echo   º Decription: %%i
find "AUTHOR" %map% > %tmp%
echo   º
for /f "tokens=2-3 delims=;" %%i in (%tmp%) do echo   º Author: %%i %%j
find "DATE" %map% > %tmp%
for /f "tokens=2-3 delims=;" %%i in (%tmp%) do echo   º Date: %%i %%j

:PAUSE
echo   º
echo   º Please hit a key to continue...
pause > NUL
goto %go%

:LOAD
color 08
cls
echo   º
echo   º Loading map...
echo   º
find "SIZE" %map% > %tmp%
for /f "tokens=2 delims=;" %%i in (%tmp%) do set size_h=%%i 
for /f "tokens=3 delims=;" %%i in (%tmp%) do set size_v=%%i 
echo   º --- Size: %size_h%x%size_v%
find "START" %map% > %tmp%
for /f "tokens=2 delims=;" %%i in (%tmp%) do set pos_h=%%i
set /a pos_h = %pos_h% + 1
for /f "tokens=3 delims=;" %%i in (%tmp%) do set pos_v=%%i
echo   º --- Start position: (%pos_h%;%pos_v%)
find "EXIT" %map% > %tmp%
for /f "tokens=2 delims=;" %%i in (%tmp%) do set exit_h=%%i
set /a exit_h = %exit_h% + 1
for /f "tokens=3 delims=;" %%i in (%tmp%) do set exit_v=%%i
echo   º --- Exit position: (%exit_h%;%exit_v%)
find "MAP%pos_v%" %map% > %tmp%
for /f "tokens=%pos_h% delims=;" %%i in (%tmp%) do set pos=%%i
echo   º --- Start number: %pos%
find "MAP%exit_v%" %map% > %tmp%
for /f "tokens=%exit_h% delims=;" %%i in (%tmp%) do set exit=%%i
echo   º --- Exit number: %exit%
echo   º
echo   º Starting the game...
echo   º
mode con cols=40 lines=25
color 0F
title %title% %map% 
goto GAME

:GAME
cls
echo  %title% %map%
echo.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
goto %pos%

:00
rem  useless
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
set u=0
set d=0
set l=0
set r=0
goto ACTION

:01
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo.
echo              ^<     ()     ^>
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
set u=0
set d=0
set l=1
set r=1
goto ACTION

:02
echo.
echo              ÛÛÛÛ  /\  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  ()  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  \/  ÛÛÛÛ
set u=1
set d=1
set l=0
set r=0
goto ACTION

:03
echo.
echo              ÛÛÛÛ  /\  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ
echo              ÛÛÛÛ  ()     ^>
echo              ÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
set u=1
set d=0
set l=0
set r=1
goto ACTION

:04
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo                        ÛÛÛÛ
echo              ^<     ()  ÛÛÛÛ
echo                        ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  \/  ÛÛÛÛ
set u=0
set d=1
set l=1
set r=0
goto ACTION

:05
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛ
echo              ÛÛÛÛ  ()     ^>
echo              ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  \/  ÛÛÛÛ
set u=0
set d=1
set l=0
set r=1
goto ACTION

:06
echo.
echo              ÛÛÛÛ  /\  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo                        ÛÛÛÛ
echo              ^<     ()  ÛÛÛÛ
echo                        ÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
set u=1
set d=0
set l=1
set r=0
goto ACTION

:07
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛ
echo              ÛÛÛÛ  ()     ^>
echo              ÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
set u=0
set d=0
set l=0
set r=1
goto ACTION

:08
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo                        ÛÛÛÛ
echo              ^<     ()  ÛÛÛÛ
echo                        ÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
set u=0
set d=0
set l=1
set r=0
goto ACTION

:09
echo.
echo              ÛÛÛÛ  /\  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  ()  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
set u=1
set d=0
set l=0
set r=0
goto ACTION

:10
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  ()  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  \/  ÛÛÛÛ
set u=0
set d=1
set l=0
set r=0
goto ACTION

:11
echo.
echo              ÛÛÛÛ  /\  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ
echo              ÛÛÛÛ  ()     ^>
echo              ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  \/  ÛÛÛÛ
set u=1
set d=1
set l=0
set r=1
goto ACTION

:12
echo.
echo              ÛÛÛÛ  /\  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo                        ÛÛÛÛ
echo              ^<     ()  ÛÛÛÛ
echo                        ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  \/  ÛÛÛÛ
set u=1
set d=1
set l=1
set r=0
goto ACTION

:13
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo.
echo              ^<     ()     ^>
echo.
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  \/  ÛÛÛÛ
set u=0
set d=1
set l=1
set r=1
goto ACTION

:14
echo.
echo              ÛÛÛÛ  /\  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo.
echo              ^<     ()     ^>
echo.
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
echo              ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
set u=1
set d=0
set l=1
set r=1
goto ACTION

:15
echo.
echo              ÛÛÛÛ  /\  ÛÛÛÛ
echo              ÛÛÛÛ      ÛÛÛÛ
echo.
echo              ^<     ()     ^>
echo.
echo              ÛÛÛÛ      ÛÛÛÛ
echo              ÛÛÛÛ  \/  ÛÛÛÛ
set u=1
set d=1
set l=1
set r=1
goto ACTION

:ACTION
set /a pos_x = %pos_h% - 1
set pos_y=%pos_v%
echo  (%pos_x%;%pos_y%)
echo.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
if %win%==1 goto END

echo  Where do you want to go?
echo.
if %u%==1 (echo      [Z] Up) else echo.
if %l%==1 (echo      [Q] Left) else echo.
if %d%==1 (echo      [S] Down) else echo.
if %r%==1 (echo      [D] Right) else echo.
echo.
set /p rep= [Z;Q;S;D]: 
if %u%==1 (
    if %rep%==Z set /a pos_v = %pos_v% - 1
    if %rep%==z set /a pos_v = %pos_v% - 1
)
if %l%==1 (
    if %rep%==Q set /a pos_h = %pos_h% - 1
    if %rep%==q set /a pos_h = %pos_h% - 1
)
if %d%==1 (
    if %rep%==S set /a pos_v = %pos_v% + 1
    if %rep%==s set /a pos_v = %pos_v% + 1
)
if %r%==1 (
    if %rep%==D set /a pos_h = %pos_h% + 1
    if %rep%==d set /a pos_h = %pos_h% + 1
)
if %rep%==quit goto QUIT
if %rep%==exit goto QUIT
if %pos_h%==%exit_h% if %pos_v%==%exit_v% set win=1
find "MAP%pos_v%" %map% > %tmp%
for /f "tokens=%pos_h% delims=;" %%i in (%tmp%) do set pos=%%i
goto GAME

:END
title %title% YOU WIN!
color 0A
echo.
echo   º YOU WIN!
set go=QUIT
goto PAUSE

:QUIT
title %title% BYE!
color 08
cls
echo.
echo   º BYE!
if %tmp%==0 exit
del %tmp%
exit
ATTENTION ! Les fichiers contenant les cartes doivent porter l'extension ".laby" et être placés dans un dossier "maps" pour être repérés par le script !

maps\test.laby

Code : Tout sélectionner

#inf
SIZE;3;3
START;3;3
EXIT;1;1
NAME;TEST;test map
AUTHOR;bigeyes;
DATE;16/07/2012;16:00

#map
MAP1;01;13;04
MAP2;10;02;09
MAP3;03;14;08
maps\map01.laby

Code : Tout sélectionner

#inf
SIZE;9;9
START;3;9
EXIT;9;3
NAME;MAP01;1st map
AUTHOR;bigeyes;
DATE;17/07/2012;15:00

#map
MAP1;05;04;05;13;01;01;01;04;10
MAP2;02;02;02;02;05;01;04;11;12
MAP3;09;03;06;02;02;05;12;09;03
MAP4;07;01;01;14;15;06;03;01;08
MAP5;05;13;13;01;14;04;05;01;04
MAP6;09;02;02;10;05;12;03;04;02
MAP7;05;06;02;03;12;02;05;06;02
MAP8;02;05;12;05;14;06;03;04;02
MAP9;03;06;09;03;01;01;01;14;06
Créer sa propre map :

Comme dit précédemment, la carte n'est pas écrite dans le script mais dans un fichier externe en ".laby" et placé dans le dossier "maps" situé au même niveau que le script. Il répond à une architecture précise : il présente en premier la carte en fournissant diverses informations, puis la carte du labyrinthe est écrite. Référez-vous aux fichiers d'exemples si certains points vous semblent obscurs.

La première partie du fichier est composée de six champs. Trois sont indispensables au bon fonctionnement du script et les trois autres sont facultatifs.
Le champs SIZE informe le script sur la taille du labyrinthe, START sur la position de départ et EXIT sur la sortie. Le champs NAME donne le nom et la description de la map, AUTHOR informe sur l'auteur de la map et DATE sur la date de création.

La deuxième partie du fichier contient donc la map. Celle-ci est composée d'un tas de nombres correspondant au différentes figures pouvant être rencontrées. De plus, chaque ligne doit être numérotée et commencer par MAP ; de cette façon le script peut faire la différence entre les informations et la map.

Je ne m'étendrais pas davantage sur la structure du fichier, celle-ci étant assez simple. Si vous avez un doute regardez les maps d'exemple. Si vraiment personne n'a rien compris je réécrirais ça un peu mieux mais je pense qu'il ne devrait pas y avoir de problème ! Je vais juste donner les différentes figures et les chiffres associés, et il ne vous restera plus qu'à créer vos maps !

Code : Tout sélectionner

figures.txt

  00        01        02        03
######    ######    ##  ##    ##  ##
######              ##  ##    ##
######    ######    ##  ##    ######

  04        05        06        07
######    ######    ##  ##    ######
    ##    ##            ##    ##
##  ##    ##  ##    ######    ######

  08        09        10        11
######    ##  ##    ######    ##  ##
    ##    ##  ##    ##  ##    ##
######    ######    ##  ##    ##  ##

  12        13        14        15
##  ##    ######    ##  ##    ##  ##
    ##
##  ##    ##  ##    ######    ##  ##
Si j'ai la foi je ferai bien un petit éditeur de map, ça doit pas être trop compliqué, mais on verra ça plus tard ^^ Pas encore fait non plus mais qui pimenterait un peu le tout : rajouter une gestion de pièges ou des genres de mini-quêtes. 'Fin bref si j'ai du temps à perdre je saurais quoi faire ;-)

A+ les amis !
Fichiers joints
laby_batch.zip
Contient deux versions, la toute première (laby.bat) et une améliorée (laby_mod.bat) mais pas finalisée.
(5.08 Kio) Téléchargé 686 fois
Modifié en dernier par bigeyes le 28 janv. 2017 20:51, modifié 1 fois.
Jimi123
Batcheur occasionnel
Messages : 1
Enregistré le : 15 nov. 2014 21:47

Re: [JEU] Labyrinthe en batch !

Message par Jimi123 »

Si vous ne modifiez pas le code, pensez à créer un dossier "maps" au même niveau que le script et à y inclure les deux cartes données après le script.
We are the pioneers in providing Brain Dumps.com dumps and 1D0-635 exam tutorials with 100% exam pass guarantee. Download our latest lynn.edu ccie & hood questions to pass real exam of mcitp training in time.
Ddamadosic
Batcheur occasionnel
Messages : 2
Enregistré le : 13 févr. 2015 09:44

Re: [JEU] Labyrinthe en batch !

Message par Ddamadosic »

What has to be read from here is great.
TheBirdLion
Batcheur occasionnel
Messages : 2
Enregistré le : 11 mars 2015 14:07

Re: [JEU] Labyrinthe en batch !

Message par TheBirdLion »

Hopefully there will be some winter. I'll keep my eyes open for a post. Sounds like fun.
Avatar du membre
dos.bat
Batcheur occasionnel
Messages : 7
Enregistré le : 28 janv. 2017 19:23

Re: [JEU] Labyrinthe en batch !

Message par dos.bat »

C'est génial très bien pensé! et dire que les premier jeux avaient cette tête... :shock:
Salut :P
bigeyes
Batcheur occasionnel
Messages : 2
Enregistré le : 24 juil. 2012 14:55

Re: [JEU] Labyrinthe en batch !

Message par bigeyes »

Salut !

Merci pour le commentaire, ça fait plaisir, surtout que j'avais complètement oublié ce script depuis le temps :p
J'en ai profité pour mettre une version légèrement améliorée, dans laquelle il n'est plus nécessaire de valider les déplacements, et qui contient un début de sauvegarde des scores (mais pas opérationnel il me semble). Il y a aussi une map en plus.

Bonne soirée ;)
Avatar du membre
dos.bat
Batcheur occasionnel
Messages : 7
Enregistré le : 28 janv. 2017 19:23

Re: [JEU] Labyrinthe en batch !

Message par dos.bat »

Mais de rien! le jeu est super!
Salut :P
art
Batcheur débutant
Messages : 13
Enregistré le : 13 mars 2015 00:21

Re: [JEU] Labyrinthe en batch !

Message par art »

Qui est chaud pour faire un gestionnaire de sécurité en batch?
temuntte
Batcheur occasionnel
Messages : 5
Enregistré le : 01 déc. 2015 07:06

Re: [JEU] Labyrinthe en batch !

Message par temuntte »

J'y consens avec plaisirtapis cuisson
Répondre