Lote / Windows: Números aleatórios
-
05-07-2019 - |
Pergunta
Estou desenvolvendo um jogo de cartas para lote. [Vai dar um link quando feito]
basiclly o que eu quero fazer é 'set' '% aleatório%' para '% entorpece%.
set %numbs%=%random%
E então eu quero que o usuário digite um valor da% números aleatórios% exibida
echo %numbs%
Set nuchoo=
set /p nuchoo=Number:
O que a minha questão agora é sobre como verificar se o valor digitado pelo usuário é no valor% entorpece%. Se for,
GOTO :validnucho
Se não,
GOTO :unvalidnucho
Quando ele vai para: validnucho, deve excluir esse número a partir do% entorpece% var. Ele faz questão, obviamente, se o% entorpece% var contém 2x o número, por isso, então ele deve excluir apenas um dos dois. O resto eu sei.
Solução
Este deve começar
Salvar o seguinte como Instr.cmd
@echo off
rem These two lines allow tracing to be turned on by entering
rem set TRACE=ECHO on the cmd line
if not defined TRACE set TRACE=rem
%TRACE% on
rem Allow use of delayed variable expansion using !
setlocal ENABLEDELAYEDEXPANSION
if /I [%1]==[Test] (
call :Test
goto :eof
)
:Instr
set mTestStr=%1
rem set /a does arithmatic
set /a TestIdx=0
set Found=N
set CopiedStr=
:startLoop
rem extract character at index TestIndx to test
set TestedChar=!mTestStr:~%TestIdx%,1!
rem echo TestedChar if trace is on
%TRACE% %TestedChar%
If [!TestedChar!]==[] (
goto :exitInstr
)
If [%TestedChar%]==[%2] (
rem Testedchar matchs search character,
rem so we have found the char we were looking for
if %Found%==Y (
set CopiedStr=%CopiedStr%%TestedChar%
)
set Found=Y
) else (
set CopiedStr=%CopiedStr%%TestedChar%
)
rem Increment Index
SET /a TestIdx=TestIdx+1
goto :startLoop
:exitInstr
rem endlocal but keep CopiedStr and Found
endlocal & set CopiedStr=%CopiedStr% & set Found=%Found%
goto :eof
:Test
call :Instr abcde c
call :Verify Y %Found% "call :Instr abcde c - Found"
call :Verify abde, %CopiedStr% "call :Instr abcde c - CopiedStr"
call :Instr abcde x
call :Verify N %Found% "call :Instr abcde x - Found"
call :Verify abcde, %CopiedStr% "call :Instr abcde x - CopiedStr"
call :Instr abcdec c
call :Verify Y %Found% "call :Instr abcdec c - Found"
call :Verify abdec, %CopiedStr% "call :Instr abcdec c - CopiedStr"
echo Tests Done
goto :eof
:Verify
set Expected=%1
set Expected=%Expected:"=%
set Actual=%2
set Actual=%Actual:"=%
set Msg=%3
set Msg=%msg:"=%
If not "%Expected%"=="%Actual%" (
echo Failed: Expected "%Expected%" but was "%Actual%" - %Msg%
) else (
echo OK Expected "%Expected%" - %Msg%
)
goto :eof
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow