Проблемы с повреждением РПГ - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь сделать игру в стиле 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

Примечание:игра еще не закончена, но если вы играете в нее, вы сможете увидеть, как не работает атака.Я также не запрограммировал опцию бегства.

1 Ответ

0 голосов
/ 20 сентября 2019

Есть несколько незначительных проблем с этим кодом.Я полагаю, что это домашнее задание, а не что-то, что вы сами разработали?

Вычитание значений урона

Есть проблемы при вычитании значений, чтобы показать повреждение или использование пуль оружия.Примеры включают в себя:

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

Переменные именуются без символов процента, поэтому %GUN% должно именоваться GUN при использовании SET.Кроме того, при выполнении арифметики код 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

В основном это говорит о том, что text fp равно текст 1.Очевидно, что это не работает.Вам нужно изменить это, чтобы использовать значение переменной fp и число (удалить '):

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

Победа в игре

Существует последняя проблема, которая заключается в том, где вы рассчитываете окончательную игру, когда у игрока или ЦП будет 0 или меньше здоровья.В настоящее время у вас есть:

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

Это снова сравнивает текст CPU или playerh с текстовым значением 0.Удалите символы ':

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...