我正在批量制作RPG游戏,我需要制作它,以便如果玩家没有购买某种武器,它就不会显示为使用选项。目前,我有一个战斗系统,你可以按一个键来使用你拥有的武器。但是,我不知道怎么做,所以如果你没有某种武器,就不能使用它。
我也想要它,即使文本没有显示,如果没有它,用户仍然无法使用它。例如,如果你没有剑,但你知道要使用它,你按s,我不希望它工作,除非你有它。这样人们不能只是作弊。
请帮忙!
以下是代码:
if %sword1% equ true echo 2-Tachi
set /p e="Weapon to equip:"
pause
我不希望用户只输入2并拥有Tachi。我想要它以便他们必须这样做 有武器使用它。
答案 0 :(得分:2)
@echo off
setlocal enabledelayedexpansion
set w1=sword
set w2=bow
set w3=axe
set w4=machinegun
set w5=warbow
set w1?=true
set w2?=false
set w3?=true
set w4?=false
set w5?=false
:loop
echo ----------
for /L %%i in (1,1,9) do (
if !w%%i?!==true echo %%i - !w%%i!
)
set /p e="Weapon to equip: "
if !w%e%?!==true (
echo you have choosed: !W%e%!
) else (
echo you don't have one.
goto :loop
)
echo now, that you have a !W%e%!, go and fight!
echo Bamm - Wush - Ouch
if %random% lss 10000 (
echo Congratulations, you have found a %w4%.
set "w4?=true"
)
pause
goto :loop
编辑(对代码的解释)
set
的第一个区块只设置了武器的名称。
set
的第二个区块设置它们可供玩家使用。 (在游戏中,通常一开始只有一个可用,其他人可以在游戏中找到或购买)。
变量名中的?
没什么特别的,只有像任何字母一样的字符。如果它让您感到困惑,您还可以使用类似B
的内容(例如b
oolean):set w5B=false
for
- 循环是此代码的核心。它会显示所有可用的武器(它会w1
到w9
。您可以对其进行调整以处理数百甚至数千个项目(从1
开始,增加1
,直到9
为止。 true
))
如果可用(%%i
),它会回显数字(!w%%i?!
)和武器名称。
w%%i?
有点棘手。 %%我是"循环计数器" (1,2,3,...,9),因此w4?
会转换为(例如)w%%i
(以及w4
转换为%
。
因为您需要具有该名称的变量,所以您必须将其置于%%i
之间,但由于delayed expansion
已经是变量的一部分,解释器会感到困惑。为此,我们使用!
(在stackoverflow中搜索它,发现的结果比您可以阅读的多),因此可以使用%
而不是!w%%i?!
,因此完整变量名为{ {1}}(请记住:?
只是一封信)。 (不要沮丧,如果你没有第一次得到它,只要玩弄它,有一天它会对你有意义。)
if
检查后set /p e="Weapon to equip: "
,如果武器可用(true
),如果是,则很好,如果没有那么错误/再试一次。
if %random%
...部分向您展示了如何使项目可用(true
)。您也可以通过将标记设置为false
来使其中一个不可用。)如果您像在战斗中或在商店(买/卖)中那样发现,那么这样做也是一样。
我确定,您已经猜到,您必须使用某些代码替换echo Bamm - Wush - Ouch
进行战斗。
答案 1 :(得分:0)
我觉得很难找到解决方案,因为用户无论如何都可以编辑.bat文件?用C ++或C#编写它不是更好吗?