Crear programa de serpiente (2 / 4 paso)

Paso 2: Luego copiar y pegar este código en el Bloc de notas

de
Si "% ~ 1" == "startGame" goto: juego
Si "% ~ 1" == "startController" goto: controlador

::---------------------------------------------------------------------
:: configurar algunas variables globales utilizados por el juego y el controlador

setlocal disableDelayedExpansion
: getSession
Si temp ("set tempFileBase=%temp%\") else Si tmp set "tempFileBase=%tmp%\"
conjunto "tempFileBase = % tempFileBase % serpiente % tiempo:: = _ %"
conjunto "keyFile=%tempFileBase%_key.txt"
conjunto "cmdFile=%tempFileBase%_cmd.txt"
conjunto "gameLock=%tempFileBase%_gameLock.txt"
conjunto "gameLog=%tempFileBase%_gameLog.txt"
conjunto "signal=%tempFileBase%_signal.txt"
conjunto "saveLoc=%userprofile%\Snake"
conjunto "userPref=%saveLoc%\SnakeUserPref.txt"
conjunto "hiFile=%saveLoc%\Snake!growth! Hola"

::------------------------------------------
:: Esta sesión de juego y lanzamiento de la cerradura.
:: Lazo atrás y una nueva sesión si fracaso.
:: Limpieza y salir cuando haya terminado

llamar: lanzar 7 > '% gameLock %' || GOTO: getSession
del "% tempFileBase % *"
salida/b

::------------------------------------------
: iniciar el juego y el controlador

llamar al: fixLogs
copiar nul "% keyFile" > nul
copiar nul "% cmdFile %" > nul
Inicio "" /b cmd /c ^ "" % ~ f0 "startController 9 ^ > ^ >"% keyFile"8 ^ < '% cmdFile %' 2 ^ > nul ^ > nul ^"
CMD /c ^ "" % ~ f0 "startGame 9 ^ <"% keyFile"8 ^ > ^ > '% cmdFile %' ^ Eco ()

::--------------------------------------------------------------
:: Al salir, espere a que el controlador de cerrar antes de regresar

: cerrar
2 > nul (>> llamada "% keyFile") || GOTO: cerrar
Si no existen "% ~ dp0CursorPos.exe" ()
juego de echo puede mejorarse mediante la instalación de
Eco CursorPos.exe de Aacini, disponible en
Eco http://goo.gl/hr6Kkn
echo)
echo % cmdcmdline % |find /i "% ~ f0" > nul & & hacer una pausa
)
salida/b 0

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: juego
% title ~ nx0
CLS

::---------------------------------------
:: Tamaño campo de juego
:: máxima igualdad: (width-2)*(height-2) < = 1365

conjunto "anchura = 40" máximo = 99
conjunto "altura = 25" max = 99

::----------------------------
:: cambiar el tamaño de la ventana de la consola

Set /a cols = ancho + 1, líneas = altura + 10, area=(width-2)*(height-2)
Si () % área % gtr 1365
echo ERROR: área del campo de juego demasiado grande
sendCmd % dejar de fumar
salida
)
Si % líneas % lss 14 set = 14
Si % cols % lss 46 set cols = 46
con modo: cols = líneas de % de % cols = % de líneas

::----------------------------
:: definir variables

conjunto "configOptions = diffCode dificultad crecimiento moveKeys arriba abajo izquierda derecha"
conjunto "configOptionCnt = 9"

conjunto "moveKeys = 4"

conjunto "up = W"
conjunto "abajo = S"
conjunto «izquierda = A»
conjunto «derecha = D»
conjunto "Pausa = P"

conjunto "espacio ="
conjunto "destino = #"
conjunto "comida = +"
conjunto "cabeza =
conjunto "cuerpo = O"
conjunto "muerte = X"

conjunto "crecimiento = 1"

Si existen "% userPref %" / f "usebackq delims =" condition ("% userPref %") set "%% V"

conjunto "spinner1 =-"
conjunto "spinner2 = \"
conjunto "spinner3 = |"
conjunto "spinner4 = /"
sistema "spinner = spinner1 spinner2 spinner3 spinner4"

conjunto "delay1 = 20"
conjunto "delay2 = 15"
conjunto "delay3 = 10"
conjunto "delay4 = 7"
conjunto "delay5 = 5"
conjunto "delay6 = 3"

conjunto "desc1 = perezoso"
conjunto "desc2 = arrastre"
conjunto "desc3 = lenta"
conjunto "desc4 = Normal"
conjunto "desc5 = rápido"
conjunto "desc6 = loco"

conjunto "spinnerDelay = 3"

Set /a "altura de la anchura-= 1,-= 1"

