Créer programme serpent (2 / 4 étapes)

Étape 2: Puis copiez et collez ce Code sur le bloc-notes

off
Si "% ~ 1" == « startGame » goto : jeu
Si "% ~ 1" == « startController » goto : contrôleur

::---------------------------------------------------------------------
:: quelques variables globales utilisées par le jeu et le contrôleur d’installation

setlocal disableDelayedExpansion
: getSession
Si définie temp (set "tempFileBase=%temp%\") else si tmp définie « tempFileBase=%tmp%\ »
la valeur "tempFileBase = % tempFileBase % serpent % temps:: = _ %"
la valeur « keyFile=%tempFileBase%_key.txt »
la valeur « cmdFile=%tempFileBase%_cmd.txt »
la valeur « gameLock=%tempFileBase%_gameLock.txt »
la valeur « gameLog=%tempFileBase%_gameLog.txt »
la valeur « signal=%tempFileBase%_signal.txt »
la valeur « saveLoc=%userprofile%\Snake »
la valeur « userPref=%saveLoc%\SnakeUserPref.txt »
Définissez "hiFile=%saveLoc%\Snake!growth ! Salut"

::------------------------------------------
:: Verrouiller cette session de jeu et de lancement.
:: Loop back et essayer une nouvelle session si échec.
:: Nettoyage et sortie lorsque vous avez terminé

appeler : lancer 7 > « % gameLock » || Goto : getSession
del « % tempFileBase % * »
sortie/b

::------------------------------------------
: lancer le jeu et le contrôleur

composez le : fixLogs
Copiez nul « keyFile % » > nul
Copiez nul « cmdFile % » > nul
Démarrer "" /b cmd /c ^ "" % ~ f0 « startController 9 ^ > ^ > "keyFile %" 8 ^ < "cmdFile %" 2 ^ > nul ^ > nul ^ "
cmd /c ^ "" % ~ f0 » startGame 9 ^ < « keyFile % » 8 ^ > ^ > « cmdFile % » ^ écho ()

::--------------------------------------------------------------
:: Leur sortie, attendez que le contrôleur de fermer avant de retourner

: à proximité
2 > nul (>> « keyFile % » appel) || Goto: à proximité
dans le cas contraire les existent "% ~ dp0CursorPos.exe » ()
jeu d’écho peut être améliorée en installant
CursorPos.exe de Aacini, disponible à l’écho
echo http://goo.gl/hr6Kkn
ECHO)
echo % sa % |gestion/i « % ~ f0 "> nul & & pause
)
sortie/b 0

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: jeu
titre % ~ nx0
CLS

::---------------------------------------
:: Taille Playfield
:: max terrain de jeu: (width-2)*(height-2) < = 1365

la valeur "largeur = 40" max = 99
la valeur "hauteur = 25" max = 99

::----------------------------
:: redimensionner la fenêtre de la console

Set /a cols = largeur + 1, lignes = hauteur + 10, area=(width-2)*(height-2)
Si % zone % gtr 1365 (
echo ERROR : zone de terrain trop grand
sendCmd % quit
sortie
)
Si % canalisations % lss 14 lignes fixes = 14
Si % cols % lss 46 set cols = 46
con de mode : cols = % cols % lines = lignes %

::----------------------------
:: définir des variables

la valeur "configOptions = diffCode mal moveKeys de la croissance vers le haut bas gauche droite"
la valeur "configOptionCnt = 9"

la valeur "moveKeys = 4"

la valeur "haut = W"
la valeur "bas = S"
la valeur « gauche = A »
la valeur « droite = D »
la valeur "pause = P"

la valeur "espace ="
la valeur "lié = # »
la valeur "nourriture = +"
la valeur "tête =
la valeur "corps = O"
la valeur "mort = X"

la valeur "croissance = 1"

Si existent « % userPref » for /f "usebackq delims =" %% dans ("userPref %"), définissez "%% V"

la valeur "spinner1 =-»
la valeur "spinner2 = \"
la valeur "spinner3 = |"
la valeur "spinner4 = /"
la valeur « fileur = spinner1 spinner2 spinner3 spinner4 "

la valeur "delay1 = 20"
la valeur "delay2 = 15"
la valeur "delay3 = 10"
la valeur "delay4 = 7"
la valeur "delay5 = 5"
la valeur "tarder6 = 3"

la valeur "desc1 = paresseux"
la valeur "desc2 = Crawl"
la valeur "desc3 = lente"
la valeur "desc4 = Normal"
la valeur "desc5 = rapide"
la valeur "desc6 = Insane"

la valeur "spinnerDelay = 3"

Set /a « largeur-= 1, hauteur-= 1 »

