Snake programma maken (2 / 4 stap)

Stap 2: Vervolgens kopieert en plakt u deze Code op de Kladblok


uit
als "% ~ 1' =="startGame"goto: spel
als "% ~ 1' =="startController"goto: controller

::---------------------------------------------------------------------
:: enkele globale variabelen gebruikt door zowel het spel als de controller instellen

setlocal-disableDelayedExpansion
: getSession
als temp (set "tempFileBase=%temp%\") anders gedefinieerd als gedefinieerd instellen tmp "tempFileBase=%tmp%\"
instellen "tempFileBase = % tempFileBase % Snake % tijd:: = _ %"
instellen van de "keyFile=%tempFileBase%_key.txt"
instellen van de "cmdFile=%tempFileBase%_cmd.txt"
instellen van de "gameLock=%tempFileBase%_gameLock.txt"
instellen van de "gameLog=%tempFileBase%_gameLog.txt"
instellen van de "signal=%tempFileBase%_signal.txt"
instellen van de "saveLoc=%userprofile%\Snake"
instellen van de "userPref=%saveLoc%\SnakeUserPref.txt"
instellen "hiFile=%saveLoc%\Snake!growth! Hi"

::------------------------------------------
:: Deze spelsessie en lancering vergrendelen.
:: Loop terug en probeer een nieuwe sessie als mislukking.
:: Opruimen en afsluiten wanneer u klaar bent

Bel: 7 starten > "% gameLock %" || Ga naar: getSession
del "% tempFileBase % *"
Exit/b

::------------------------------------------
: start het spel en de controller

Bel: fixLogs
kopiëren van nul "keyFile %" > nul
kopiëren van nul "% cmdFile %" > nul
Start "" /b cmd /c ^ "" % ~ f0 "startController 9 ^ > ^ >"keyFile %"8 ^ <"% cmdFile %"2 ^ > nul ^ > nul ^"
cmd /c ^ "" % ~ f0 "startGame 9 ^ <"keyFile %"8 ^ > ^ >"% cmdFile %"^ echo ()

::--------------------------------------------------------------
:: Op afrit, wachten voor de controller te sluiten voordat hij terugkeert

: sluiten
2 > nul (>> "keyFile %" oproep) || goto: sluiten
zoniet bestaat "% ~ dp0CursorPos.exe" ()
de spelen van het spel van ECHO kan worden verbeterd door het installeren van
ECHO Aacini de CursorPos.exe, beschikbaar op
ECHO http://goo.gl/hr6Kkn
ECHO)
ECHO % cmdcmdline % |find /i "% ~ f0" > nul & & onderbreken
)
Exit/b 0

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: spel
title % ~ nx0
CLS

::---------------------------------------
:: Speelveld grootte
:: max speelveld: (width-2)*(height-2) < = 1365

instellen "breedte = 40" max = 99
instellen "hoogte = 25" max = 99

::----------------------------
:: resize het consolevenster

set /a cols = breedte + 1, lijnen = hoogte + 10, area=(width-2)*(height-2)
als % gebied % gtr 1365 ()
ECHO fout: speelveld gebied te groot
% sendCmd % stoppen
uitgang
)
Als % % lss 14 set lijnen lijnen = 14
Als % cols % lss 46 instellen cols = 46
mode con: cols = % cols % regels = regels %

::----------------------------
:: variabelen definiëren

instellen "configOptions = diffCode moeite groei moveKeys up neer links rechts"
Stel ' configOptionCnt = 9"

Stel ' moveKeys = 4"

instellen "omhoog = W"
instellen "omlaag = S"
instellen "links = A"
instellen "rechts = D"
instellen "onderbreken = P"

instellen "ruimte ="
instellen "gebonden = #"
instellen "voedsel = +"
instellen "hoofd =
instellen "lichaam = O"
instellen "dood = X"

instellen "groei = 1'

Als bestaan "% userPref %" for/f "usebackq delims =" % in ("% userPref %") Stel "%% V"

Stel ' spinner1 =-"
Stel ' spinner2 = \ "
Stel ' spinner3 = | "
Stel ' spinner4 = / "
instellen "spinner = spinner1 spinner2 spinner3 spinner4"

Stel ' delay1 = 20"
Stel ' delay2 = 15-inch
Stel ' delay3 = 10"
Stel ' delay4 = 7"
Stel ' delay5 = 5"
Stel ' delay6 = 3"

instellen "desc1 = Sluggard"
Stel ' desc2 = Crawl "
Stel ' desc3 = Slow "
Stel ' desc4 = Normal "
Stel ' desc5 = Fast "
Stel ' desc6 = Insane "

Stel ' spinnerDelay = 3"

/a "breedte-= 1, hoogte-= 1" instellen

:: LF definiëren als een teken voor regelinvoer (nieuwe regel)
Stel ^ "LF = ^