:: definir LF como un carácter de avance de línea (nueva línea)
Set ^ «LF = ^

^ "Sobre vaciar es necesaria: No extraiga

:: definir CR como un carácter de retorno de carro
for /f % % en (' copiar /Z "% ~ dpf0" nul ") set" CR = %% A "

:: definir BS como carácter de retroceso
for /f % % en (' "sugerirán el $H para % en (1) rem" ') set "BS = %% A"

conjunto "superior = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
Set "no válido = * ~ ="

::---------------------------
:: definir macros

Si existen "% ~ dp0CursorPos.exe" ()
conjunto "cls = CursorPos 0 0"
conjunto "ClearLine = Eco (& CursorPos 0 -1"
conjunto "ClearPrev = CursorPos 0 - 0 y echo ("
) () otro
conjunto "cls = cls"
conjunto "ClearLine ="
conjunto "ClearPrev ="
)

:: definir una nueva línea a continuación de la línea
Set ^ "\n=^^^%LF%%LF%^%LF%%LF%^^"

:: setErr
::: Sistemas ERRORLEVEL 1
conjunto "setErr=(call)"

:: clrErr
::: Sistemas ERRORLEVEL 0
conjunto "clrErr = (llamada)"

:: comando sendCmd
::: envía un comando al controlador
conjunto "sendCmd = > & 8 echo"

:: getKey [ValidKey] [ValidKey...]
::: Control de pulsación de tecla del controlador. Aceptar una ValidKey.
::: Token delimitadores y veneno caracteres deben ser citados.
::: Aceptar cualquier tecla si no ValidKey especificado.
::: Volver resultado en variable clave. Clave es indefinido si ninguna tecla válida.
Set getKey=%\n%
para %% # (1 2) hacer si %% #== 2 (%\n%
Set key=%\n%
Set inKey=%\n%
Set keyTest=%\n%
^ < ^ & 9 set /p "inKey="%\n%
Si define inKey (%\n%
Set inKey=!inKey:~0,-1!%\ n %
para % en (! args!) set /a keyTest = 1 ^ & si /i! inKey! EQU %% ~ C fije key=!inKey!%\ n %
)%\n%
Si no define keyTest key=!inKey!%\ n %
) else set args =

:: dibujar
::: dibuja el tablero
Set draw=%\n%
Set screen=%\n%
para /l % % de (0,1, % de altura) configurar pantalla =! pantalla!!!! línea %% Y!! LF!%\ n %
pantalla Set =! pantalla! Velocidad =! Dificultad ¡ repetición! LF! Tasa de crecimiento =! crecimiento! Puntuación =! Hola! LF! Puntuación =! puntuación! Tiempo =! m!:!s!%\ n %
Si define reproducción si no se define replayFinished (%\n%
pantalla Set =! pantalla!!!! LF!!!! LF! Presione una tecla para cancelar la replay%\n%
)%\n%
cls de % ^ & echo(!screen!

:: prueba X Y ValueListVar
::: prueba si valor en las coordenadas X, Y es dentro de contenidos de ValueListVar
Set test=%\n%
para %% # (1 2) hacer si %% #== 2 (for /f "tokens = 1-3" condition en ("! args!") hacer (%\n%
para % en ("! línea %% 2: ~ %% 1.1!") si "! %% 3: %% ~ A =!"neq"! %% 3!" clrErr % %setErr%%\n% más
)) else set args =

:: parcela X Y ValueVar
::: sitios de contenido de ValueVar en las coordenadas X, Y
Set plot=%\n%
para %% # (1 2) hacer si %% #== 2 (for /f "tokens = 1-3" condition en ("! args!") hacer (%\n%
conjunto "part2=!line%%2:~%%1!"%\ n %
conjunto "línea %% 2 =! línea %% 2: ~ 0, %% 1!!!! %%3!! part2:~1!"%\ n %
)) else set args =

::--------------------------------------
:: el juego
setlocal enableDelayedExpansion
Si no existen "% saveLoc%\" md "% saveLoc"
conjunto "reproducir = Aborting... "
conjunto "replayAvailable ="
llamar al: loadHighScores
llamada: menú principal

::--------------------------------------
:: principales loop (bucle infinito)
para /l %%. en () no)

% === Busque y proceso cancelar señal si en modo de reproducción replay === %
Si define replay si existen ("% de señal"
del "% de señal"
conjunto "replayFinished = 1"
% drenaje %
echo)
ClearLine %
llamar: purga
para % en (! configOptions!) establece "%% A =! %% ASALVO!"
llamada: menú principal
)

