BatchClipboard

Vous n'êtes pas identifié.

#1 26-01-2009 07:36:39

Laddy
Administrateur
Date d'inscription: 21-08-2008
Messages: 1318

[Carlos] Jeu Batch Worms

Carlos a developpé plusieurs jeux en batch comme quoi tout est possible, worms est tout simplement le jeu du serpent Snake que vous avez sous doute jouer dans les salles d'attente ou en cours avec votre téléphone portable.

Code: dos

  1. ::
  2. :: Copyright (c) 2009 Carlos Montiers
  3. :: All rights reserved.
  4. ::
  5. :: Redistribution and use in source and binary forms, with or without
  6. :: modification, are permitted provided that the following conditions
  7. :: are met:
  8. :: 1. Redistributions of source code must retain the above copyright
  9. ::    notice, this list of conditions and the following disclaimer.
  10. :: 2. Redistributions in binary form must reproduce the above copyright
  11. ::    notice, this list of conditions and the following disclaimer in the
  12. ::    documentation and/or other materials provided with the distribution.
  13. :: 3. Neither the name of copyright holders nor the names of its
  14. ::    contributors may be used to endorse or promote products derived
  15. ::    from this software without specific prior written permission.
  16. ::
  17. :: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  18. :: ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  19. :: TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  20. :: PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS
  21. :: BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  22. :: CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  23. :: SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  24. :: INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  25. :: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  26. :: ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  27. :: POSSIBILITY OF SUCH DAMAGE.
  28. ::
  29.  
  30. @ECHO OFF
  31. REM WORM GAME
  32. REM VERSION: 5.0
  33. REM MY ULTIMATE BATCH GAME
  34. REM AUTHOR: CARLOS MONTIERS
  35.  
  36. SETLOCAL ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
  37.  
  38. (SET EXISTCHOICE=)
  39. SET "FOLDER_TO_SEARCH=.\;%PATH%"
  40. FOR %%A IN (CHOICE.EXE) DO (
  41.   SET "EXISTCHOICE=%%~$FOLDER_TO_SEARCH:A"
  42. )
  43. IF NOT DEFINED EXISTCHOICE (
  44.   SET "FOLDER_TO_SEARCH=%PATH%"
  45.   FOR %%A IN (CHOICE.COM) DO (
  46.     SET "EXISTCHOICE=%%~$FOLDER_TO_SEARCH:A"
  47.   )
  48. )
  49. IF NOT DEFINED EXISTCHOICE (
  50.   ECHO.WORM GAME 5.0
  51.   ECHO.IF YOUR OPERATING SYSTEM IS:
  52.   ECHO.64 BITS YOU NEED: CHOICE.EXE ^(IN THIS FOLDER^)
  53.   ECHO.32 BITS YOU NEED: CHOICE.COM ^(IN FOLDER %WINDIR%\SYSTEM32^)
  54.   ECHO.YOU CAN GET IN:
  55.   SET "SERVER=ftp.microsoft.com/Services/TechNet"
  56.   ECHO.!SERVER!/samples/PS/Win98/Reskit/SCRPTING/CHOICE.EXE
  57.   ECHO.!SERVER!/Windows/msdos/RESKIT/SUPPDISK/CHOICE.COM
  58.   ECHO.PRESS ANY KEY TO QUIT ...
  59.   PAUSE >NUL
  60.   GOTO :EOF
  61. )
  62.  
  63. :CHOICEV
  64. (SET KEYS=SWDA)
  65. (SET /A SECONDS=2)
  66. CHOICE /C 0 /N /D 0 /T 1 <NUL >NUL 2>&1
  67.   REM CHOICE VERSION 2003 .EXE
  68.   SET "ACTION1=CHOICE.EXE /C !KEYS! /N /D "
  69.   SET "ACTION2= /T !SECONDS!"
  70.   SET "AGAIN=CHOICE.EXE /C !KEYS!YN /N /M "PLAY AGAIN[Y,N]?""
  71. ) ELSE (
  72.   REM CHOICE VERSION 98 .COM AND .EXE
  73.   SET "ACTION1=CHOICE /C:!KEYS! /N /T:"
  74.   SET "ACTION2=,!SECONDS!"
  75.   SET "AGAIN=CHOICE /C:!KEYS!YN /N "PLAY AGAIN[Y,N]?""
  76. )
  77. (
  78. SET "ACTION1=%ACTION1%"
  79. SET "ACTION2=%ACTION2%"
  80. SET "AGAIN=%AGAIN%"
  81. )
  82.  
  83.  
  84. :INFO
  85. ECHO.WORM GAME 5.0
  86. ECHO.W UP
  87. ECHO.S DOWN
  88. ECHO.A LEFT
  89. ECHO.D RIGHT
  90. ECHO.PRESS ANY KEY TO CONTINUE ...
  91. PAUSE >NUL
  92.  
  93. :BOARD
  94. (SET /A MAX_WIDTH=7)
  95. (SET /A MAX_HEIGHT=!MAX_WIDTH!*2-2)
  96. (SET BORDER)
  97. (SET FOOD)
  98. (SET BACKGROUND= )
  99. (SET WORM_BODY)
  100. (SET WORM_HEAD=)
  101.  
  102. (SET DECISION=#ROW+#ROW-#COLUMN+#COLUMN-#)
  103.  
  104. :START
  105. (SET HISTORY_MOVEMENTS=)
  106. (SET /A SCORE=0)
  107. (SET /A TRIES_TO_PUT_FOOD=0)
  108. (SET /A ROW=0)
  109. (SET /A COLUMN=0)
  110. FOR /F "DELIMS==" %%. IN ("'SET BOARD[ 2>NUL'") DO (
  111.   SET "%%.="
  112. )
  113. FOR /L %%X IN (0,1,!MAX_WIDTH!) DO (
  114.   FOR /L %%Y IN (0,1,!MAX_HEIGHT!) DO (
  115.     SET "BOARD[%%X][%%Y]=!BACKGROUND!"
  116.   )
  117. )
  118. (SET MOVEMENT=D)
  119. (SET BOARD[!ROW!][!COLUMN!]=!WORM_BODY!)
  120. (SET HISTORY_MOVEMENTS=!HISTORY_MOVEMENTS!\[!ROW!][!COLUMN!])
  121. (SET /A COLUMN+=1)
  122. (SET BOARD[!ROW!][!COLUMN!]=!WORM_HEAD!)
  123. (SET LAST=BOARD[!ROW!][!COLUMN!])
  124. CALL :FOOD
  125.  
  126. :PLAY
  127. (SET HISTORY_MOVEMENTS=!HISTORY_MOVEMENTS!\[!ROW!][!COLUMN!])
  128.  
  129. CALL :SHOW
  130.  
  131. :KEYPRESS
  132. %ACTION1%!MOVEMENT!%ACTION2% >NUL 2>&1
  133.  
  134. :DECISION
  135. FOR /F "DELIMS=, TOKENS=%ERRORLEVEL%" %%C IN (",S,W,D,A,") DO (
  136.   SET "MOVEMENT=%%C"
  137. )
  138.  
  139. FOR /F "DELIMS=# TOKENS=%ERRORLEVEL%" %%C IN ("!DECISION!") DO (
  140.   SET /A "%%C=1"
  141. )  
  142.  
  143. (SET EVAL=BOARD[!ROW!][!COLUMN!])
  144. (SET CONTENT_EVAL=!%EVAL%!)
  145. IF NOT DEFINED !EVAL! (
  146.   GOTO :GAMEOVER
  147. ) ELSE (
  148.   IF ^!CONTENT_EVAL! EQU ^!BACKGROUND! (
  149.     SET "!LAST!=!WORM_BODY!"
  150.     SET "!EVAL!=!WORM_HEAD!"
  151.     SET "LAST=BOARD[!ROW!][!COLUMN!]"
  152.     CALL :NOCREACE
  153.   ) ELSE (
  154.     IF ^!CONTENT_EVAL! EQU ^!FOOD! (
  155.       SET "!LAST!=!WORM_BODY!"
  156.       SET "!EVAL!=!WORM_HEAD!"
  157.       SET "LAST=BOARD[!ROW!][!COLUMN!]"
  158.       SET /A "SCORE+=1"
  159.       CALL :FOOD
  160.     ) ELSE (
  161.       GOTO :GAMEOVER
  162.     )
  163.   )
  164. )
  165.  
  166. GOTO :PLAY
  167.  
  168. :SHOW
  169. CLS
  170. FOR /L %%X IN (-!MAX_WIDTH!,1,!MAX_WIDTH!) DO (
  171.   SET /P "PRINT=!BORDER!"<NUL
  172. )
  173. FOR /L %%X IN (0,1,!MAX_WIDTH!) DO (
  174.   SET /P "PRINT=!BORDER!"<NUL
  175.   FOR /L %%Y IN (0,1,!MAX_HEIGHT!) DO (
  176.     SET /P "PRINT=!BOARD[%%X][%%Y]!"<NUL
  177.   )
  178.   SET /P "PRINT=!BORDER!"<NUL
  179.   ECHO.
  180. )
  181. FOR /L %%X IN (-!MAX_WIDTH!,1,!MAX_WIDTH!) DO (
  182.   SET /P "PRINT=!BORDER!"<NUL
  183. )
  184. ECHO\SCORE:!SCORE!
  185. GOTO :EOF
  186.  
  187. :FOOD
  188. (SET /A TRIES_TO_PUT_FOOD+=1)
  189. IF !TRIES_TO_PUT_FOOD! GTR 5 (GOTO :FOOD_E)
  190. (SET CANDIDATE=BOARD[%RANDOM:~-1%][%RANDOM:~-1%])
  191. IF ^!%CANDIDATE%! EQU ^!BACKGROUND! (
  192.   SET "!CANDIDATE!=!FOOD!"
  193. ) ELSE (
  194.   GOTO :FOOD
  195. )
  196. (SET /A TRIES_TO_PUT_FOOD=0)
  197. GOTO :EOF
  198.  
  199. :FOOD_E
  200. FOR /L %%X IN (0,1,!MAX_WIDTH!) DO (
  201.   FOR /L %%Y IN (0,1,!MAX_HEIGHT!) DO (
  202.     IF ^!BOARD[%%X][%%Y]! EQU ^!BACKGROUND! (
  203.       SET "BOARD[%%X][%%Y]=!FOOD!"
  204.       GOTO :FOOD_EE
  205.     )
  206.   )
  207. )
  208. :FOOD_EE
  209. (SET /A TRIES_TO_PUT_FOOD=0)
  210. GOTO :EOF
  211.  
  212. :GAMEOVER
  213. CLS
  214. CALL :SHOW
  215. !AGAIN!
  216.   GOTO :GAMEOVER
  217. )
  218.   GOTO :START
  219. )
  220. GOTO :EOF
  221.  
  222. :NOCREACE
  223. FOR /F "DELIMS=\ TOKENS=1*" %%A IN ("!HISTORY_MOVEMENTS!") DO (
  224.   SET "BOARD%%A=!BACKGROUND!"
  225.   SET "HISTORY_MOVEMENTS=%%B"
  226. )
  227. GOTO :EOF