↑ "boven lege regel is verplicht - niet verwijderen

:: CR definiëren als een Carriage Return-teken
for /f % in (' /Z Kopieer "% ~ dpf0" nul ") Stel" CR = %% A "

:: BS definiëren als een teken van de BackSpace
for /f % in (' "prompt $H & voor % in (1) Ken rem" ') Stel "BS = %% A"

instellen "bovenste = 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"
instellen "ongeldige = * ~ ="

::---------------------------
:: definiëren van macro's

Als bestaan "% ~ dp0CursorPos.exe" ()
instellen "cls = CursorPos 0 0"
instellen "ClearLine = echo (& CursorPos 0 -1"
instellen "ClearPrev = CursorPos 0 - 0 & echo ("
) anders ()
instellen "cls cls ="
instellen "ClearLine ="
instellen "ClearPrev ="
)

:: definiëren een newline met voortzetting van de lijn
Stel ^ "\n=^^^%LF%%LF%^%LF%%LF%^^"

:: setErr
::: Wordt de waarde voor ERRORLEVEL ingesteld op 1
instellen van de "setErr=(call)"

:: clrErr
::: De waarde voor ERRORLEVEL ingesteld op 0
Stel ' clrErr = (call) "

:: sendCmd opdracht
::: een opdracht stuurt naar de controller
instellen "sendCmd = > & 8 echo"

:: getKey [ValidKey] [ValidKey...]
::: Controleren voor ToetsIndrukken (KeyPress) van de controller. Accepteren alleen een ValidKey.
::: Token scheidingstekens en poison tekens moeten worden genoteerd.
::: Accepteren een willekeurige toets als er geen ValidKey opgegeven.
::: Resultaat in sleutel variabele. Sleutel is niet gedefinieerd als geen geldig ToetsIndrukken (KeyPress).
set getKey=%\n%
voor %% # in (1-2) doen als %% # 2 (%\n% ==
set key=%\n%
set inKey=%\n%
set keyTest=%\n%
↑ < ^ & 9 instellen /p "inKey="%\n%
als gedefinieerd inKey (%\n%
set inKey=!inKey:~0,-1!%\ n %
voor % in (! args!) Stel /a keyTest = 1 ^ & als /i! inKey! EQU %% ~ C instellen key=!inKey!%\ n %
)%\n%
zoniet gedefinieerde keyTest instellen key=!inKey!%\ n %
) anders instellen args =

:: trekken
::: vestigt de Raad van bestuur
set draw=%\n%
set screen=%\n%
voor/l % in (0,1, % hoogte %) Stel scherm =! scherm!! lijn %% Y!! LF!%\ n %
instellen scherm =! scherm! Snelheid =! Moeilijkheid!! replay!! LF! Groeitempo op jaarbasis =! groei! HighScore =! Hallo! LF! Score =! score! Tijd =! m!:!s!%\ n %
Als replay gedefinieerd als niet gedefinieerd replayFinished (%\n%
instellen scherm =! scherm!! LF! LF! Druk op een toets om af te breken de replay%\n%
)%\n%
cls % ^ & echo(!screen!

:: test X Y ValueListVar
::: proeven als waarde op coördinaten X, Y binnen de inhoud van ValueListVar is
set test=%\n%
voor %% # in (1-2) doen als %% # 2 == (voor/f "tokens = 1-3" % in ("! args!") (%\n% doen
voor % in ("! lijn %% 2: ~ %% 1,1!") als "! %% 3: %% ~ A =!"neq"! %% 3!" % clrErr % anders %setErr%%\n%
)) anders instellen args =

:: plot X Y ValueVar
::: plaatst inhoud van ValueVar op de coördinaten X, Y
set plot=%\n%
voor %% # in (1-2) doen als %% # 2 == (voor/f "tokens = 1-3" % in ("! args!") (%\n% doen
"part2=!line%%2:~%%1!"%\ instellen n %
instellen "lijn %% 2 =! lijn %% 2: ~ 0, %% 1!! %%3!! Part2:~1!"%\ n %
)) anders instellen args =

::--------------------------------------
:: start het spel
setlocal-enableDelayedExpansion
Als dat niet het bestaan van "% saveLoc%\" md "% saveLoc %"
instellen "replay = Aborting... "
instellen "replayAvailable ="
Bel: loadHighScores
Bel: hoofdmenu

::--------------------------------------
:: hoofdlus (oneindige lus)
voor/l %%. Voer in ())

% === controleren en proces afbreken signaal als in de replay modus === %
Als replay gedefinieerd als "signaal %" (bestaan
del "signaal %"
Stel ' replayFinished = 1'
loting %
ECHO)
ClearLine %
Bel: purge
voor % in (! configOptions!) Stel "%% A =! %% Ergeen!"
Bel: hoofdmenu
)