% === Calcular tiempo desde última jugada === %
for /f "tokens = 1-4 delims =:.," condition en ("! tiempo: = 0!") set /a "t2 = (((1 %% un * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% d-36610100, tDiff = t2-t1"
Si! tDiff! LSS 0 set /a tDiff += 24 * 60 * 60 * 100

Si! tDiff! GEQ! retraso! (
% === retraso ha caducado, así que tiempo para el movimiento === %
Set /a t1 = t2

% === Calcular tiempo de juego === %
Si no define el conjunto de casillas "casillas =! t2!"
Set /a "gameTime=(t2-gameStart)"
Si! gameTime! LSS 0 set /a "gameTime += 24 * 60 * 60 * 100"
Set /a "gameTime =(gameTime-pauseTime)/100, m = gameTime/60, s = gameTime %% 60"
Si! m! LSS 10 set "m = 0! m!"
Si! s! LSS 10 set "s = 0 ¡ ¡ s!"

% === Haz keypress === %
getKey %! las llaves!
Si /i! clave! EQU! pausa! (

% === pausar juego === %
echo)
llamar: pide "Pausa - Oprima una tecla para continuar..."
% ClearPrev %
sendCmd % ir
for /f "tokens = 1-4 delims =:.," condition en ("! tiempo: = 0!") set /a "t2 = (((1 %% un * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% d-36610100, tDiff = t2-t1"
Si! tDiff! LSS 0 set /a tDiff += 24 * 60 * 60 * 100
Set /a pauseTime += tDiff

) () otro

% === establecer dirección === %
Si no define replay (echo(!key!.) >> «! gameLog! "
para % en (! clave!) si! moveKeys! () ecuación 2
Set /a "xDiff = xTurn %% K *! yDiff!, yDiff = yTurn %% K *! xDiff!"
) else if "! %% KAxis!"neq"! eje!" (
Set /a "xDiff = xDiff %% K, yDiff = yDiff %% K"
conjunto "eje =! %% KAxis!"
)

% === borrar la cola === %
conjunto "TX =! snakeX: ~ -2!"
conjunto "TY =! snakeY: ~ -2!"
conjunto "snakeX =! snakeX: ~ 0, -2!"
conjunto "snakeY =! snakeY: ~ 0, -2!"
% de la parcela. TX!! TY! espacio

% === calcular nueva ubicación cabeza e intente mover === %
Set /a "X = PX + xDiff, Y = PY + yDiff"
Set "X =! X!"
Set "Y =! Y!"
Set "X =! X: ~ -2! "
Set "Y =! Y: ~ -2! "
(prueba de % %! X!! Y! playerSpace) & & ()

% === movimiento acertado === %

% === Retire la nueva ubicación de la cabeza de la lista vacía === %
para % en ("! X.") para % en ("! Y!") conjunto "vacío =! vacía: #%% ~ X %% ~ Y =!"

% === comer cualquier alimento que pueda estar presente === %
(prueba de % %! X!! Y! alimentos) & & ()
% === iniciar crecimiento === %
Set /a crecer crecimiento +=

% === localizar y dibujar nuevos alimentos === %
Si define () repetición
< & 9 set /p "F ="
) () otro
Set /a "F = (! al azar! %%(emptyCnt-1)) * 6 + 1"
(echo! F!) >> «! gameLog! "
)
para % en (! F!) hacer (% parcela %! vacía: ~ %% F, 5! alimento)
)

Si! crecer! (GTR 0
% === restaurar la cola === %
% de la parcela. TX!! TY! cuerpo
conjunto "snakeX =! snakeX!!!! TX."
conjunto "snakeY =! snakeY!!!! TY!"
Set /a emptyCnt = 1

% === administrar puntuación === %
Set /a "puntuación += 1, crecer-= 1"
Si no define replay si! puntuación! GTR! Hola! Set /a "Hola += 1, newHi = 1"

) () otro
% === Añadir la posición de la cola anterior a la lista vacía === %
conjunto "vacío =! vacía! #! TX!! TY!"
)

% === la cabeza nuevo === %
Si define snakeX (% parcela %! PX!! PY! cuerpo)
% de la parcela. X!! Y! cabeza

% === Añadir la nueva posición de la cabeza a las cadenas de serpiente === %
conjunto "snakeX =! X!!!! snakeX!"
conjunto "snakeY =! Y!! snakeY!"
conjunto "PX =! X!"
conjunto "PY =! Y!"

