角色扮演游戏损坏问题



我正在尝试制作RPG风格的游戏,当我攻击敌人时,它不会造成任何伤害,敌人将我的生命值设置为-3,有人可以帮助我吗?

@echo off
title RPG BETA
color 0b
set /p player=Welcome to Xero, what's your name?:
cls
echo Hello %player%!
pause
goto start
rem easteregg
if '%player%'=='Niko' goto win
if '%player%'=='nko' goto win
:start
echo In the distant future, the world was on the brink of destrucion.
timeout 3 /nobreak >nul
echo In the midst of the wasteland, a single man, named %player%, will overcome the odds
pause
goto BFight
:BFight
cls
set CPU=20
set CPUN=Scorpion
set gun=1
set gund=10
set playerh=20
:Fight
cls
if '%CPU%'=='0' goto win
if '%playerh%'=='0' goto lose
cls
echo You encounter a %CPUN%!
echo                            %CPUN% Health: %CPU%
echo.
echo                            Your Health: %playerh%
echo [1]Shoot (%gund%) (%gun%)
echo [2]Punch (3 damage)
echo [3]Flee
set /p fp=What do you do?
if 'fp'=='1' goto gun
if 'fp'=='2' goto punch
if 'fp'=='3' goto flee
:gun
if '%gun%'=='0' goto egun
set /a %gun%=-1
echo You fire at the %CPUN%
timeout 4 >nul
echo It hits!
set /a %CPU%=-%gund%
pause
goto cpufight
:egun
echo You have no bullets!
pause
goto Fight
:punch
echo You punch the %CPUN%
timeout 4 >nul
echo It hits!
set /a CPU=-3
pause
goto cpufight
:cpufight
echo The %CPUN% Attacks!
timeout 4
echo It hits!
set /a playerh= -3
pause
goto fight
:win
cls
echo Congradulations, %player%! You win!
pause

注意:游戏还没有完全完成,但如果你玩它,你应该能够看到攻击是如何不起作用的。我也没有编写逃跑选项。

此代码有几个小问题。 我想这是一个家庭作业问题,而不是你自己开发的东西?

扣除伤害值

扣除值以显示伤害或使用的枪支子弹时存在问题。示例包括:

set /a %gun%=-1
set /a %CPU%=-%gund%
set /a CPU=-3

变量的命名不带百分比符号,因此在使用SET%GUN%应命名GUN。 此外,在执行算术时,代码x =- 1不会减去一个。 它将x设置为等于-1

以下是对上述内容的更正:

SET /a gun = gun - 1
SET /a CPU = CPU - gund
SET /a CPU = CPU - 3

收集输入并进行比较

另一个问题是您的"命令"部分,您可以在其中处理fp命令结果:

if 'fp' == '1' goto gun
if 'fp' == '2' goto punch
if 'fp' == '3' goto flee

这基本上说明了文本fp是否等于文本1。 显然这是行不通的。 您需要修改此设置以使用变量fp的值和数字(删除'(:

if %fp% == 1 goto gun
if %fp% == 2 goto punch
if %fp% == 3 goto flee

赢得比赛

最后一个问题是,当玩家或 CPU 达到 0 或更低的生命值时,您计算最终游戏的位置。 您目前拥有:

if '%CPU%'=='0' goto win
if '%playerh%'=='0' goto lose

这又是将文本CPUplayerh0的文本值进行比较。 删除'字符:

if %CPU% == 0 goto win
if %playerh% == 0 goto lose

但是,这仅在运行状况达到 0 时才有效。 如果生命值低于 0,则永远不会发生。 您需要查找 0 或以下:

if %CPU% LEQ 0 goto win
if %playerh% LEQ 0 goto lose 

最新更新