Двойные переменные в пакетном режиме (или способ их обойти?) - PullRequest
0 голосов
/ 13 декабря 2018

Я делаю карточную игру, поэтому я пытаюсь установить определенное количество раз, когда число может быть использовано, поэтому я в основном ищу либо способ сделать «двойные переменные», либо способ их обойти:

@echo off
color 0a
set 1=13
set 2=13
set 3=13
set 4=13
:loop
if %counter%==0
goto :skip

set /a card=%random%*4/32767+1
set %card%=%%card%%-1
goto :loop
:skip

....

1 Ответ

0 голосов
/ 13 декабря 2018

Я думаю, что это логика, к которой вы стремитесь.Ваше предположение было верным.Вам нужно двойное расширение переменных.Это может быть достигнуто двумя способами.С отложенным расширением или с помощью команды CALL.Я выбрал последнее.Для примера я установил счетчик на 13 и продолжал выводить содержимое каждой из переменных после каждого цикла.

@echo off

set _1=13
set _2=13
set _3=13
set _4=13
set "counter=13"
:loop
IF "%counter%"=="0" goto skip
set /a card=%random% %% 4 +1
call set /a _%card%=%%_%card%%% - 1

echo _1=%_1%
echo _2=%_2%
echo _3=%_3%
echo _4=%_4%
set /a counter-=1
goto :loop
:skip
pause

РЕДАКТИРОВАТЬ: Теперь, когда я снова посмотрю на это, вам на самом деле не нужно использоватьCALL на всех или отложенное расширение, потому что команда SET позаботится об этом за вас.

@echo off

set _1=13
set _2=13
set _3=13
set _4=13
set "counter=13"
:loop
IF "%counter%"=="0" goto skip
set /a card=%random% %% 4 +1
set /a _%card%-=1

echo _1=%_1%
echo _2=%_2%
echo _3=%_3%
echo _4=%_4%
set /a counter-=1
goto :loop
:skip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...