% drenaje %

) || (

% === movimiento fallido - juego sobre === %
conjunto "replayFinished = 1"
% de la parcela. TX!! TY! cuerpo
llamar: spinner! PX!! PY! muerte
% drenaje %
Si define () newHi
echo)
Eco nueva puntuación más alta - ¡ Felicidades ^ ^!
conjunto "Hola! diffCode! =! cuenta!"
copia "! gameLog!" "% hiFile %! diffCode!. txt"> nul
>> «% hiFile! diffCode!. txt"Eco::! puntuación!
)
echo)
ClearLine %
llamar: pedir "Presione una tecla para continuar..."
para % en (! configOptions!) establece "%% A =! %% ASALVO!"
llamada: menú principal
)
)
)
)

::-------------------------------------
: getString pronto Var MaxLen
:: Solicitar una cadena con longitud máxima de MaxLen.
:: Claves válidas son alfanuméricos, espacio, guión bajo y guión
:: Cadena termina por entrar
:: Retroceso trabaja para borrar el carácter anterior
:: El resultado es devuelto en Var
Set /a "maxLen = %3"
conjunto "%2 ="
indicador de % de % sendCmd
llamar: purga
: getStringLoop
(getKey %! superior! 0 1 2 3 4 5 6 7 8 9 "" _ - {Enter}! BS!)
Si define () clave
Si! clave! () equ {Enter}
echo)
salida/b
)
Si! clave! NEQ! BS! Si! maxLen! (GTR 0
Set /a maxLen = 1
conjunto "2% =! %2! clave!
)
Si! clave! EQU! BS! Si define () %2
Set /a maxLen += 1
conjunto "2% =! 2%: ~ 0, -1!"
)
)
Si define inKey sendCmd por ciento uno
GOTO: getStringLoop

::-------------------------------------
: pedir pronto ValidKey [Validkey]...
:: Aviso para pulsar una tecla.
:: Espere hasta que se presiona un ValidKey y devuelve el resultado en la variable clave.
:: Token delimitadores,), y veneno caracteres deben ser citados.
indicador de % de % sendCmd
(set validKeys = % *)
(set validKeys =! validKeys:% 1 =!)
llamar: purga
: getResponse
(getKey %! validKeys!)
Si no define () clave
Si define inKey sendCmd por ciento uno
GOTO: getResponse
)
salida/b

: purga
conjunto "inKey ="
para /l % % en (1 1 1000) no ()
Set /p "inKey ="
Si "! inKey!" equ "{purgada}." salida/b
) < & 9
GOTO: purga

::-------------------------------------
: spinner X Y ValueVar
Set /a d1 =-1000000
para/l % (1 1 5) hacer para % en (spinner %) no ()
llamar al: spinnerDelay
Parcela % Condition %2% %
% drenaje %
)
llamar al: spinnerDelay
(parcela % Condition % %2 3)
salida/b

::-------------------------------------
: retraso centiSeconds
setlocal
for /f "tokens = 1-4 delims =:.," condition en ("! tiempo: = 0!") set /a "spinnerDelay = %1, d1 = (((1 %% un * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% d-36610100"
:: caen a través: spinnerDelay

::-------------------------------------
: spinnerDelay
for /f "tokens = 1-4 delims =:.," condition en ("! tiempo: = 0!") set /a "d2 = (((1 %% un * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% dDiff d-36610100, = d2-d1"
Si % dDiff % lss 0 set /a dDiff += 24 * 60 * 60 * 100
Si % dDiff % lss % spinnerDelay % goto: spinnerDelay
Set /a d1 = d2
salida/b

::-------------------------------------
: menú principal
CLS
conjunto "loadAvailable ="
tasa de crecimiento de eco =! crecimiento!
echo)
Eco menú principal:
echo)
Eco N - nuevo juego
Si define replayAvailable eco R - juego anterior de repetición
Si define saveAvailable eco S - guardar un juego
Si existen *. snake.txt echo L - carga y ver un guardado juego & set "loadAvailable = L"

Eco C - opciones de Control
Eco G - opciones de gráfico
echo Q - dejar de fumar
echo)
conjunto "hiAvailable ="
para /l % % en (1 1 6) hacer si define Hola %% () N
Si no define () hiAvailable
Eco repetición alta puntuación:
echo)
)
conjunto "desc =! desc %% N!..."
conjunto "hiAvailable =! hiAvailable! %% N "
echo % %! desc: ~ 0, 8 ¡ Hola %% N!
)
Si se ha definido (eco) hiAvailable
establecer "teclas = N C G Q! hiAvailable! replayAvailable! saveAvailable! loadAvailable!"
llamar: pedir ">"! las llaves!
Si /i! clave! () ecuación Q
sendCmd % dejar de fumar
CLS
salida
)
Si /i! clave! () ecuación N
conjunto "reproducir ="
conjunto "replayAvailable = R"
conjunto "saveAvailable = S"
GOTO: inicializar
)
Si /i! clave! () equ S
Si define () replayAvailable
llamar: pedir "puntuación # o P de la anterior: «! hiAvailable! P
) () otro
llamar: pedir "puntuación #: «! hiAvailable!
)
Eco! clave!
Si /i! clave! EQU P (sistema "src =! gameLog!") otro conjunto "src = % hiFile %! clave!. txt"
llamar: getString "Guardar nombre de archivo:" archivo 20
copia "! fuente!" «! archivo!. Snake.txt"
llamar: pedir "Presione una tecla para continuar..."
)
Si /i! clave! () equ L
llamar: getString "nombre de archivo de carga:" archivo 20
Si existen "! archivo!. () Snake.txt"
conjunto "reproducir =! archivo!. Snake.txt"
GOTO: inicializar
)
echo Error: archivo "! archivo!. Snake.txt"no encontrado
llamar: pedir "Presione una tecla para continuar..."
)
Si /i! clave! () ecuación R
conjunto "reproducir =! gameLog!"
GOTO: inicializar
)
Si! clave! GEQ 1 si! clave! (Leq 6
conjunto "reproducir = % hiFile %! clave!. txt"
GOTO: inicializar
)
Si /i! clave! EQU C llamada: controlOptions
Si /i! clave! EQU G llamada: graphicOptions
GOTO: menú principal

::-------------------------------------
: controlOptions
CLS
conjunto "teclas = {Enter} T L R P"
Si! moveKeys! conjunto equ 4 "llaves =! las llaves! U D"
Eco opciones de Control:
echo)
Eco T - tipo... =! moveKeys! teclas
echo)
Eco L - izquierda... =! izquierda!
Eco R - derecho... =! derecho!
Si! moveKeys! EQU 4 echo U - arriba... =! arriba!
Si! moveKeys! EQU 4 echo D - abajo... =! abajo!
echo)
Eco P - pausa... =! pausa!
echo)
Eco {Enter} - volver al menú principal
echo)
llamar: pedir ">"! las llaves!
Si! clave! goto equ {Enter}: saveUserPrefs
Si /i! clave! () ecuación T
Si! moveKeys! EQU 2 (set "moveKeys = 4") otro conjunto "moveKeys = 2"
GOTO: controlOptions
)
conjunto "opción = LLeft RRight UUp DDown PPause"
for /f % % en ("! opción: * % clave % =!") hacer ()
llamar: pedir "Presione una tecla para %% O:"
para % en (0 1 2) hacer si "! llave!"equ"! no válido: ~ %% K, 1!" goto: controlOptions
para % en (! superior!) establece "clave =! clave: %% C = %% C!"
conjunto "%% O =! llave!"
)
GOTO: controlOptions

::-------------------------------------
: graphicOptions
CLS
Eco opciones gráficas:
echo)
Eco B - frontera... =! vinculado!
Eco E - espacio vacío. =! espacio!
Eco de H - serpiente cabeza... =! cabeza!
Eco S - cuerpo de la serpiente... =! cuerpo!
Eco F - comida... =! comida!
echo D - muerte... =! muerte!
echo)
Eco G - tasa de crecimiento. =! crecimiento!
echo)
Eco {Enter} - Rturn menú principal
echo)
llamar: pedir ">" B E H S F D G {Enter}
Si! clave! goto equ {Enter}: saveUserPrefs
Si /i! clave! () ecuación G
llamar: pedir "Pulse un dígito la tasa de crecimiento (0 = 10)" 0 1 2 3 4 5 6 7 8 9
Si! clave! EQU 0 conjunto "clave = 10"
conjunto "crecimiento =! llave!"
llamar al: loadHighScores
) () otro
conjunto "opción =-BBorder:bound:-EEmpty: espacio:-HSnake: cabezal:-SSnake cuerpo: cuerpo:-FFood:food:-DDeath:death:"
for /f "tokens = 1, 2 delims =:" condition en ("! opción: *-% clave % =!") hacer)
llamar: pedir "Presione una tecla para %% A"
para % en (0 1 2) hacer si "! llave!"equ"! no válido: ~ %% K, 1!" goto: graphicOptions
conjunto "%% B =! llave!"
)
)
GOTO: graphicOptions

::------------------------------------
: saveUserPrefs
(para % en (moveKeys arriba izquierda derecha espacio limitado alimento cuerpo cabeza muerte pausa crecimiento) echo %% V =! %% V!) > "% userPref"
salida/b

::-------------------------------------
: inicializar
CLS
Si define () repetición
Eco opciones de velocidad de reproducción:
) () otro
Eco opciones de velocidad:
)
demora de eco
echo # Descripción (segundos)
echo --- ----------- ---------
para /l % % en (1 1 6) no ()
conjunto "retardo = 0! retraso %% N!"
conjunto "desc =! desc %% N!"
echo % % desc: ~ 0, 11. 0.! retardo: ~ -2!
)
echo)
llamar: pedir "escoger una velocidad (1-6): «1 2 3 4 5 6
conjunto "dificultad =! desc % clave %!"
conjunto "retardo =! retraso % clave %!"
conjunto "diffCode = % clave %"
echo % clave % - % de dificultad
echo)
conjunto "eje = X"
conjunto "xDiff = + 1"
conjunto "yDiff = + 0"
conjunto "vacío ="
Set /a "PX = 1, PY = altura/2, FX = width / 2 + 1, FY = PY, score = 0, emptyCnt = 0, t1 =-1000000"
conjunto "casillas ="
establecer "m = 00"
establece "s = 00"
conjunto "snakeX = % PX"
conjunto "snakeY = % PY"
conjunto "snakeX = % snakeX: ~ -2%"
conjunto "snakeY = % snakeY: ~ -2%"
para /l % % en (0% de altura de 1%) no ()
conjunto "línea %% Y ="
para /l % % en (0,1, % de anchura) hacer ()
conjunto "celda ="
Si Condition 0 conjunto "célula = % dependiente"
Si Condition % altura % conjunto "célula = % dependiente"
Si Condition 0 conjunto "célula = % dependiente"
Si Condition % width % conjunto "célula = % dependiente"
Si Condition % PX si Condition % PY % conjunto "célula = cabeza %"
Si no define () celular
conjunto "célula = % de espacio"
establecer "eX = %% X"
conjunto "eY = %% Y"
conjunto "vacío =! vacía! #! eX: ~ -2 ¡ eY: ~ -2!"
Set /a emptyCnt += 1
)
Si Condition FX % si % % % FY % conjunto "célula = % de alimentos"
conjunto "línea %% Y =! línea %% Y!! celular!"
)
)
para % en (! configOptions!) establece "%% ASALVO =! %% A!"
conjunto "replayFinished ="
Si define () repetición
% sendCmd % replay
sendCmd %! reproducir!
llamar al: waitForSignal
conjunto "reproducir = (reproducir en! dificultad!)"
conjunto "leer = 1"
< & 9 ()
para /l % % en (1 1! configOptionCnt!) hacer si define () leer
Set /p "ln ="
Si "! ln!" equ "Final" (fijar lectura =) otro conjunto "! ln!"
)
)
conjunto "teclas ="
conjunto "Hola = 0"
for /f "delims =:" condition en (' findstr "^::" "% hiFile %! diffCode!. txt"2 ^ > nul') establece" Hola = %% A "
(% de drenaje)
llamar: retardo 100
) () otro
Si Hola % diffCode % (set "= Hola! hola % diffCode %!") otro conjunto "Hola = 0"
(% de drenaje)
> "! gameLog!" (
para % en (! configOptions!) hacer (echo %% A =! %% A!)
(echo final)
)
echo)
Si! moveKeys! () ecuación 4
Controles de eco:! hasta! = hasta! abajo! = abajo! izquierda! = left! derecho! = derecho! pausa! = pausa
) () otro
Controles de eco:! izquierda! = left! derecho! = derecho! pausa! = pausa
)
Eco Evite correr en ti mismo (! cuerpo! cuerpo!!!! cabeza! ^) o pared (! vinculado! ^)
Eco de comer alimentos (! comida! ^) para crecer.
echo)
llamar: pedir "Presione una tecla para iniciar..."
sendCmd % ir
)
conjunto "pauseTime = 0"
conjunto "xDiff! por! = + 0"
conjunto "xDiff! por! = + 0"
conjunto "xDiff! izquierda! =-1"
conjunto "xDiff! derecho! = + 1"
conjunto "yDiff! por! =-1"
conjunto "yDiff! por! = + 1"
conjunto "yDiff! izquierda. = + 0"
conjunto "yDiff! derecho! = + 0"
conjunto "! arriba! Eje = Y "
conjunto "! por! Eje = Y "
conjunto "! izquierda! Eje = X "
conjunto "! derecho! Eje = X "
conjunto "xTurn! izquierda! = 1"
conjunto "xTurn! derecho! =-1"
conjunto "yTurn! izquierda! =-1"
conjunto "yTurn! derecho! = 1"
conjunto "playerSpace =! espacio!!!! ¡ la comida!"
Set ^ "teclas ="! izquierda! " «! derecho!» «! pausa!» ^"
conjunto "newHi ="
conjunto "crecer = 0"
Si! moveKeys! conjunto equ 4 ^ "teclas =! las llaves! "! arriba!" «! abajo!» ^"
CLS
salida/b