% === berekenen tijd sinds laatste zet === %
for /f "tokens = 1-4-delims =:.," % in ("! tijd: = 0!") Stel /a "t2 = (((1 %% een * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% d-36610100, tDiff = t2-t1"
Als! tDiff! LSS 0 set /a tDiff += 24 * 60 * 60 * 100

Als! tDiff! GEQ! vertraging! (
% === vertraging is verlopen, dus tijd voor beweging === %
set /a t1 t2 =

% === berekenen speltijd === %
Als niet gedefinieerd gameStart reeks "gameStart =! t2!"
set /a "gameTime=(t2-gameStart)"
als! kort! LSS 0 set /a "kort += 24 * 60 * 60 * 100"
/a instellen "kort =(gameTime-pauseTime)/100, m = kort/60, s = kort %% 60"
Als! m! LSS 10 set "m = 0! m!"
als! s! LSS 10 set "s = 0! s!"

% === krijgen ToetsIndrukken (KeyPress) === %
getKey %! sleutels!
als /i! toets! EQU! onderbreken! (

% === Pauzeer spel === %
ECHO)
Bel: vragen "Onderbroken - druk op een toets om door te gaan..."
% ClearPrev %
% sendCmd % gaan
for /f "tokens = 1-4-delims =:.," % in ("! tijd: = 0!") Stel /a "t2 = (((1 %% een * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% d-36610100, tDiff = t2-t1"
Als! tDiff! LSS 0 set /a tDiff += 24 * 60 * 60 * 100
set /a pauseTime += tDiff

) anders ()

% === stellen richting === %
Als niet gedefinieerd replay (echo(!key!.) >> "! gameLog!"
voor % in (! sleutel!) doen als! moveKeys! EQU 2)
/a instellen "xDiff = xTurn %% K *! yDiff!, yDiff = yTurn %% K *! xDiff!"
) anders als "! %% KAxis!"neq"! as!" (
/a instellen "xDiff = xDiff %% K, yDiff = yDiff %% K"
instellen "as =! %% KAxis!"
)

% === wissen de staart === %
instellen "TX =! snakeX: ~ -2!"
instellen "TY =! snakeY: ~ -2!"
Stel ' snakeX =! snakeX: ~ 0, -2! "
instellen "snakeY =! snakeY: ~ 0, -2!"
perceel %! TX!! TY! ruimte

% === hoofd nieuwbouw berekenen en probeert te gaan === %
/a instellen "X = PX + xDiff, Y = PY + yDiff"
instellen "X =! X!"
instellen "Y =! Y!"
instellen "X =! X: ~ -2! "
instellen "Y =! Y: ~ -2! "
(% van de test! X!! Y! playerSpace) & & ()

% === Zet succesvolle === %

% === de nieuwe hoofd locatie verwijderen uit de lege lijst === %
voor % in ("! X!") doen voor % in ("! Y!") Stel "leeg =! leeg: #%% ~ X %% ~ Y =!"

% === eten geen voedsel die aanwezig kan zijn === %
(% van de test! X!! Y! voedsel) & & ()
% === initiëren groei === %
set /a groeien += groei

% === Zoek en tekenen van de nieuwe voedsel === %
Als replay (gedefinieerd
< & 9 instellen /p "F ="
) anders ()
/a instellen "F = (! willekeurige! %%(emptyCnt-1)) * 6 + 1"
(echo! F!) >> "! gameLog!"
)
voor % in (! F!) doen (perceel %! leeg: ~ %% F, 5! voedsel)
)

Als! groeien! GTR 0)
% === herstellen de staart === %
perceel %! TX!! TY! lichaam
Stel ' snakeX =! snakeX! TX!"
instellen "snakeY =! snakeY! TY!"
set /a emptyCnt-= 1

% === beheren score === %
set /a "score += 1, groeien-= 1"
Als geen replay gedefinieerd als! score! GTR! Hallo! /a instellen "Hallo += 1, newHi = 1'

) anders ()
% === betreffendedepositie van de voormalige staart toevoegen aan het lege lijst === %
instellen "leeg =! leeg! #! TX!! TY!"
)

% === tekent het nieuwe hoofd === %
als gedefinieerd snakeX (perceel %! PX!! PY! lichaam)
perceel %! X!! Y! hoofd

% === Toevoegen van de nieuwe hoofd positie aan de slang snaren === %
Stel ' snakeX =! X!! snakeX!"
instellen "snakeY =! Y!! snakeY!"
instellen "PX =! X!"
instellen "PY =! Y!"

loting %

) || (

% === mislukte move - spel over === %
Stel ' replayFinished = 1'
perceel %! TX!! TY! lichaam
Bel: spinner! PX!! PY! dood
loting %
Als newHi (gedefinieerd
ECHO)
ECHO nieuwe hoge Score - Gefeliciteerd ^ ^!
instellen "Hallo! diffCode! =! score!"
kopie "! gameLog!" "% hiFile! diffCode!. txt"> nul
>> "% hiFile! diffCode!. txt"echo::! score!
)
ECHO)
ClearLine %
Bel: vragen "Druk op een toets om door te gaan..."
voor % in (! configOptions!) Stel "%% A =! %% Ergeen!"
Bel: hoofdmenu
)
)
)
)