:: définir LF comme un caractère de saut de ligne (saut de ligne)
la valeur ^ « LF = ^

^ "Vider avant ligne est obligatoire - ne pas enlever

:: définir CR comme un caractère de retour chariot
for /f %%d dans (' copier/z "% ~ dpf0" nul ") définissez" CR = %% A "

:: définir BS comme un caractère de retour arrière
for /f %% dans (' "invite $H & pour %%d réel (1) ne" ') définissez "BS = %% A"

la valeur "supérieur = 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"
la valeur "non valide = * ~ ="

::---------------------------
:: définir des macros

Si existent « % ~ dp0CursorPos.exe » ()
la valeur "cls = CursorPos 0 0"
la valeur "ClearLine = echo (& CursorPos 0 -1"
la valeur "ClearPrev = CursorPos 0 - 0 & echo ("
) () autre
la valeur "cls = cls"
la valeur "ClearLine ="
la valeur "ClearPrev ="
)

:: définir un saut de ligne avec continuation de ligne
la valeur ^ « \n=^^^%LF%%LF%^%LF%%LF%^^ »

:: setErr
::: Attribue l’ERRORLEVEL 1
la valeur « setErr=(call) »

:: clrErr
::: Affecte l’ERRORLEVEL 0
la valeur "clrErr = (appel)"

:: commande sendCmd
::: envoie une commande au contrôleur
la valeur "sendCmd = > & 8 echo"

:: getKey [ValidKey] [ValidKey...]
::: Vérifier keypress du contrôleur. Seulement accepter une ValidKey.
::: Jeton délimiteurs et poison caractères doivent être placés entre guillemets.
::: Accepter n’importe quelle touche si aucun ValidKey ne spécifié.
::: Retourner le résultat dans la variable clé. Key n’est pas défini si aucun keypress valide.
Set getKey=%\n%
pour %% # (1-2) faire si %% #== 2 (%\n%
set key=%\n%
Set inKey=%\n%
Set keyTest=%\n%
^ < ^ & 9 set/p "inKey="%\n%
Si défini inKey (%\n%
Set inKey=!inKey:~0,-1!%\ n %
pour %% dans (! args!) définissez /a keyTest = 1 ^ & si/i! inKey! EQU %% ~ C set key=!inKey!%\ n %
)%\n%
Si ce n’est pas définie keyTest définie key=!inKey!%\ n %
) d’autre set args =

:: dessiner
::: dessine le Conseil
Set draw=%\n%
Set screen=%\n%
pour/l %% dans (0,1, hauteur %) Fixez-vous écran =! écran!! ligne %% Y!! LF!%\ n %
réglage écran =! écran! Vitesse = ! Difficulté!! rejouer!! LF ! Taux de croissance =! croissance! Meilleur score =! Salut! LF ! Score =! score! Temps =! m!:!s!%\ n %
Si défini replay sinon définie replayFinished (%\n%
réglage écran =! écran!! LF ! LF ! Appuyez sur une touche pour annuler le replay%\n%
)%\n%
cls % ^ & echo(!screen!

:: tester X Y ValueListVar
::: teste si la valeur au point de coordonnées X, Y se trouve dans le contenu de ValueListVar
Set test=%\n%
pour %% # (1-2) faire si %% #== 2 (for /f "jetons = 1-3" %% dans («! args! ") (%\n%
pour %%d dans («! ligne %% 2: ~ %% 1,1! ") faire si"! %% 3: %% ~ A =! « QNE »! %% 3! "% clrErr % %setErr%%\n% d’autre
)) else set args =

:: terrain X Y ValueVar
::: place le contenu de ValueVar au point de coordonnées X, Y
Set plot=%\n%
pour %% # (1-2) faire si %% #== 2 (for /f "jetons = 1-3" %% dans («! args! ") (%\n%
Set part2=!line%%2:~%%1!"%\" n %
la valeur "ligne %% 2 =! ligne %% 2: ~ 0, %% 1!! %%3!! part2:~1!"%\ n %
)) else set args =

::--------------------------------------
:: démarrer le jeu
setlocal enableDelayedExpansion
dans le cas contraire les existent « % saveLoc%\ » md « % saveLoc »
la valeur "rejouer = interrompons... "
la valeur "replayAvailable ="
composez le : loadHighScores
appeler : mainMenu

::--------------------------------------
:: la boucle principale (boucle infinie)
pour/l %%. dans () do)

% === vérifier et processus interrompre le signal en mode replay === %
Si défini replay si existent () « % de signal »
del « signal % »
la valeur "replayFinished = 1"
tirage au sort %
ECHO)
ClearLine %
appeler : purge
pour %% dans (! configOptions!) définissez "%% A =! %% ASave!"
appeler : mainMenu
)