::-------------------------------------
: waitForSignal
Si no existen "% señal" goto: waitForSignal
del "% de señal"
salida/b

::-------------------------------------
: loadHighScores
conjunto "saveAvailable ="
para /l % % en (1 1 6) no ()
conjunto "Hola %% N ="
for /f "delims =:" condition en (' findstr "^::" "% hiFile%%%N.txt" 2 ^ > nul') hacer ()
conjunto "Hola %% N = %% A"
conjunto "saveAvailable = S"
)
)
salida/b

::-------------------------------------
: fixLogs
setlocal enableDelayedExpansion
para % en (* .snake) hacer ()
ren "%% F" "%% F.txt"
llamar: fixLog "%% F.txt"
)
pushd "% SaveLoc"
for /f "delims =" condition en (' dir /b SnakeHi*.txt 2 ^ > nul') hacer ()
conjunto "archivo = %% ~ nF"
conjunto "archivo = Snake1Hi! file:~-1!. txt"
ren "%% F" "! archivo!"
llamar a: fixLog «! archivo! "
)
popd
salida/b

: ruta de fixLog
> "% ~ 1.new" ()
< "% ~ 1" ()
para % en (diffCode dificultad moveKeys arriba abajo izquierda derecha) no ()
Set /p "val ="
(echo %% A =! val!)
)
)
(eco de crecimiento = 1)
(echo final)
+ 7 más "% ~ 1"
)
mover /y "% ~ 1.new" "% ~ 1" > nul
salida/b

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: controlador
:: Detecta la pulsación de las teclas y envía la información al juego mediante un archivo llave.
:: El controlador tiene varios modos de entrada que son activados por comandos enviados
:: el juego mediante un archivo cmd.
::
:: Los modos:
::
:: no mantener - entrada, espere a que comando
::
:: ir - continuamente conseguir y enviar pulsaciones de teclas
::
:: mensaje - Send {purgada} marcador para permitir juego purgar el búfer de entrada, luego
:: obtener/enviar sólo presionar una tecla y mantenga
::
:: uno - Get/enviar una tecla oprimida
::
:: replay - copiar un registro de juego en el archivo de clave. La siguiente línea en el archivo cmd
:: especifica el nombre del archivo de registro para copiar. Durante la reproducción, el controlador
:: enviará una señal de interrupción al juego si se presiona una tecla.
::
:: dejar de fumar - salir inmediatamente del proceso de control
::
:: Como escrito incorrectamente informa de esta rutina! ««««como), pero eso no importa
:: ya no necesitamos esa clave. Tanto y tecla Enter se divulgan como {Enter}.
:: Un carácter adicional se agrega a la salida para preservar cualquier caracteres de control
:: cuando es leído por SET /P.

setlocal enableDelayedExpansion
for /f % % en (' copiar /Z "% ~ dpf0" nul ') set "CR = %% un"
conjunto "cmd = hold"
conjunto "inCmd ="
conjunto "clave ="
para /l %%. en () no)
Si "! cmd!" neq 'hold' ()
for /f "delims =" condition en (' xcopy/w "% ~ f0" "% ~ f0" 2 ^ > nul') hacer ()
Si no define sistema de la llave "key = %% A"
)
conjunto "clave =! clave: ~ -1!"
Si! clave! equ! CR! conjunto "clave = {Enter}"
)
< & 8 set /p "inCmd ="
Si define () inCmd
Si! inCmd! EQU dejar salir
conjunto "cmd =! inCmd!"
Si! inCmd! (replay) equ
< & 8 set /p "archivo ="
tipo "! archivo!" > & 9
copiar nul "% de señal"
)
conjunto "inCmd ="
)
Si define () clave
Si "! cmd!" equ "prompt" (echo {purgada}.)
Si "! cmd!" equ "reproducir" ()
copiar nul "% señal" > nul
(echo {purgada}.)
conjunto "cmd = go"
) else (echo(!key!.)
Si "! cmd!" neq "ir" set "cmd = hold"
conjunto "clave ="
) > & 9
)

Artículos Relacionados

Intel Edison - crear programa de Socket TCP usando GCC y Linux

Intel Edison - crear programa de Socket TCP usando GCC y Linux

¡Hola!Este instructable tiene un enfoque diferente de Intel Edison: en vez de usar recursos de red con el IDE de Arduino, aquí os muestro un camino para la apertura de un socket de servidor TCP en Intel Edison usando programación, cómo compilar con g
Crear programas de C++ en la PC de EEE

Crear programas de C++ en la PC de EEE