::-------------------------------------
: getString Prompt Var MaxLen
:: Prompt naar een string met max lengh van MaxLen.
:: De geldige sleutels en waarden zijn alpha-numeriek, ruimte, onderstrepingsteken en dash
:: Tekenreeks wordt afgesloten door een Enter
:: Backspace werkt om vorige teken te verwijderen
:: Resultaat wordt geretourneerd in de Var
/a instellen "maxLen = %3"
instellen "%2 ="
% sendCmd % prompt
Bel: purge
: getStringLoop
(getKey %! bovenste! 0 1 2 3 4 5 6 7 8 9 "" _ - {Enter}! BS!)
Als belangrijkste (gedefinieerd
Als! toets! EQU {Enter})
ECHO)
Exit/b
)
Als! toets! neq! BS! Als! maxLen! GTR 0)
set /a maxLen-= 1
instellen "%2 =! %2!! sleutel!
)
Als! toets! EQU! BS! Als %2 (gedefinieerd
/a maxLen += 1 instellen
instellen "%2 =! %2: ~ 0, -1!"
)
)
als gedefinieerd inKey % sendCmd % een
Ga naar: getStringLoop

::-------------------------------------
: vraag Prompt ValidKey [Validkey]...
:: Prompt voor een ToetsIndrukken (KeyPress).
:: Wacht totdat een ValidKey wordt ingedrukt en resultaat in sleutel variabele.
:: Scheidingstekens, token), en GIF tekens moeten worden vermeld.
% sendCmd % prompt
(set validKeys = % *)
(stel validKeys =! validKeys:% 1 =!)
Bel: purge
: getResponse
(getKey %! validKeys!)
Als belangrijkste (niet is gedefinieerd
als gedefinieerd inKey % sendCmd % een
goto: getResponse
)
Exit/b

: wissen
instellen "inKey ="
voor/l % in (1-1-1000) doen ()
instellen van /p "inKey ="
als "! inKey!" equ "{gereinigd}." afsluiten/b
) < & 9
goto: purge

::-------------------------------------
: spinner X Y ValueVar
set /a d1 =-1000000
voor/l % in (1-1-5) doen voor % in (% spinner %) doen ()
Bel: spinnerDelay
% perceel %%2%
loting %
)
Bel: spinnerDelay
(% perceel %%2% 3)
Exit/b

::-------------------------------------
: vertraging centiSeconds
setlocal
for /f "tokens = 1-4-delims =:.," % in ("! tijd: = 0!") Stel /a "spinnerDelay = %1, d1 = (((1 %% een * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% d-36610100"
:: vallen door naar: spinnerDelay

::-------------------------------------
: spinnerDelay
for /f "tokens = 1-4-delims =:.," % in ("! tijd: = 0!") Stel /a "d2 = (((1 %% een * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% d-36610100, dDiff = d2-d1"
Als % dDiff % lss 0 ingesteld /a dDiff += 24 * 60 * 60 * 100
Als % dDiff % lss % spinnerDelay % goto: spinnerDelay
set /a d1 = d2
Exit/b

::-------------------------------------
: hoofdmenu
CLS
instellen "loadAvailable ="
ECHO groeitempo op jaarbasis =! groei!
ECHO)
ECHO Main Menu:
ECHO)
ECHO N - nieuw spel
als gedefinieerd replayAvailable echo R - Replay vorige wedstrijd
als gedefinieerd saveAvailable echo S - sparen een spel
Als bestaan *. snake.txt echo L - Load en horloge een opgeslagen spel & instellen "loadAvailable = L"

