Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 创建一个关于猜测的小游戏_Batch File - Fatal编程技术网

Batch file 创建一个关于猜测的小游戏

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

所以我正在编写一个关于编写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
    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。通过以下方式修复了它:)