cómo crear, editar y ejecutar programas de C++ en el ASUS EEE PC.Por favor, recuerde dejar sólo una crítica constructiva.Paso 1: Aprender C++ Si conoces C++ entonces eres Bienvenido a omitir este paso...Si no entonces le sugiero que vaya a uno de est
Cómo crear programas en una calculadora gráfica

Cómo crear programas en una calculadora gráfica

(específicamente destinados a usuarios de la TI-84 Plus o TI-83 )¿Siempre deseo que podría tener un programa en tu calculadora para hacer largo dibujado a fórmulas para usted? Con este tutorial usted podrá a las fórmulas de programa en la calculadora
Crear una calculadora Visual Studio C#

Crear una calculadora Visual Studio C#

Esta Instrucable le guiará a través de la creación de una aplicación de calculadora básica en C# utilizando el software de desarrollo de Microsoft Visual Studo.  Visual Studio es una forma de desarrollo de software hecho por Microsoft para ayudar a l
¿Crear menú principal en Visual Basic

¿Crear menú principal en Visual Basic

que siempre quisiste crear tu propia interfaz personalizada como tipo de un menú principal para algo? Bien esto se puede lograr usando un práctico software llamado Visual Basic, en este programa usted puede crear programas que le permite hacer clic e
Programa de la fórmula cuadrática para TI-83, 84 calculadoras

Programa de la fórmula cuadrática para TI-83, 84 calculadoras

hacer la clase de matemáticas un poco más fácil para usted! Cuadráticos son útiles en el mundo real y ayudar a resolver muchos problemas, pero ¿por qué deben hacer problemas para usted cuando desea resolverlos? Bueno aqui mis amigos es una respuesta:
Empezar con Python

Empezar con Python

La programación es impresionante!Lo de creativo, su diversión y su da su cerebro un entrenamiento mental. Muchos de nosotros queremos conocer acerca de la programación pero convencernos que no podemos, tal vez su tiene demasiada matemáticas, tal vez
Para empezar con el ATMega328P

Para empezar con el ATMega328P

En el movimiento de Internet de las cosas , personas en todo el mundo conectan sus cosas – TV, mascotas, plantas de interior incluso - a internet y transmitir a todo tipo de datos.Si vas a ser parte de ese movimiento, o quieren incursionar en prototi
Zombie boca Magdalena

Zombie boca Magdalena

Para los amantes del género zombie: creación de un cupcake de boca realista zombie para Halloween, utilizando fondant y colorantes.Paso 1: Preparación: para colorear el fondantHacer un cupcake básico con el sabor elegido, (mina cupcake vainilla).Para
Cuerno de unicornio espiral InstaMorph

Cuerno de unicornio espiral InstaMorph

En este tutorial voy a mostrar cómo a un cuerno de unicornio-estilo whimsical, brillante que puede ser utilizado en una gran variedad de trajes de artesanía. Este proceso cuenta con InstaMorph, un termoplástico ligero que actúa como la arcilla cuando
Cómo empezar con el Freescale libertad KL25Z

Cómo empezar con el Freescale libertad KL25Z

Hola, hoy quiero intoduct a la Junta de libertad de Freescale con el procesador KL25Z. Es un desarrollo construido y selled por Freescale. Cuenta con un ARM® Cortex™-M0 +, trabajando en los 48Mhz.Características:48MhzFlash de 128KB16KB SRAMUSB OTGUn
Programación de AVR con Arduino, AVRdude y AVR-gcc

Programación de AVR con Arduino, AVRdude y AVR-gcc

AVR es un tipo común, de bajo costo de microcontrolador que puede parecer intimidante trabajar con, pero no se preocupe! Una vez que tengas las herramientas configurar y conocimientos básicos pueden llegar a ser no sólo útil, sino fundamental a las n
3D estampados de difusión reacción

3D estampados de difusión reacción

Me inspiro en la obra visual y escultórica de:Sistema nervioso: http://n-e-r-v-o-u-s.com/Karsten Schmidt: http://postspectacular.com/Jonathan McCabe: https://www.flickr.com/photos/jonathanmccabe/sets/Peter Jellitsch: http://www.peterjellitsch.comDani
Magdalena Blumcaw (intermitente, LED, ultrasonidos, motorizado, guac, Arduino, bruja) con piezas impresas 3d

Magdalena Blumcaw (intermitente, LED, ultrasonidos, motorizado, guac, Arduino, bruja) con piezas impresas 3d

Esta vieja bruja tiene una parpadeo la verruga en su nariz.  Si pisas demasiado cerca (según lo determinado por un transductor ultrasónico Ping), ella se cacarea a un saludo, hará girar su sombrero y sus ojos destellará siete colores.Blumcaw se puede