Batch file 批处理-隐藏文本/禁用或启用值?

Batch file 批处理-隐藏文本/禁用或启用值?,batch-file,cmd,command,Batch File,Cmd,Command,我正在批量制作一个RPG游戏,我需要这样做,如果玩家没有购买某件武器,它就不会作为一个选项出现。目前,我有一个战斗系统,你按下一个键就可以使用你拥有的武器。然而,我不知道如何使它,如果你没有一个特定的武器,你不能使用它 我也希望这样,即使文本不显示,用户仍然不能使用它,如果他们没有它。例如,如果你没有剑,但你知道要使用它,你按下s键,我不希望它工作,除非你有它。这样人们就不能欺骗了 请帮忙 代码如下: if %sword1% equ true echo 2-Tachi set /p e="We

我正在批量制作一个RPG游戏,我需要这样做,如果玩家没有购买某件武器,它就不会作为一个选项出现。目前,我有一个战斗系统,你按下一个键就可以使用你拥有的武器。然而,我不知道如何使它,如果你没有一个特定的武器,你不能使用它

我也希望这样,即使文本不显示,用户仍然不能使用它,如果他们没有它。例如,如果你没有剑,但你知道要使用它,你按下s键,我不希望它工作,除非你有它。这样人们就不能欺骗了

请帮忙

代码如下:

if %sword1% equ true echo 2-Tachi

set /p e="Weapon to equip:"
pause
我不希望用户只需键入2并使用Tachi。我想要它,这样他们就不得不这么做
拥有使用它的武器。

我发现很难找到解决方案,因为用户无论如何都可以编辑.bat文件?用C++或C编写它不是更好吗? 编辑(代码说明)

set
的第一个块只设置武器的名称

第二块
set
设置玩家可以使用的位置。(在游戏中,通常一开始只有一个可用,其他的可以在游戏中找到或购买)。 变量名中的
并没有什么特别之处,只是一个类似于任何字母的字符。如果您感到困惑,还可以使用类似于
B
(类似于
B
oolean):
set w5B=false

循环是该代码的核心。它显示所有可用的武器(它尝试从
w1
w9
。您可以调整它以处理数百甚至数千件物品(它从
1
开始,递增
1
直到
9

如果它可用(
true
),它会回显数字(
%%i
)和武器名称

!我是谁有点棘手。%%i是“循环计数器”(1,2,3,…,9),因此
w%%i?
将转换为(例如)
w4?
(和
w%%i
转换为
w4

因为您需要具有该名称的变量,所以必须将其置于
%
之间,但由于
%%i
已经是变量的一部分,解释器会感到困惑。为此,我们使用
延迟扩展
(在stackoverflow中搜索它,发现的结果比您可以读取的更多)因此可以使用
而不是
%
,因此完整的变量名为
!w%%i?!
(请记住:
只是一个字母)。(不要沮丧,如果你第一次没有得到它,就玩玩它,总有一天你会明白的)

设置/p e=“装备武器:”
后的
if
检查武器是否可用(
true
),如果是,则罚款;如果否,则出错/重试

if%random%
…部分向您展示了如何使物品可用(
true
)。您也可以通过将标志设置为
false
)使物品不可用。无论您是像我这样在战斗中发现物品,还是在商店(购买/出售)中发现物品,操作都是相同的


我确信,你已经猜到了,你必须用一些战斗代码来取代
echo Bamm-Wush-Ouch

是的,但我是为我的朋友制作的,不打算向所有人发布。因为他们几乎没有编程经验,所以他们不知道去哪里找。如果您有解决方案,请告诉我。:)在我们看到一些“相关”代码之前,很难找到解决方案。听起来像是
if
的工作。你能给我们看看你已经拥有的(相关的)代码吗,或者我们必须自己发明这个游戏吗?好的,代码已经添加(尽管是基本的)。请help@alex:显示如何添加(或删除)项目。我脑子里有一个小声音告诉我,这将是下一个问题。@Stephan我对循环的作用(尤其是顶部)有点困惑。它可以工作,但我想知道所有的代码意味着什么,这样我就可以在将来使用它。我是新来的,我想尽我所能学习。谢谢
@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