ECHO C - beheeropties
ECHO G - grafische opties
ECHO Q - Quit
ECHO)
instellen "hiAvailable ="
voor/l % in (1-1-6) doen als gedefinieerd Hallo %% () N
Als niet gedefinieerd () hiAvailable
ECHO Replay hoge Score:
ECHO)
)
instellen "desc =! desc %% N!..."
Stel ' hiAvailable =! hiAvailable! %% N "
ECHO %! desc: ~ 0, 8!! Hallo %% N!
)
als gedefinieerd (echo) hiAvailable
instellen "sleutels = N C G Q! hiAvailable!! replayAvailable!! saveAvailable!! loadAvailable!"
Bel: vragen ">"! sleutels!
als /i! toets! EQU Q)
% sendCmd % stoppen
CLS
uitgang
)
als /i! toets! EQU N)
instellen "replay ="
Stel ' replayAvailable = R "
Stel ' saveAvailable = S "
goto: initialiseren
)
als /i! toets! EQU S)
Als replayAvailable (gedefinieerd
Bel: vragen "HighScore # of P voor de vorige:"! hiAvailable! P
) anders ()
Bel: vragen "HighScore #:"! hiAvailable!
)
ECHO! toets!
als /i! toets! EQU P (instellen "src =! gameLog!") anders "src = % hiFile %! sleutel!. txt"
Bel: getString "opslaan de bestandsnaam:" bestand 20
kopie "! src!" "! bestand!. Snake.txt"
Bel: vragen "Druk op een toets om door te gaan..."
)
als /i! toets! EQU L)
Bel: getString "Load bestandsnaam:" bestand 20
Als bestaan "! bestand!. Snake.txt")
instellen "replay =! bestand!. Snake.txt"
goto: initialiseren
)
ECHO fout: bestand "! bestand!. Snake.txt"niet gevonden
Bel: vragen "Druk op een toets om door te gaan..."
)
als /i! toets! EQU R)
instellen "replay =! gameLog!"
goto: initialiseren
)
Als! toets! GEQ 1 indien! toets! Leq 6)
instellen "replay = % hiFile %! sleutel!. txt"
goto: initialiseren
)
als /i! toets! EQU C oproep: controlOptions
als /i! toets! EQU G oproep: graphicOptions
Ga naar: hoofdmenu

::-------------------------------------
: controlOptions
CLS
instellen "sleutels = {Enter} T L R P"
Als! moveKeys! EQU 4 set "sleutels =! sleutels! U 'D'
echo controle opties:
ECHO)
echo van T - Type... =! moveKeys! toetsen
ECHO)
ECHO... links L - =! links!
ECHO R - recht... =! juiste!
Als! moveKeys! EQU 4 echo U - Up... =! omhoog!
Als! moveKeys! EQU 4 echo D - Down... =! neer!
ECHO)
ECHO P - pauze... =! onderbreken!
ECHO)
ECHO {Enter} - terugkeren naar het hoofdmenu
ECHO)
Bel: vragen ">"! sleutels!
Als! toets! EQU {Enter} goto: saveUserPrefs
als /i! toets! EQU T)
Als! moveKeys! EQU 2 (instellen "moveKeys = 4") anders "moveKeys = 2"
Ga naar: controlOptions
)
instellen "optie = LLeft RRight UUp DDown PPause"
for /f % in ("! optie: * belangrijke % =!") doen ()
Bel: vragen "druk op een toets voor %% O:"
voor % in (0 1 2) doen als "! sleutel!"equ"! ongeldig: ~ %% K, 1!" goto: controlOptions
voor % in (! bovenste!) Stel "sleutel =! sleutel: %% C = %% C!"
instellen "%% O =! sleutel!"
)
Ga naar: controlOptions

::-------------------------------------
: graphicOptions
CLS
ECHO grafische opties:
ECHO)
ECHO B - grens... =! gebonden!
ECHO E - lege ruimte. =! ruimte!
echo van H - slang hoofd... =! hoofd!
ECHO S - Snake lichaam... =! lichaam!
ECHO F - Food... =! voedsel!
ECHO D - dood... =! dood!
ECHO)
ECHO G - groeitempo op jaarbasis. =! groei!
ECHO)
ECHO {Enter} - Rturn naar het hoofdmenu
ECHO)
Bel: vragen ">" B E H S F D G {Enter}
Als! toets! EQU {Enter} goto: saveUserPrefs
als /i! toets! EQU G)
Bel: vragen 'Druk op een cijfer voor groei (0 = 10)' 0 1 2 3 4 5 6 7 8 9
Als! toets! EQU 0 set "sleutel = 10"
instellen "groei =! sleutel!"
Bel: loadHighScores
) anders ()
instellen "optie =-BBorder:bound:-EEmpty ruimte: ruimte:-HSnake kop: kop:-SSnake Body: body:-FFood:food:-DDeath:death:"
for /f "tokens = 1, 2 delims =:" % in ("! optie: *-sleutel % =!") doen)
Bel: vragen "druk op een toets voor %% A"
voor % in (0 1 2) doen als "! sleutel!"equ"! ongeldig: ~ %% K, 1!" goto: graphicOptions
instellen "%% B =! sleutel!"
)
)
Ga naar: graphicOptions

::------------------------------------
: saveUserPrefs
(voor % in (moveKeys op neer links rechts ruimte gebonden voedsel hoofd lichaam dood pauze groei) echo %% V =! %% V!) > "% userPref %"
Exit/b