% === calculer temps depuis le dernier coup === %
for /f "jetons = 1-4 delims =:.," %% dans («! temps: = 0! ") Définissez /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! retard! (
% === délai a expiré, donc le temps pour le mouvement === %
Set /a t1 = t2

% === calculer les temps de jeu === %
Si non défini ensemble de départ "départ =! 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 ensemble "m = 0! m!"
Si! s! LSS 10 ensemble "s = 0! s! »

% === obtenir keypress === %
getKey %! clés!
si/i! clé! EQU! faire une pause ! (

% === pause jeu === %
ECHO)
appeler : demander « Pause - Appuyez sur une touche pour continuer... »
% ClearPrev %
aller sendCmd %
for /f "jetons = 1-4 delims =:.," %% dans («! temps: = 0! ") Définissez /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

) () autre

% === orientation === %
Si non défini replay (echo(!key!.) >> «! gameLog! "
pour %% dans (! clé!) faire si! moveKeys! (EQU 2
Set /a « xDiff = XTournez %% K *! yDiff!, yDiff = yTurn %% K *! xDiff! "
) ElseIf "! %% KAxis! « QNE »! axe!" (
Set /a « xDiff = xDiff %% K, yDiff = yDiff %% K "
la valeur "axe =! %% KAxis!"
)

% === effacer la queue === %
la valeur "TX =! snakeX: ~ -2!"
la valeur "TY =! snakeY: ~ -2!"
la valeur "snakeX =! snakeX: ~ 0, -2!"
la valeur « snakeY =! snakeY: ~ 0, -2! "
% de l’intrigue ! TX!!! TY ! espace

% === calculer le nouvel emplacement de tête et de tenter de déplacer === %
/ a la valeur « X = PX + xDiff, Y = PY + yDiff "
Set "X = ! X!"
la valeur "Y = ! Y!"
Set "X = ! X: ~ -2! "
la valeur "Y = ! Y: ~ -2! "
(test % ! X! ! Y ! playerSpace) & & ()

% === déménagement réussi === %

% === supprimer le nouvel emplacement de tête de la liste vide === %
pour %% dans ("! X! ») faire pour %% dans ("! Y!") Définissez « vide =! vides: #%% ~ X %% ~ Y =! "

% === manger des aliments qui peuvent être présents === %
(test % ! X! ! Y ! nourriture) & & ()
% === lancer croissance === %
Set /a croître croissance +=

% === repérer et attirer de nouveaux aliments === %
Si défini (replay
< & 9/p la valeur "F ="
) () autre
/ a la valeur "F = (! aléatoire! %%(emptyCnt-1)) * 6 + 1"
(echo ! F!) >> «! gameLog! "
)
pour %% dans (! F!) faire (% de la parcelle! vide: ~ %% F, 5! alimentaire)
)

Si! grandir! (RTM 0
% === restaurer la queue === %
% de l’intrigue ! TX!!! TY ! corps
la valeur "snakeX =! snakeX!! TX!"
la valeur « snakeY =! snakeY!! TY!"
Set /a emptyCnt = 1

% === gérer partition === %
Set /a « score += 1, se développer-= 1 »
Si non défini replay si! score! GTR! Salut! Set /a "Salut += 1, newHi = 1"

) () autre
% === Ajouter le poste de queue ancien en la liste vide === %
la valeur "vide =! vide! #! TX!!! TY!"
)

% === dessiner la nouvelle tête === %
Si défini snakeX (parcelle % ! PX!!! PY ! corps)
% de l’intrigue ! X! ! Y ! tête

% === Ajouter la nouvelle position de la tête aux chaînes serpent === %
la valeur "snakeX = ! X!! snakeX!"
la valeur « snakeY = ! Y!! snakeY!"
la valeur "PX = ! X!"
la valeur "PY = ! Y!"

tirage au sort %

) || (

% === move échec - jeu sur === %
la valeur "replayFinished = 1"
% de l’intrigue ! TX!!! TY ! corps
appeler : spinner ! PX!!! PY ! mort
tirage au sort %
Si défini () newHi
ECHO)
Echo de nouveau Score élevé - félicitations ^ ^ !
la valeur "Salut! diffCode! =! score!"
copie "! gameLog!" "% hiFile %! diffCode!. txt"> nul
>> "% hiFile %! diffCode!. txt"echo::! score!
)
ECHO)
ClearLine %
appeler : demander « Appuyez sur une touche pour continuer... »
pour %% dans (! configOptions!) définissez "%% A =! %% ASave!"
appeler : mainMenu
)
)
)
)

