Vergleichen Sie zwei zahlen in einer batch-Datei
Suchte ich diese Seite für meine Frage, aber ich habe nicht eine Lösung für mein problem.
Das system gibt eine zufällige Zahl für den Spieler und für den computer, von 2 bis 12.
Diese hat 3 Teile, wenn X größer als Y, wenn X kleiner als Y und X ist dasselbe wie Y.
Als ich Anfang der .bat
funktioniert es Super, ich wähle Play Game
, geben Sie mir die Wette (20 zum Beispiel), aber wenn ich diesen Vorgang starten, wird das Fenster geschlossen, und ich kann nicht Lesen, was er schrieb. Ich kann sehen, dass einige blinkende Texte, die ich gesehen habe 'Ihr' und 'syntax', aber es verschwindet sehr schnell.
Ich bin mir wirklich sicher, dass es geklappt hat, weil beim löschen der 3 if if if
Dinge, zeigt es mein Geld, Wette, Statistiken und alles, und ich kann auch verringern oder erhöhen Sie mit 'cheats', schrieb ich.
So, hier ist es:
set /p setbet=Please type a number to select bet:
if "%setbet%"=="1" set bet=20
if "%setbet%"=="2" set bet=50
if "%setbet%"=="3" set bet=100
if "%setbet%"=="4" set bet=150
if "%setbet%"=="5" set bet=200
if "%setbet%"=="6" set bet=250
if "%setbet%"=="7" set bet=300
echo.
echo Your bet is %bet%.
echo.
pause
cls
set /a money-=bet
set /a playernum=%random% %%12 +2
set /a enemynum=%random% %%12 +2
echo.
echo You roll: %playernum%
echo Enemy rolls: %enemynum%
echo.
if %playernum% LSS %enemynum%
(
echo Enemy wins. Please try again.
echo Your current money is %money%.
echo You lost %bet% money.
echo.
pause
goto INTRO
)
if %enemynum% LSS %playernum%
(
set /a money+=bet*2
echo You win.
echo Your current money is %money%.
echo You won %bet% money.
echo.
pause
goto INTRO
)
if %enemynum% EQU %playernum%
(
set /a money+=bet
echo It's a tie.
echo You won the bet (%bet%), but your money didn't changed.
echo Your money is now %money%.
echo.
pause
goto INTRO
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
1) Sie haben in der Nähe Ihre Letzte Klammer
2) Die syntax-Fehler ist hier :
Sollte es sein :
if %enemynum% EQU %playernum% (
3) Der Wert des Geldes variable wird falsch sein, wenn Sie angezeigt werden.
Es ist verursacht durch die zwei Fakten:
-> im Inneren ein FÜR oder ein, WENN die Variablen "erweitert" vor und nicht während der Ausführung des Befehls. ( erweitert = die variable ist remplaced durch seinen Wert )
Damit ändern Sie den Wert einer Variablen zu, und verwenden Sie es in der gleichen Schleife, die Sie verwenden sollten, die verzögerte expression.
Schreiben Sie SETLOCAL ENABLEDELAYEDEXPANSION am Anfang des Codes und der variable, deren ausbau verzögert werden sollte, umgeben von Ausrufezeichen anstatt Prozentzeichen.
So
echo Your current money is %money%.
gewordenecho Your current money is !money!.
4), müssen Sie escape Ihre Klammer im Fall der Krawatte :
echo You won the bet ^(%bet%^) but your money didn't changed.
5) Sie hat nicht den label-INTRO, damit Ihr
goto INTRO
fehlsollten Sie die Suche für
delayed expansion
(setlocal enabledelayedexpansion
) und zählen Sie Ihre Klammern: jeder öffnenden Klammer muss eine schließende man (es gibt Ausnahmen ich weiß, aber nicht hier). Die öffnende Klammer nachif
muss auf der gleichen Zeile wieif
. Dieif
parser Stoppt hier:%bet%)
denn dies ist die erste schließende Klammer nach dem letzten öffnen.