::-------------------------------------
: initialiseren
CLS
Als replay (gedefinieerd
ECHO Replay snelheid opties:
) anders ()
ECHO snelheid opties:
)
ECHO, vertraging
ECHO # beschrijving (seconden)
echo --- ----------- ---------
voor/l % in (1-1-6) doen ()
instellen "vertraging = 0! vertraging %% N!"
instellen "desc =! desc %% N!"
ECHO % desc: ~ 0, 11! 0.! vertraging: ~ -2!
)
ECHO)
Bel: vragen "Kies een snelheid (1-6):" 1 2 3 4 5 6
instellen "moeilijkheidsgraad =! desc belangrijke %!"
instellen "vertraging =! vertraging belangrijke %!"
Stel ' diffCode = belangrijkste % "
ECHO belangrijke % - moeilijkheid %
ECHO)
instellen "as = X"
Stel ' xDiff = + 1 "
Stel ' yDiff = + 0"
instellen "leeg ="
/a instellen "PX = 1, PY = hoogte/2, FX = breedte / 2 + 1, FY = PY, score = 0, emptyCnt = 0, t1 =-1000000"
instellen "gameStart ="
instellen "m = 00"
instellen "s = 00"
instellen "snakeX = % PX"
instellen "snakeY PY % ="
instellen "snakeX = % snakeX: ~ -2%"
instellen "snakeY = % snakeY: ~ -2%"
voor/l % in (0 1% hoogte %) doen ()
instellen "lijn %% Y ="
voor/l % in (0,1, % breedte %) doen ()
instellen "cel ="
als % 0 set "cel afhankelijke % ="
als % % hoogte % set "cel afhankelijke % ="
als % 0 set "cel afhankelijke % ="
als % % breedte % set "cel afhankelijke % ="
Als % procent PX als % % PY % set "cel = hoofd %"
Als cel (niet is gedefinieerd
instellen "cel = % van de ruimte"
instellen "eX = %% X"
instellen "eY = %% Y"
instellen "leeg =! leeg! #! eX: ~ -2!! eY: ~ -2!"
/a emptyCnt += 1 instellen
)
Als % procent FX als % % FY % set "cel = voedsel %"
instellen "lijn %% Y =! lijn %% Y!! cel!"
)
)
voor % in (! configOptions!) Stel "%% Ergeen =! %% A!"
instellen "replayFinished ="
Als replay (gedefinieerd
% sendCmd % replay
% sendCmd %! replay!
Bel: waitForSignal
instellen "replay = (REPLAY op! moeite!)"
instellen "lezen = 1'
< & 9 ()
voor/l % in (1-1! configOptionCnt!) doen als gedefinieerd Lees ()
instellen van /p "ln ="
als "! ln!" equ "END" (Lees instellen =) anders "! ln!"
)
)
instellen "sleutels ="
instellen "Hallo = 0"
for /f "delims =:" % in (' findstr "^::" "% hiFile! diffCode!. txt"2 ^ > nul') Stel" Hallo = %% A "
(loting %)
Bel: vertraging van 100
) anders ()
als gedefinieerd Hallo % diffCode % (instellen "Hallo =! Hallo % diffCode %!") anders instellen "Hallo = 0"
(loting %)
> "! gameLog!" (
voor % in (! configOptions!) doen (echo %% A =! %% A!)
(echo einde)
)
ECHO)
Als! moveKeys! EQU 4)
ECHO besturingselementen:! omhoog! = up! neer! = omlaag! linker! = left! juiste! = rechts! onderbreken! = pauze
) anders ()
ECHO besturingselementen:! linker! = left! juiste! = rechts! onderbreken! = pauze
)
ECHO vermijden jezelf tegenkomen (! lichaam!! lichaam!! hoofd! ^) of de muur (! gebonden! ^)
Eet voedsel echo (! voedsel! ^) om te groeien.
ECHO)
Bel: vragen "Druk op een toets om te beginnen..."
% sendCmd % gaan
)
Stel ' pauseTime = 0'
instellen "xDiff! omhoog! = + 0"
instellen "xDiff! neer! = + 0"
instellen "xDiff! linker! =-1"
instellen "xDiff! juiste! = + 1"
instellen "yDiff! omhoog! =-1"
instellen "yDiff! neer! = + 1"
instellen "yDiff! linker! = + 0"
instellen "yDiff! juiste! = + 0"
instellen "! omhoog! As = Y "
instellen "! neer! As = Y "
instellen "! links! As = X "
instellen "! juiste! As = X "
instellen "xTurn! linker! = 1'
instellen "xTurn! juiste! =-1"
instellen "yTurn! linker! =-1"
instellen "yTurn! juiste! = 1'
Stel ' playerSpace =! ruimte!! eten!"
Stel ^ "sleutels ="! links! " "! goed!" "! onderbreken!" ^"
instellen "newHi ="
instellen "groeien = 0"
Als! moveKeys! EQU 4 set ^ "sleutels =! sleutels! "! up!" "! neer!" ^"
CLS
Exit/b

::-------------------------------------
: waitForSignal
zoniet bestaat "signaal %" goto: waitForSignal
del "signaal %"
Exit/b