Télécharger Worms by Carlos
Attention ce jeu peut subir des modifications, assurez vous d'avoir la dernière version.

Hors ligne

 

#2 26-01-2009 18:32:31

Batch_Man
Administrateur
Date d'inscription: 15-12-2008
Messages: 719

Re: [Carlos] Jeu Batch Worms

Oui, c'est vraiment ENORME ce jeu !

Hors ligne

 

#3 28-01-2009 19:39:04

Laddy
Administrateur
Date d'inscription: 21-08-2008
Messages: 1318

Re: [Carlos] Jeu Batch Worms

Hello Carlos
could you explain how you doing to assign a keyboard shortcut to perform an action?

Hors ligne

 

#4 02-02-2009 01:30:29

carlos
Nouveau membre
Date d'inscription: 28-01-2009
Messages: 1

Re: [Carlos] Jeu Batch Worms

The choice command syntax depends on your version, however in the code assigned SWDA and assign it in two seconds if no keys are pressed is used that is the key variable MOVEMENT

So every time you play is stored in the variable previous movement MOVEMENT

Choice as the key errorlevel assigned, for example:

SWDA
S errorlevel 1
W errorlevel 2
D errorlevel 3
A errorlevel 4

:DECISION
FOR /F "DELIMS=, TOKENS=%ERRORLEVEL%" %%C IN (",S,W,D,A,") DO (
  SET "MOVEMENT=%%C"
)

FOR /F "DELIMS=# TOKENS=%ERRORLEVEL%" %%C IN ("#ROW+#ROW-#COLUMN+#COLUMN-#") DO (
  SET /A "%%C=1"
rem S set /a row+=1
rem W set /a row-=1
rem D set /a column+=1
rem A set /a column-=1
)

Dernière modification par carlos (02-02-2009 01:30:58)

Hors ligne

 

#5 02-02-2009 15:26:04

Shoot
Batch.xoo.it
Date d'inscription: 25-08-2008
Messages: 19

Re: [Carlos] Jeu Batch Worms

En effet quand on voit sa on se dit que tout est possible :)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr