Batch file 创建一个关于猜测的小游戏
所以我正在编写一个关于编写id代码的小游戏,然后让别人猜。我面临的问题是,每当有人试图使用游戏语法更改字体颜色时,只会显示一个错误:“(此时出乎意料。”然后立即崩溃。这是我目前的代码:Batch file 创建一个关于猜测的小游戏,batch-file,Batch File,所以我正在编写一个关于编写id代码的小游戏,然后让别人猜。我面临的问题是,每当有人试图使用游戏语法更改字体颜色时,只会显示一个错误:“(此时出乎意料。”然后立即崩溃。这是我目前的代码: @echo off cls :play set /p id=Identification code: if %id% == color:0 ( color 0 cls goto play ) else if %id% == color:a ( color a cls
@echo off
cls
:play
set /p id=Identification code:
if %id% == color:0 (
color 0
cls
goto play
) else if %id% == color:a (
color a
cls
goto play
) else if %id% == color:b (
color b
cls
goto play
) else if %id% == color:c (
color c
cls
goto play
) else if %id% == color:d (
color d
cls
goto play
) else if %id% == color:e (
color e
cls
goto play
) else if %id% == color:f (
color f
cls
goto play
) else (
cls
echo Identification stored.
pause
cls
set /p conf=Enter identification:
if %conf% == %id% (
cls
echo Access granted.
pause
exit
) else if %conf% == #cheat.code:(acss_grnt.admn)$ (
color c
cls
echo Cheating system..
timeout 3 >nul
tree
dir
timeout 1 >nul
cls
echo Access granted.
pause
exit
else (
cls
echo Access denied.
pause
exit
)
此块缺少右括号:
else if %conf% == #cheat.code:(acss_grnt.admn)$ (
color c
cls
echo Cheating system..
timeout 3 >nul
tree
dir
timeout 1 >nul
cls
echo Access granted.
pause
exit
您还缺少此else块的右括号:
else (
cls
echo Identification stored.
pause
cls
set /p conf=Enter identification:
你应该尽量保持结构简单,计算机/程序在那里,以避免令人厌烦的重复,因此颜色的东西被放在一个逻辑行中,最后是一个行连续字符
^
,并在findstring结果的成功&&
或失败|
时使用条件执行。我不知道我是否能一直遵循你的逻辑,所以试试看
@echo off
Set "Wait=timeout /T 3 /nobreak>NUL"
:play
cls
set "id="
set /p id=Identification code:
If "%id%"=="" Echo no input&timeout 3>NUL&goto play
IF /i "%id:~0,6%"=="color:" Echo:%id%|findstr /I "^color:[0a-f]$" >NUL 2>&1 ^
&&(color %id:~-1%&Goto play)||(Echo wrong color&%Wait%&goto play)
cls
echo Identification stored.
%Wait%
cls
set "conf="
set /p conf=Enter identification:
if "%conf%"=="%id%" (
cls
echo Access granted.
%Wait%
exit
) else if /i "%conf%"=="#cheat.code:(acss_grnt.admn)$" (
color c&cls&echo Cheating system..
%Wait%
tree&dir
timeout 1 >nul
cls&echo Access granted.
%Wait%
exit
)
cls&echo Access denied.
%Wait%
exit
您应该注意
COLOR/?
中的“颜色属性由两个十六进制数字指定”;您只使用了一个十六进制数字。您没有添加任何代码来确定当前的前景颜色。“如果试图使用相同的前景色和背景色执行COLOR命令,则COLOR命令将ERRORLEVEL设置为1”。不要假定前景色属性,如果假定它当前为8
,则在COLOR
命令中的背景属性后添加8
如果组合:
@ECHO关闭
:播放
设置/P“ID=识别码:”
如果/I“%ID%”==“颜色:0”(
颜色08
去玩
)
如果/I“%ID%”==“颜色:a”(
颜色A8
去玩
)
如果/I“%ID%”==“颜色:b”(
颜色B8
去玩
)
如果/I“%ID%”==“颜色:c”(
彩色C8
去玩
)
如果/I“%ID%”==“颜色:d”(
颜色D8
去玩
)
如果/I“%ID%”==“颜色:e”(
颜色E8
去玩
)
如果/I“%ID%”==“颜色:f”(
彩色F8
去玩
)
我已经删除了所有的
CLS
命令,只需开始:改为使用CLS
。如果你正在学习编程,我强烈建议你选择一种不同的语言。Python是一种非常非常非常好的选择,而且更易于使用。我目前正在学习Python,只是有一些乐趣:)请使用IF/I“%variable%”=“string”
,(两边都带双引号)。我包括了/I
选项,用于区分大小写,请键入IF/?
以获取信息。不,仍然是相同的错误:(@Yoshix,这不是一个答案,它是一个评论建议。它是否说它与哪一行有问题?我认为你必须用else(如果…)替换每个else if block)“blocks….我认为ELSE IF语法不正确。如果这确实对您有帮助,您可以将其标记为答案,以便其他人搜索答案。不,对不起。“ELSE IF”语法是正确的,因为我在制作此游戏之前就检查过它。问题是“IF”命令。不,它没有说明它是哪一行:(哦,不。我会再看一看。抱歉。我找不到任何描述这种用法的资源:颜色:0。我认为这可能是个问题。它正在标记(因为那就在那句话之后。你能描述一下什么颜色吗:例如,0是什么颜色吗?非常感谢!事实上,关于前景色的事情,我只想要文本颜色。cls命令用于从颜色命令中清除窗口。:)等等,但现在唯一有效的是颜色:0->color:e。我无法使用其他任何东西:(要更改文本颜色,您需要反转十六进制数字,例如,color 8E
-浅黄色文本的灰色背景。我知道,但每当我想实际写入id时,我都会收到一条错误消息:“如果这次没有预料到的话。”我发现google上有一个堆栈溢出问题,它谈到了除非经过一个过程,否则不能在变量名中使用冒号。你认为这可能有用吗?工作正常,但对我来说太复杂了xD。通过以下方式修复了它:)