::-------------------------------------
: loadHighScores
instellen "saveAvailable ="
voor/l % in (1-1-6) doen ()
instellen "Hallo %% N ="
for /f "delims =:" % in (' findstr "^::" "% hiFile%%%N.txt" 2 ^ > nul') doen ()
instellen "Hallo %% N = %% A"
Stel ' saveAvailable = S "
)
)
Exit/b

::-------------------------------------
: fixLogs
setlocal-enableDelayedExpansion
voor % in (* .snake) doen ()
ren "%% F" "%% F.txt"
Bel: fixLog "%% F.txt"
)
pushd "% SaveLoc %"
for /f "delims =" % in (' dir/b SnakeHi*.txt 2 ^ > nul') doen ()
instellen "bestand = %% ~ nF"
instellen "bestand = Snake1Hi! file:~-1!. txt"
ren "%% F" "! bestand!"
Bel: fixLog "! bestand!"
)
popd
Exit/b

: fixLog filePath
> "% ~ 1.new" ()
< "% ~ 1" ()
voor % in (diffCode moeite moveKeys omhoog omlaag links rechts) doen ()
instellen van /p "val ="
(echo %% A =! val!)
)
)
(groei echo = 1)
(echo einde)
meer HALSLENGTE + 7 "% ~ 1'
)
move /y "% ~ 1.new" "% ~ 1' > nul
Exit/b

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: controller
:: Detecteert toetsaanslagen en stuurt de gegevens naar het spel via een sleutelbestand.
:: De controller heeft verschillende soorten input die worden geactiveerd door opdrachten verzonden
:: uit het spel via een cmd-bestand.
::
:: Modi:
::
:: hold - geen input, wacht opdracht
::
:: Ga - voortdurend krijgen/verzenden toetsaanslagen
::
:: prompt - verzenden {gereinigd} marker om spel te zuiveren invoerbuffer, vervolgens
:: get/Verstuur een enkele toets drukt en houd
::
:: one - Get/Verstuur een enkele toets ingedrukt
::
:: replay - Kopieer een spel logboek naar het sleutelbestand. De volgende regel in cmd-bestand
:: naam van logboekbestand om te kopiëren. Tijdens de replay, de controller
:: een signaal afbreken het spel als een toets wordt ingedrukt.
::
:: stoppen - sluit onmiddellijk het proces controller
::
:: Zoals geschreven, deze routine wordt ten onrechte gemeld! zo), maar dat maakt niet uit
:: omdat we geen aan die sleutel behoefte. Zowel en Enter-toets worden gerapporteerd als {Enter}.
:: Een extra karakter is toegevoegd aan de uitvoer te bewaren van elke controle tekens
:: wanneer gelezen door instellen/p.

setlocal-enableDelayedExpansion
for /f % in (' /Z Kopieer "% ~ dpf0" nul ") Stel" CR = %% een "
instellen "cmd = houden"
instellen "inCmd ="
instellen "sleutel ="
voor/l %%. Voer in ())
als "! cmd!" neq "hold" ()
for /f "delims =" % in (' xcopy /w "% ~ f0" "% ~ f0" 2 ^ > nul') doen ()
Als niet gedefinieerd sleutelset "sleutel = %% A"
)
instellen "sleutel =! sleutel: ~ -1!"
Als! toets! EQU! CR! instellen "sleutel = {Geef}"
)
< & 8 ingesteld /p "inCmd ="
Als inCmd (gedefinieerd
Als! inCmd! EQU afgesloten afrit
instellen "cmd =! inCmd!"
Als! inCmd! EQU replay)
< & 8 ingesteld /p "bestand ="
type "! bestand!" > & 9
kopiëren van nul "signaal %"
)
instellen "inCmd ="
)
Als belangrijkste (gedefinieerd
als "! cmd!" equ "prompt" (echo {gereinigd}.)
als "! cmd!" equ "replay" ()
kopiëren van nul "signaal %" > nul
(echo {gereinigd}.)
instellen "cmd = ga"
) anders (echo(!key!.)
als "! cmd!" neq "go" set "cmd = houden"
instellen "sleutel ="
) > & 9
)

Gerelateerde Artikelen

Maken van een eenvoudige vertraging in uw VB Visual Basics-programma

Maken van een eenvoudige vertraging in uw VB Visual Basics-programma

In deze video ik laten zien hoe je een kleine vertraging binnen uw vb-programma maken, dit kan handig zijn bij het programmeren met micro controllers of naar ruimte uit wanneer uw functies plaatsvinden. Er zijn vele toepassingen voor dit en dit kan v
Bouwen van een programma voor STM32 MCU onder Linux

Bouwen van een programma voor STM32 MCU onder Linux

De STM32Fx en de STM32Lx zijn MCU's gebaseerd op ARM architectuur. Is de beschikbare gcc compiler onder GNU/Linux voor het bouwen van programma's. De gcc-compiler bevat veel instellingen en vlaggen, dus het is niet zo gemakkelijk bouwen middelgrote p
Programmering met Java using troepenleiding Prompt

Programmering met Java using troepenleiding Prompt

Dit instructable leert u hoe te:1. Installeer de Java Development Kit.2. instellen van systeemvariabelen gemakkelijk om te kunnen compileren en uitvoeren van java-bestanden.3. compileren en uitvoeren van een Java-bestand vanuit troepenleiding Prompt.
Lens flare filter maken met 3D gedrukt delen!

Lens flare filter maken met 3D gedrukt delen!

Halloin dit project wil ik je laten zien hoe u zelf een "Lens-Flare-Filter" voor uw DSLR of Digitalcamera kunt bouwen! Met het filter kunt u gemakkelijk een cinnematic blik op uw foto's en video's, wthout besteden veel geld aan dure programma's!
Begin Microcontrollers deel 6: Het schrijven van de eerste programma voor zwenking op een LED

Begin Microcontrollers deel 6: Het schrijven van de eerste programma voor zwenking op een LED

Ik weet dat u bent klaar om te schrijven van het eerste programma. Je hebt meegemaakt veel tot nu toe! Terwijl we op het onderwerp, recapituleer de gebeurtenissen. U ging naar buiten en gekocht van de Atmel AVR Microcontroller van uw keuze. TheATMega
Paracord sleutelhanger (Snake knoop)

Paracord sleutelhanger (Snake knoop)

Stap 1: materialen ·2 1/2 voeten paracord of een vergelijkbare reeks· sleutel/sleutels·nut, wasmachine of een ander object met een diameter van ten minste 2 hole milimeters·Scissors·LighterStap 2: start Een einde nemen en hem door het gat van de sleu
DIY LED Bar

DIY LED Bar

Doel en beschrijving:Het doel van dit project was te verbeteren van Richard's aquarium. Hij is van plan om een nieuwe vis aquarium en wil een mooi licht ontwerp in het aquarium. Het project bestaat uit een vak waarin 3D afgedrukt waardoor het een gla
Niveau audiosignaal Grapher

Niveau audiosignaal Grapher

Please vote voor me in de wedstrijd van de sensoren als u vinden dit instructable cool, nuttig, of iets tussenin!In dit instructable, ik zal u tonen hoe te converteren van een audio signaal van elke muziek apparaat aan een grafiek van de audio niveau
Omzetten in een TV-B-Gone een super camera remote!

Omzetten in een TV-B-Gone een super camera remote!

Intro: mijn Nikon DSLR heeft een infrarood afstandsbediening functie (extern wordt apart verkocht), dat is echt handig, maar vrij beperkt in bereik. Een tijdje geleden kocht ik een TV-B-Gone Kit van zijn uitvinder Mitch Altman, en het kan de TV uit t
Raket drijfgas karakterisering, C++ Excel automatisering, Boost eigenschap boomstructuur en de TC-Logger

Raket drijfgas karakterisering, C++ Excel automatisering, Boost eigenschap boomstructuur en de TC-Logger

Ja, alles in één Instructable... Soort van. Die betrekking hebben op de wetenschap en de processen achter drijfgas karakterisering van de raket zou nemen meer dan één Instructable. En misschien in de toekomst ik zal vrijgeven van een paar meer Instru
Child's Robot kostuum met geluidseffecten, Candy Detector en meer

Child's Robot kostuum met geluidseffecten, Candy Detector en meer

ik maakte mijn dochter deze robot kostuum voor halloween. Ik was geïnspireerd door Dit Kid Robot kostuum. Ik nam mij een beetje in een andere richting en toegevoegd een paar meer nieuwigheden zoals lichten in de antennes en oren, een grote knop pad m
Maag shot - Halloween kostuum 2014

Maag shot - Halloween kostuum 2014

Heb je ooit gevoeld als je had vlinders in je buik? Laatste Halloween 2014 dag ik voelde op die manier...Zoals een Walking dead fan wilde ik doen een aangepaste gelijk is aan de serie.Ik liep rond de stad, proberen niet te vinden van een zombie. Plot
3D printen Basics

3D printen Basics

Een 3D-Printer is een productie-instrument gebruikt voor het maken van driedimensionale artefacten die zijn ontworpen op een computer. 3D printers hebben een breed scala aan vormen, maten en typen, maar in wezen zijn ze alle computergestuurde additie
Vinyl Logo toevoegen aan grote trom

Vinyl Logo toevoegen aan grote trom

Ik besteed veel tijd aan het zoeken naar goedkope manieren om een logo toevoegen aan mijn grote trom. Ik vond een goedkope manier met zelfklevend vinyl. Ik ben monteren van wat ik geleerd en mijn methode hier, in één plaats, om te helpen de volgende