::-------------------------------------
: getString prompte Var MaxLen
:: L’invite pour une chaîne avec une longueur maximum de MaxLen.
:: Clés valides sont alphanumériques, espace, trait de soulignement et tableau de bord
:: Chaîne se termine par l’entrée
:: Backspace fonctionne pour supprimer le caractère précédent
:: Résultat est retourné dans le Var
Set /a "maxLen = %3"
la valeur "%2 ="
% sendCmd % invite
appeler : purge
: getStringLoop
(getKey %! supérieur! 0 1 2 3 4 5 6 7 8 9 » » _ - {Enter}! BS!)
Si défini à clés)
Si! clé! EQU {Enter})
ECHO)
sortie/b
)
Si! clé! NEQ! BS! Si! maxLen! (RTM 0
Set /a maxLen = 1
la valeur "%2 =! %2! clé !
)
Si! clé! EQU! BS! Si défini (%2
Set /a maxLen += 1
la valeur "%2 =! %2: ~ 0, -1!"
)
)
Si défini inKey % sendCmd % un
Goto : getStringLoop

::-------------------------------------
: demander prompte ValidKey [Validkey]...
:: L’invite pour une pression de touche.
:: Attendre jusqu'à ce qu’un ValidKey est enfoncée et retourner le résultat dans la variable clé.
:: Délimiteurs de jetons), et des caractères incohérents doivent être placés entre guillemets.
% sendCmd % invite
(set validKeys = % *)
(set validKeys =! validKeys:% 1 =!)
appeler : purge
: getResponse
(getKey %! validKeys!)
Si non défini (clés
Si défini inKey % sendCmd % un
Goto : getResponse
)
sortie/b

: purge
la valeur « inKey = "
pour/l %%d Ko (1 1 1000) ()
Set /p "inKey ="
Si «! inKey! "equ « {purgé}. » sortie/b
) < & 9
Goto : purge

::-------------------------------------
: spinner X Y ValueVar
Set /a d1 =-1000000
pour/l %%d Ko (1 1 5) faire pour %% dans (spinner %) do ()
composez le : spinnerDelay
% tracé %%d %2 %%
tirage au sort %
)
composez le : spinnerDelay
(parcelle % %% %2 % 3)
sortie/b

::-------------------------------------
: retarder centisecondes
setlocal
for /f "jetons = 1-4 delims =:.," %% dans («! temps: = 0! ") ne définissez pas/a « spinnerDelay = %1, d1 = (((1 %% un * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% d-36610100 "
:: passer à: spinnerDelay

::-------------------------------------
: spinnerDelay
for /f "jetons = 1-4 delims =:.," %% dans («! temps: = 0! ") Définissez /a "d2 = (((1 %% un * 60) + 1 %% b) * 60 + 1 %% c) * 100 + 1 %% dDiff d-36610100, = d2-d1"
Si la valeur de % dDiff % lss 0/a dDiff += 24 * 60 * 60 * 100
Si % dDiff % lss % spinnerDelay % goto : spinnerDelay
Set /a d1 = d2
sortie/b

::-------------------------------------
: mainMenu
CLS
la valeur "loadAvailable ="
taux de croissance de l’écho =! croissance!
ECHO)
Menu principal de l’écho :
ECHO)
écho N - nouveau jeu
Si l’écho replayAvailable R - jeu précédent Replay défini
Si défini saveAvailable écho S - enregistrer un jeu
Si existent *. snake.txt echo L - charge et montre un enregistrées jeu & set "loadAvailable = L"

