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