我写了一个RPG游戏。但它总是说:
Unbalanced parenthesis.
这是代码:
@echo off
chcp 65001
::MAX SETTING
::PLS REFER TO FILES\DIALOGUE\.
set diamaxna=6
set diamaxnr=5
set diamaxsa=2
::MAIN SETTING
:SETTING
cls
echo Set HP of your character.
set /p myhp=
echo Set HP of your enemy.
set /p enhp=
if "%myhp%"=="" set myhp=0
if "%enhp%"=="" set enhp=0
echo Choose difficulty. 1 is the easiest and 3 is the most difficult.
choice /c 123 /n /m "[1,2,3]"
if "%ERRORLEVEL%"=="1" set enatk=25
if "%ERRORLEVEL%"=="2" set enatk=50
if "%ERRORLEVEL%"=="3" set enatk=70
if "%ERRORLEVEL%"=="0" goto :EOF
cls
::HP CHECK (EN & MY)
:battle.check
if %enhp% LEQ 0 goto battle.win
if %myhp% LEQ 0 goto battle.lose
::BATTLEVAR
:sp.bool.check
set /a sp_bool=%random% >nul
if %sp_bool% GTR 250 goto sp.bool.check
if %sp_bool% GTR 100 set special=0
if %sp_bool% LEQ 100 set special=1
::ENEMY DIALOGUE GET AND CHECK
:endia.get
set /a encurdia=%random%*%diamaxnr%/32768+1 >nul
set /p enlongcurdia=<"%~dp0Files\Dialogue\NR\%encurdia%.txt"
:dia.check
if "%special%"=="1" (
set /a curdia=%random%*%diamaxsa%/32768+1 >nul
) ELSE (
set /a curdia=%random%*%diamaxna%/32768+1 >nul
)
:dia.get
if "%special%"=="1" (
set /p longcurdia=<"%~dp0Files\Dialogue\SA\%curdia%.txt"
) ELSE (
set /p longcurdia=<"%~dp0Files\Dialogue\NA\%curdia%.txt"
)
:mydam.get
if "%special%"=="1" (
set /a mydam=60+(%random%*120/32768+1) >nul
) ELSE (
set /a mydam=40+(%random%*30/32768+1) >nul
)
:endam.get
set /a endam=%enatk%+(%random%*10/32768+1) >nul
::BATTLE+DIALOGUE
set /a enhp=enhp-mydam
set /a myhp=myhp-endam
echo %longcurdia%%mydam%. Enemy remain HP %enhp%.
echo %enlongcurdia%%endam%. Your remain HP %myhp%.
goto battle.check
::WIN V.S. LOSE
:battle.win
echo You win!
choice /c YN /n /m "Restart?"
if "%errorlevel%"=="1" goto SETTING
if "%errorlevel%"=="2" goto END
:battle.lose
echo You lose!
choice /c YN /n /m "Restart?"
if "%errorlevel%"=="1" goto SETTING
if "%errorlevel%"=="2" goto END
:END
echo Press any button to exit......
pause >nul
我无法解决它。我多次阅读这段代码,但我仍然找不到问题 实际上,
不平衡括号是什么意思?
任何帮助将不胜感激。 ^。^
答案 0 :(得分:2)
:mydam.get
if "%special%"=="1" (
set /a mydam=60+(%random%*120/32768+1^)
) ELSE (
set /a mydam=40+(%random%*30/32768+1^)
)
插入符号^
)“转义”)
,告诉CMD
它是计算的一部分,而不是IF
语句。
>nul
语句中的set /a
是多余的。
尝试set /a var=%random% %% %maxvalue% + 1
滚动1..maxvalue
为什么不使用
设置“dialog =%~dp0Files \ Dialogue”
然后“%对话%....”