Делаем пакетный помощник DND - PullRequest
0 голосов
/ 06 марта 2019

Я не знаю, знает ли кто-нибудь из вас что-нибудь о пакете (я уверен, что кто-то знает), но что касается этого поста, я пытаюсь создать неработающий помощник DND (что-то, что вы бы сказали статистике и это помогло бы вам завершить действие быстрее, чем бросать кубики, и выполнять математику самостоятельно. В настоящее время у меня работает генератор случайных чисел (хотя я бы хотел его улучшить)

Эта версия настроена на выбор случайного числа от 1 до 20, я хотел бы выяснить способ получения уведомления о программе, если вы бросаете 1 или 20 (Критические удары / критические ошибки)

Кроме того, позже мне понадобится кое-что, что покажет мне, как сохранить определенные значения как переменные,

@echo off
:Start
Set /a ans="%RANDOM% %% 20"+1
echo %ans%
pause
goto Start 

(Что касается сохранения переменных, когда программа запускается, она скажет мне, что я пропускаю операцию.) Раскрашивающая часть была только для этого, если кто-то может показать мне способ упростить этот раздел, пожалуйста, скажите.
Пожалуйста, используйте термины Ламенс, я все еще не очень хорош в понимании всего этого.

(ПРОГРАММА ПРОГРАММЫ ПО ТЕКУЩЕЙ ПОМОЩИ)

@echo off 
cls
:BEGIN
Echo HI THERE! AND WELCOME TO MY GAME!! 
Echo Lets begin by setting your prefered color! 
:A
set choice=
set /p choice= RED, WHITE, OR BLUE?!? 
if not '%choice%'=='' set '%choice%'=='Red, White, Blue'
if '%choice%'=='RED' goto RED 
if '%choice%'=='WHITE' goto WHITE
if '%choice%'=='BLUE' goto BLUE
if '%choice%'=='Red' goto RED 
if '%choice%'=='White' goto WHITE
if '%choice%'=='Blue' goto BLUE
if '%choice%'=='red' goto RED 
if '%choice%'=='white' goto WHITE
if '%choice%'=='blue' goto BLUE
if '%choice%'=='9' goto 1Bs
echo "%choice%" is not a good color bro, do a different one
goto A
:RED
color 4
goto START SCREEN
:WHITE
color 7
goto START SCREEN
:BLUE
color 1
goto START SCREEN 
:START SCREEN
cls 
TITLE CHOOSER GAME BOI
Echo             ---THE DND GAME--- 
echo Welcome to the DND game, we will first choose your Attributes
echo Strength (How hard you hit) (STR)
echo Constitution (Your health) (CNST)
echo Knowledge (Better Rolls against Vendors and Questions) (KNLG)
echo Dexterity (Your chances of dodging and Hitting) (DXT)
echo You have a total of 10 points to apply to each Attribute
echo Your points HAVE to equal 10 otherwise you will have to restart 

:ATTRSET
set MXPNTS=10
set choice= 
set /p STR= STR (1-10) 
set choice= 
set /p CNST= CNST (1-10)
set CNST=CNST
set choice= 
set /p KNLG= KNLG (1-10) 
set KNLG=KNLG
set choice= 
set /p DXT= DXT (1-10)
set DXT=DXT

set /a ATTRTTL=STR+CNST+KNLG+DXT
echo ATTRTTL
if NOT ATTRTTL=MXPNTS goto ATTRSET
if ATTRTTL=MXPNTS goto testyay
pause
:testyay
pause

1 Ответ

0 голосов
/ 06 марта 2019

Я бы лично предложил:

@echo off
cls

:begin
echo HI THERE! AND WELCOME TO MY GAME!!
echo Lets begin by setting your preferred color!

:a
set /p choice= RED, WHITE, OR BLUE?!? 
if "%choice%" == "" (
    echo Please enter something!
    cls
    goto :A
)

for %%A IN (red white blue) do if /I "%choice%" == "%%A" (call :%%A & goto :start_screen)
if "%choice%" == "9" (goto 1Bs)
echo "%choice%" is not a good color bro, do a different one.
goto :a

:red
color 4
exit /b

:white
color 7
exit /b

:blue
color 1
exit /b

:start_screen
cls 
title CHOOSER GAME BOI
echo             ---THE DND GAME--- 
echo Welcome to the DND game, we will first choose your Attributes
echo Strength (How hard you hit) (STR)
echo Constitution (Your health) (CNST)
echo Knowledge (Better Rolls against Vendors and Questions) (KNLG)
echo Dexterity (Your chances of dodging and Hitting) (DXT)
echo You have a total of 10 points to apply to each Attribute
echo Your points HAVE to equal 10 otherwise you will have to restart 

:ATTRSET
set "mxpnts=10"
set /p "str=STR (1-10) "
set /p "cnst=CNST (1-10) "
set /p "knlg=KNLG (1-10) "
set /p "dxt=DXT (1-10) "

set /a "attrttl=str+cnst+knlg+dxt"
echo %ATTRTTL%
if not "%attrttl%" == "%mxpnts%" (goto :attrset) else (goto :testyay)
pause

:testyay
pause
  • Обнаружена заглавная буква! Успешно удален! Поскольку пакет является регистром на чувствительном языке, заглавные буквы будут шуметь и заставлять читателя закрыть вкладку с вашим вопросом и двигаться дальше - или, по крайней мере, ко мне.
  • Все, что вы сделали с переменной choice, было не нужно. Просто цикл for, проходящий по цветным словам и проверяющий (без учета регистра), был ли пользовательский ввод red, white или blue.
  • Я решил call подпрограмм, а не goto для них, чтобы сохранить некоторые строки - я обычно делаю это для моих программ: вы поместили 3 отдельные команды goto START SCREEN, которые можно упростить call в подпрограмме (что означает goto для него, но затем вернуться), а затем goto, где вы хотите.
  • Помните: для ваших файлов / папок не должно быть пробелов в их имени. Это может вызвать довольно много неправильного поведения. Это одинаково во всех языках: когда вы называете переменные, функции, подпрограммы или что-то еще, не включает пробелы ! Я переименовал его в start_screen.

Вот и все, следуйте отличным советам Squashman в комментариях и прочитайте справку по некоторым командам в cmd, набрав command /?, и все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...