1
所以最近我开始学习批处理文件,今天我决定尝试用它来制作游戏。我有一些错误,并且无法弄清楚代码有什么问题。 继承人的代码:与批处理文件代码混淆
@echo off
title Batch Rpg
color 07
echo Welcome to Batch Rpg!
echo.
echo.
pause
:menu
cls
echo.
echo -Menu-
echo.
echo.
echo.
echo 1) Begin
echo.
echo 2) How to play
echo.
echo 3) Exit
echo.
echo.
echo.
echo ---------
echo.
set /p c=Choice:
if %c%==1 goto prestart1
if %c%==2 goto howtoplay
if %c%==3 goto cfr_exit
if NOT %c%==1 if NOT %c%==2 if NOT %c%==3 goto menu
:cfr_exit
cls
echo.
echo Are you sure you want to exit?
echo.
set /p c=(Y/N):
if %c%=="Y" exit
if %c%=="N" goto menu
if NOT %c%=="Y" if NOT %c%=="N" goto cfr_exit2
:cfr_exit2
cls
echo.
echo You must enter a valid option.
echo.
pause
goto cfr_exit
:howtoplay
cls
echo.
echo -How to play-
echo.
echo.
echo.
echo This game is very simple. There will be a number with an option after it, type the option in and it will perform an action(As the option would say).
echo.
pause
goto menu
:prestart1
cls
echo.
echo Welcome to land of Fageryth!
echo.
echo What is your name, adventurer?
echo.
set /p playername=Name:
goto prestart2
:prestart2
cls
echo.
echo What would be your more valued statistic, Attack damage, or Hit points?
echo.
echo.
echo.
echo 1)Attack damage(Atk)
echo.
echo 2)Hit points(Hp)
echo.
echo.
echo.
echo ---------
echo.
set /p playermorevaluedstat=Choice:
if %playermorevaluedstat%==1
set playeratk=6
set playerhp=25
if %playermorevaluedstat%==2
set playeratk=4
set playerhp=30
if NOT %playermorevaluedstat%==1 if NOT %playermorevaluedstat%==2 goto prestart2
cls
echo playeratk
echo playerhp
pause
我遇到了我的代码:prestart2
部分的麻烦。结束后,我试图让它变成如果变量不等于1或2(这是选项)的地方,那么它会将播放器重新发回到该部分的开始,并且当它结束时检查,我试图让它显示两个变量playeratk
和playerhp
,但它只是关闭了。我真的迷失在这里,并希望得到帮助!
为什么这么复杂的逻辑?还有一个'else'子句,它有助于简化:'if“%playermorevaluedstat%”==“2”(做某些事情)其他如果“%playermorevaluedstat%”==“1”(做其他事情)else做别的事)';注意''''比较表达式的''''以避免'%playermorevaluedstat%'为空的情况下的麻烦;阅读'if /?'的帮助文本以查找'if' /'else'子句的确切语法...... – aschipfl