echo C - options de contrôle
echo G - options graphiques
echo Q - Quit
ECHO)
la valeur "hiAvailable ="
pour/l %%d Ko (1 1 6) faire si défini Salut %% () N
Si non défini () hiAvailable
echo Replay Score élevé :
ECHO)
)
la valeur "desc =! desc %% N!..."
la valeur "hiAvailable =! hiAvailable! %% N "
echo %%! / / desc: ~ 0, 8!! Salut %% N !
)
Si défini (écho) hiAvailable
mis "touches = N C G Q! hiAvailable!! replayAvailable!! saveAvailable!! loadAvailable!"
appeler : demander ">"! clés!
si/i! clé! (EQU Q
sendCmd % quit
CLS
sortie
)
si/i! clé! EQU N)
la valeur "rejouer ="
la valeur "replayAvailable = R"
la valeur "saveAvailable = S"
Goto : initialiser
)
si/i! clé! EQU S)
Si défini () replayAvailable
appeler : demander "HighScore # ou P pour précédent:"! hiAvailable! P
) () autre
appeler : demander "HighScore #:"! hiAvailable!
)
écho! clé!
si/i! clé! EQU P (valeur "src =! gameLog!") sinon la valeur "src = % hiFile %! clé!. txt"
appeler : getString "enregistrer le nom de fichier:" déposer 20
copie "! src!" «! fichier!. Snake.txt"
appeler : demander « Appuyez sur une touche pour continuer... »
)
si/i! clé! EQU L)
appeler : getString "nom de fichier de charge:" déposer 20
Si existe "! fichier!. () Snake.txt"
la valeur "rejouer =! fichier!. Snake.txt"
Goto : initialiser
)
echo erreur : fichier "! fichier!. Snake.txt"introuvable
appeler : demander « Appuyez sur une touche pour continuer... »
)
si/i! clé! EQU R)
la valeur "rejouer =! gameLog!"
Goto : initialiser
)
Si! clé! GEQ 1 si! clé! Leq 6)
la valeur "rejouer = % hiFile %! clé!. txt"
Goto : initialiser
)
si/i! clé! EQU C appel : controlOptions
si/i! clé! EQU G appel : graphicOptions
Goto : mainMenu

::-------------------------------------
: controlOptions
CLS
la valeur "touches = {Enter} T L R P"
Si! moveKeys! EQU 4 ensemble "touches =! clés! D U"
Options de contrôle de l’écho :
ECHO)
echo T - Type... =! moveKeys! clés
ECHO)
Echo de L - gauche... =! gauche!
echo R - droit... =! bon!
Si! moveKeys! EQU 4 echo U - up... =! up!
Si! moveKeys! EQU 4 echo D - bas... =! vers le bas !
ECHO)
echo P - Pause... =! faire une pause !
ECHO)
écho {Enter} - retourner au Menu principal
ECHO)
appeler : demander ">"! clés!
Si! clé! EQU {Enter} goto : saveUserPrefs
si/i! clé! EQU T)
Si! moveKeys! EQU 2 (la valeur "moveKeys = 4") sinon la valeur "moveKeys = 2"
Goto : controlOptions
)
la valeur "option = LLeft RRight UUp DDown PPause"
for /f %%d dans («! option: * clé % =! ") ()
appeler : demander "Appuyez sur une touche pour %% O:"
pour %%d Ko (0 1 2) faire si «! clé! « equ »! non valide: ~ %% K, 1! "goto : controlOptions
pour %% dans (! supérieure!) définissez "clé =! clé: %% C = %% C!"
la valeur "%% O =! clé!"
)
Goto : controlOptions

::-------------------------------------
: graphicOptions
CLS
écho des Options graphiques :
ECHO)
B - l’écho à la frontière... =! lié!
E - espace vide d’écho. =! espace!
l’écho de H - tête de serpent... =! chef!
écho S - corps de serpent... =! corps!
echo F - nourriture... =! alimentaire!
echo D - mort... =! mort!
ECHO)
echo G - taux de croissance. =! croissance!
ECHO)
écho {Enter} - Rturn au Menu principal
ECHO)
appeler : demander ">" B E, H, S, F, D, G {Enter}
Si! clé! EQU {Enter} goto : saveUserPrefs
si/i! clé! EQU G)
appeler : demander « Appuyez sur un chiffre pour le taux de croissance (0 = 10) » 0 1 2 3 4 5 6 7 8 9
Si! clé! EQU 0 ensemble "clé = 10"
la valeur "croissance =! clé!"
composez le : loadHighScores
) () autre
la valeur "option =-BBorder:bound:-EEmpty espace : espace:-tête : tête de HSnake:-SSnake corps : corps:-FFood:food:-DDeath:death:"
for /f "jetons = 1 2 delims =:" %%d dans ("! option: *-clés % =!") faire)
appeler : demander "Appuyez sur une touche pour %% A"
pour %%d Ko (0 1 2) faire si «! clé! « equ »! non valide: ~ %% K, 1! "goto : graphicOptions
la valeur "%% B =! clé!"
)
)
Goto : graphicOptions

::------------------------------------
: saveUserPrefs
(pour %% dans (moveKeys jusqu'à la gauche espace droit lié alimentaire tête corps mort pause croissance) écho %% V =! %% V!) > « % userPref »
sortie/b

::-------------------------------------
: initialiser
CLS
Si défini (replay
Options de vitesse de relecture de l’écho :
) () autre
Options de vitesse de l’écho :
)
retard d’écho
echo # Description (secondes)
echo --- ----------- ---------
pour/l %%d Ko (1 1 6) ()
la valeur "delay = 0! retard %% N!"
la valeur "desc =! desc %% N!"
echo %%d desc: ~ 0, 11 ! 0.! retard: ~ -2 !
)
ECHO)
appeler : demander à "choisir une vitesse (1-6): « 1 2 3 4 5 6
la valeur "Difficulté =! desc % clé!"
la valeur "retard =! clés % de retard! »
la valeur "diffCode = clé %"
echo % clés - % Difficulté
ECHO)
la valeur "axe = X"
la valeur « xDiff = + 1 "
la valeur "yDiff = + 0"
la valeur "vide ="
Set /a "PX = 1, PY = hauteur/2, FX = width / 2 + 1, FY = PY, score = 0, emptyCnt = 0, t1 =-1000000"
la valeur "départ ="
la valeur « m = 00"
Définissez « s = 00"
la valeur "snakeX = PX hexa%"
la valeur "snakeY = PY hexa%"
la valeur "snakeX = % snakeX: ~ -2 %"
la valeur « snakeY = % snakeY: ~ -2 % "
pour/l %% à (0 % de la hauteur de 1 %), do ()
la valeur "ligne %% Y ="
pour/l %% dans (0,1, % largeur) ()
la valeur "cellule ="
Si %%d Ko 0 ensemble "cellule = % lié"
Si %% % hauteur % ensemble "cellule = % lié"
Si %%d Ko 0 ensemble "cellule = % lié"
Si %% % largeur % ensemble "cellule = % lié"
Si %% % PX si %% % PY % ensemble "cellule = % tête"
Si non défini (cellule
la valeur "cellule = % de l’espace"
la valeur "eX = %% X"
la valeur "eY = %% Y"
la valeur "vide =! vide! #! eX: ~ -2!! eY: ~ -2!"
Set /a emptyCnt += 1
)
Si %% % FX si %% % FY % ensemble "cellule = aliments %"
la valeur "ligne %% Y =! ligne %% Y!! cellule!"
)
)
pour %% dans (! configOptions!) définissez "%% ASave =! %% A!"
la valeur "replayFinished ="
Si défini (replay
% sendCmd % replay
sendCmd %! rejouer!
composez le : waitForSignal
la valeur "rejouer = (relire au! Difficulté!)"
la valeur "lire = 1"
< & 9 ()
pour/l %% dans (1 1! configOptionCnt!) faire si défini () lire
Set /p "ln ="
Si «! ln! "equ « END » (lire la valeur =) sinon la valeur"! ln! "
)
)
la valeur "touches ="
la valeur « Salut = 0 »
for /f "delims =:" %% dans (' findstr "^::" "% hiFile %! diffCode!. txt » 2 ^ > nul ") définissez « Salut = %% A"
(% de tirage au sort)
appeler : retarder 100
) () autre
Si défini Salut % diffCode % (la valeur "Salut =! Salut % diffCode %!") sinon la valeur « Salut = 0 »
(% de tirage au sort)
> "! gameLog!" (
pour %% dans (! configOptions!) faire (écho %% A =! %% A!)
(echo fin)
)
ECHO)
Si! moveKeys! EQU 4)
écho des contrôles:! up! = vers le haut! vers le bas! = vers le bas! gauche! = gauche! droite! = right! pause! = pause
) () autre
écho des contrôles:! gauche! = gauche! bon! = right! pause! = pause
)
Évitez de tomber sur vous l’écho (! corps!! corps!! chef! ^) ou au mur (! lié! ^)
écho à manger nourriture (! nourriture! ^) à se développer.
ECHO)
appeler : demander « Appuyez sur une touche pour démarrer... »
aller sendCmd %
)
la valeur "pauseTime = 0"
la valeur « xDiff! up! = + 0"
la valeur « xDiff! bas! = + 0"
la valeur « xDiff! gauche! =-1 "
la valeur « xDiff! bon! = + 1 "
la valeur "yDiff! up! =-1"
la valeur "yDiff! bas! = + 1"
la valeur "yDiff! gauche! = + 0"
la valeur "yDiff! bon! = + 0"
la valeur "! up! Axe = Y "
la valeur "! vers le bas ! Axe = Y "
la valeur "! gauche! Axe = X "
la valeur "! bon! Axe = X "
la valeur "XTournez! gauche! = 1"
la valeur "XTournez! bon! =-1"
la valeur "yTurn! gauche! =-1"
la valeur "yTurn! bon! = 1"
la valeur "playerSpace =! espace!! nourriture!"
la valeur ^ "touches ="! gauche! " «! bon! » «! une pause! » ^"
la valeur "newHi ="
la valeur "grandir = 0"
Si! moveKeys! ensemble EQU 4 ^ "touches =! clés! «! up! » «! bas! » ^"
CLS
sortie/b

::-------------------------------------
: waitForSignal
dans le cas contraire les existent « signal % » goto : waitForSignal
del « signal % »
sortie/b

::-------------------------------------
: loadHighScores
la valeur "saveAvailable ="
pour/l %%d Ko (1 1 6) ()
la valeur "Salut %% N ="
for /f "delims =:" %% dans (' findstr "^::" "% hiFile%%%N.txt" 2 ^ > nul') ()
la valeur "Salut %% N = %% A"
la valeur "saveAvailable = S"
)
)
sortie/b

::-------------------------------------
: fixLogs
setlocal enableDelayedExpansion
pour %% dans (* .snake) ()
Ren "%% F" "%% F.txt"
appeler : fixLog "%% F.txt"
)
pushd « % SaveLoc »
for /f "delims =" %%d dans (« dir/b SnakeHi*.txt 2 ^ > nul') ()
la valeur "file = %% ~ nF"
la valeur "file = Snake1Hi! file:~-1!. txt"
Ren "%% F" "! fichier!"
appeler : fixLog «! fichier! "
)
popd
sortie/b

: fixLog filePath
> "% ~ 1.new" ()
< "% ~ 1" ()
pour %% dans (difficulté de diffCode moveKeys vers le haut bas gauche droite) do ()
Set /p "val ="
(echo %% A =! val!)
)
)
(écho de croissance = 1)
(echo fin)
plus + 7 » % ~ 1"
)
déplacer /y "% ~ 1.new" "% ~ 1" > nul
sortie/b

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: contrôleur
:: Détecte rapidement sur la touche et envoie les informations pour le jeu via un fichier de clé.
:: Le contrôleur possède plusieurs modes d’entrée qui sont activés par les commandes envoyées
:: du jeu via un fichier cmd.
::
:: Modes :
::
:: ne tenez - aucun entrée, attendre que la commande
::
:: aller - continuellement get/envoi touches
::
:: invite - Send {purgé} marqueur afin de permettre le jeu purger la mémoire tampon d’entrée, puis
:: get/envoyer une seule touche et la maintenir
::
:: Get/envoi unique - une seule touche, appuyez et maintenez
::
:: replay - copier un jeu journal dans le fichier de clé. La ligne suivante dans le fichier cmd
:: spécifie le nom du fichier journal à copier. Pendant la relecture, le contrôleur
:: enverra un signal d’abandon au jeu si une touche est enfoncée.
::
:: quit - quitter immédiatement le processus contrôleur
::
:: Comme écrit, cette routine signale incorrectement ! aussi), mais ça ne fait rien
:: car nous n’avez pas besoin de cette clé. Fois et touche entrée sont signalés comme {Enter}.
:: Un caractère supplémentaire est ajouté à la sortie de préserver les caractères de contrôle
:: quand lu par SET /P.

setlocal enableDelayedExpansion
for /f %%d dans (' copier/z "% ~ dpf0" nul ") définissez" CR = %% un "
la valeur "cmd = cale"
la valeur "inCmd ="
la valeur "key ="
pour/l %%. dans () do)
Si «! cmd! » QNE « hold » ()
for /f "delims =" %% dans (' xcopy/w "% ~ f0" "% ~ f0 » 2 ^ > nul') ()
Si ne pas défini de jeu de clés "clé = %% A"
)
la valeur "clé =! clé: ~ -1!"
Si! clé! EQU ! CR ! la valeur "key = {Enter}"
)
< & 8/p la valeur "inCmd ="
Si défini () inCmd
Si! inCmd! EQU quitter sortie
la valeur "cmd =! inCmd!"
Si! inCmd! (replay) EQU
< & 8/p la valeur "file ="
type "! fichier!" > & 9
Copiez nul « signal % »
)
la valeur "inCmd ="
)
Si défini à clés)
Si «! cmd! "equ"invite"(echo {purgé}.)
Si «! cmd! "equ « replay » ()
Copiez nul « signal % » > nul
(echo {purgé}.)
la valeur "cmd = aller"
) d’autre (echo(!key!.)
Si «! cmd! » QNE « go » set "cmd = cale"
la valeur "key ="
) > & 9
)

Articles Liés

3D imprimés serpent robot

3D imprimés serpent robot

Quand j'ai eu mon imprimante 3D j'ai commencé à penser ce que je peux faire avec elle. J'ai imprimé un tas de choses, mais j'ai voulu faire une construction toute en utilisant l'impression 3D. Puis j'ai pensé à faire animal robot. Ma première idée ét
Programmation de la PmodOLEDrgb sur le chipKIT MX7 Pro

Programmation de la PmodOLEDrgb sur le chipKIT MX7 Pro

Les écrans LED sont partout. Les chances sont que vous utilisez un pour lire ce droit maintenant. Avec la sortie de PmodOLEDrgb de Digilent, maintenant vous pouvez programmer un vous-même !Étape 1: matériauxPour ce projet, vous aurez besoin :chipKIT
Obtenir commencé avec Python et programmation - The court tutoriel

Obtenir commencé avec Python et programmation - The court tutoriel

alors je vois que vous êtes intéressé à en apprendre sur la programmation... ou les serpents.Si vous êtes ici chez les serpents, je suis désolé que ce n'est pas l'endroit pour vous. Eh bien, peut-être...Si vous êtes ici pour en savoir plus sur la pro
Les queues pour les jumeaux de Serpent

Les queues pour les jumeaux de Serpent

pour Burning Man de cette année, nous avons jeté dedans avec nos bons amis Jon & Kystren de forme et la réforme . Vous beaucoup eux savent de leur impressionnant « comment faire une voiture escargot » Instructable ils ont fait un certain temps.Jon et
Faire une piscine Robo-serpent

Faire une piscine Robo-serpent

Sneel est le nom de mon serpent / anguille natation robot. Il s'agit de la documentation du matériel, de logiciels et de conception mécanique de Sneel_003.uréthane flex tubing, microcontrôleurs, radio sans fil Zigbee, colliers de serrage, fils, servo
Serpent sur la matrice de LED (BT)

Serpent sur la matrice de LED (BT)

Salut tout le monde !Aujourd'hui, je vais vous montrer comment faire le serpent sur la matrice de led avec contrôleur de BT (tout est mieux avec BT).Étape 1: matériauxNous avons besoin :-4 modules de matrice avec max7219 (j'utilise le MOD-39)-Module
Jeu de serpent... apprendre à faire un serpent jeu en c ++.

Jeu de serpent... apprendre à faire un serpent jeu en c ++.

vous pouvez avoir joué serpent jeux de nokia mobiles.in cette instructables, vous apprendrez comment faire un serpent jeu en langage de programmation c ++.ne vous inquiétez pas, si vous n'avez aucune connaissance en programmation et que vous ne savez
Motion activée une chute araignée, faible coût, sans aucune programmation

Motion activée une chute araignée, faible coût, sans aucune programmation

dans cette Intstuctable je vais vous montrer comment faire une araignée très simple mouvement activé qui descend rapidement et sursauter quelqu'un qui marche en dessous, puis se rétracte. J'ai conçu ce soit un projet électronique pratique et peu coût
Robot serpent

Robot serpent

butCe projet a été construit pour les choses que Think enseignement supérieur classe CSCI 4830-7 et CSCI 7000-7 pour l'Université du Colorado à Boulder.  Notre groupe comprenait un diplômé et deux étudiants de premier cycle.  Nous avons travaillé sur
Serpent de LED

Serpent de LED

dans cette Instructables, je vais vous montrer comment faire ma création, composée de beaucoup, beaucoup de LED, c'est le serpent comme la forme, le serpent de LED. Mon serpent de LED est de 1 mètre de long, mais vous décidez combien de temps vôtre s
Jeu de serpent de Rainbowduino

Jeu de serpent de Rainbowduino

vous avez manqué les jeux que nous avons l'habitude de jouer quand nous étions petits enfants ?Le jeu de serpent est l'un des jeux qui nous rappellent notre enfance douce.  Vous voulez revivre la joie de ce jeu ?Nous avons construit un jeu de serpent
Jeu de serpent bricolage

Jeu de serpent bricolage

Jeu amusant est à venir !Wow ! Il s'agit d'un serpent, mais vous saurez comment merveilleux, incroyable, surpris c'est !J'utilise IIC_LCD pour les moniteurs du projet tel qu'il a construit dans l'API riche qui est parfait pour cela. Il peut réduire l
Simple serpent Accueil

Simple serpent Accueil

J'ai réalisé que notre serpent de maïs se multipliaient quand tout à coup, elle ne cadrait pas dans son préféré cacher. Elle a rampé, recroquevillé et il sauté hors de lui.Il n'est pas juste cornies ; beaucoup d'espèces de serpent comme un coin douil
Getting Started with Intel Edison - programmation Python

Getting Started with Intel Edison - programmation Python

Ce guide est pour tous les programmeurs python qui ont toujours demandé, que vousce qui est le meilleur moyen d'entrer dans « IoT "(Internet of Things) , maintenant puisque vous l'avez fait à cette page, achète-toi un Edison Intel sur Amazon ou un en