Batch Spiel; nummer --> GEQ, LEQ Problem

Guten Tag,

ich habe wieder ein batch-Programmierungs-Problem.
Dieses Mal wollte ich ein Spiel machen, bei dem zwei spieler nacheinander eine zahl zwischen 1 und 100 wählen und sobald eine falsche eingabe gemacht wird (wie zb „a“ oder „105“ oder so) wird man woandershin weggeleitet. Hier der Code:

@echo off
title Zahlen Raten!

setall

set number1=0
set number2=0

setnamep1

cls
echo Spieler 1, bitte Namen eingeben!
echo falls der Name Spieler 1 sein soll, bitte „Sp1“ eingeben.
set /p namep1=
if /i %namep1%== sp1 goto no.ch
goto setnamep2
exit

no.ch

set namep1=Spieler 1
goto setnamep2
exit

setnamep2

cls
echo Spieler 2, bitte Namen eingeben!
echo falls der Name Spieler 2 sein soll, bitte „Sp2“ eingeben.
set /p namep2=
if /i %namep2%== sp2 goto no.ch2
goto nxt1
exit

no.ch2

set namep2=Spieler 2
goto nxt1
exit

nxt1

cls
echo Der Name von Spieler 1 lautet „%namep1%“.
echo Der Name von Spieler 2 lautet „%namep2%“.
pause>nul
goto nxt2
exit

nxt2

cls
echo Spieler 1, bitte jetzt eine Zahl zwischen 1 und 100 eingeben.
echo Spieler 2, bitte jetzt wegschauen!
set /p number11=
set /a number1=%number1%+%number11%
if %number1%==GEQ 101 goto wrong
if %number1%==LEQ 0 goto wrong
cls
echo Spieler 2, bitte jetzt eine Zahl zwischen 1 und 100 eingeben.
echo Spieler 1, bitte jetzt wegschauen!
set /p number22=
set /a number2=%number2%+%number22%
if %number2%==GEQ 101 goto wrong
if %number2%==LEQ 0 goto wrong
cls
echo Spieler 1 Eingabe: %number1%
echo Spieler 2 Eingabe: %number2%
pause>nul
exit

wrong

cls
echo Falsche Eingabe!
echo Neustart.
pause>nul
goto nxt2
exit

set0

set number1=0
set number2=0
goto nxt2

so, was nun? Hier (http://www.youtube.com/watch?v=QdswR4ChM1E) habe ich gelesen, dass die Befehle GEQ und LEQ richtig sein sollen, doch funktionieren tut das i-wie nicht…

auf den ersten blick:
GEQ und LEQ sind die Operatoren die Vergleichen. Ich habs kurz selber ausprobiert, wenn du die == weglässt und dann GEQ oder LEQ einträgst dürfte es funktionieren.

Hier mein Versuch:

@echo off
set number1=1
set number2=5
if %number1% geq %number2% goto right
goto wrong

wrong

echo falsch
pause
exit

right

echo richtig
pause
exit

Grüße
neo

Hab’s ausprobiert, funktioniert bei mir aber komischer Weise nicht. Die batch Datei schließt sich dann immer! O.O
Hier der neue Inhaltscode (weil ich schon ein wenig dran rumgespielt habe):

@echo off
title Zahlen Raten!

setall

set number1=0
set number2=0
set think1=0
set think2=0
set pointsP1=0
set pointsP2=0

setnamep1

cls
echo Spieler 1, bitte Namen eingeben!
echo falls der Name Spieler 1 sein soll, bitte „Sp1“ eingeben.
set /p namep1=
if /i %namep1%== sp1 goto no.ch
if /i %namep1%== sp2 goto no.ch11
goto setnamep2
exit

no.ch

set namep1=Spieler 1
goto setnamep2
exit

no.ch11

set namep1=Spieler 2
goto setnamep2
exit

setnamep2

cls
echo Spieler 2, bitte Namen eingeben!
echo falls der Name Spieler 2 sein soll, bitte „Sp2“ eingeben.
set /p namep2=
if /i %namep2%== sp2 goto no.ch2
if /i %namep2%== sp1 goto no.ch22
goto nxt1
exit

no.ch2

set namep2=Spieler 2
goto nxt1
exit

no.ch22

set namep2=Spieler 1
goto nxt1
exit

nxt1

cls
echo Der Name von Spieler 1 lautet „%namep1%“.
echo Der Name von Spieler 2 lautet „%namep2%“.
pause>nul
goto nxt2
exit

nxt2

cls
echo %namep1%, bitte jetzt eine Zahl zwischen 1 und 100 eingeben.
echo %namep2%, bitte jetzt wegschauen!
set /p number11=
set /a number1=%number1%+%number11%
if %number11%== reset goto setall
if %number11%== exit goto end
if %number1% GEQ 101 goto wrong
if %number1% LEQ 0 goto wrong
cls
echo %namep2%, bitte jetzt eine Zahl zwischen 1 und 100 eingeben.
echo %namep1%, bitte jetzt wegschauen!
set /p number22=
set /a number2=%number2%+%number22%
if %number22%== reset goto setall
if %number22%== exit goto end
if %number2% GEQ 101 goto wrong
if %number2% LEQ 0 goto wrong
cls
echo %namep1%, bitte jetzt eine die Zahl von %namep2% schatzen.
echo %namep2%, bitte jetzt wegschauen, falls %namep1% das verlangt!
set /p think11=
set /a think1=%think1%+%think11%
if %think11%== reset goto setall
if %think11%== exit goto end
if %think1% GEQ 101 goto wrong
if %think1% LEQ 0 goto wrong
cls
echo %namep2%, bitte jetzt eine die Zahl von %namep1% schatzen.
echo %namep1%, bitte jetzt wegschauen, falls %namep2% das verlangt!
set /p think22=
set /a think2=%think2%+%think22%
if %think22%== reset goto setall
if %think22%== exit goto end
if %think2% GEQ 101 goto wrong
if %think2% LEQ 0 goto wrong
goto finish11
exit

finish11

cls
echo Eingabe %namep1%: %number1%
echo Schatzung von %namep2%: %think2%
echo.
echo Eingabe %namep2%: %number2%
echo Schatzung von %namep1%: %think1%
pause>nul
goto fin
exit

fin

cls
if %number1%== %think2% goto p2sc
goto fin2
exit

fin2

cls
if %number2%== %think1% goto p1sc
goto fin3
exit

fin3

cls
goto finfin
exit

p2sc

cls
set /a pointsP2=%pointsP2%+1
goto fin2
exit

p1sc

cls
set /a pointsP1=%pointsP1%+1
goto fin3
exit

finfin

cls
echo Punktestand:
echo %namep1%: %pointsP1%
echo %namep2%: %pointsP2%
pause>nul
goto set0
exit

wrong

cls
echo Falsche Eingabe!
echo Neustart.
pause>nul
goto nxt2
exit

set0

set number1=0
set number2=0
set think1=0
set think2=0
goto nxt2

end

cls
echo Spiel beendet.
ping localhost -n 2 >nul
exit

Ich hoffe, du kannst mir weiterhelfen.

MfG
Kirschi

Anhang: Inzwischen, anstatt dass sich die batc Datei schließt, geht es nach Eingabe der 2. Zahl (etwa bei
„echo %namep2%, bitte jetzt eine Zahl zwischen 1 und 100 eingeben.
echo %namep1%, bitte jetzt wegschauen!“) andauernd und automatisch zur Option :wrong, auch, wenn nichts falsch eingegeben wurde! O.O

komisch. ich habe ein Testprogramm auf dem selben Prinzip geschieben, das funktioniert! WTF?! O.O
Hier der Code dafür:

@echo off
title Zahlentest

settings

set number=0

main

cls
echo Bitte gib hier eine Zahl zwischen 10 und 50 ein.
set /p zahl=
set /a number=%number%+%zahl%
if %number% GEQ 51 goto gro
if %number% LEQ 9 goto kle
goto rig
exit

rig

cls
echo Richtige Eingabe.
echo Deine Zahl war %number%.
pause>nul
exit

gro

cls
echo Testeingabe.
echo Deine Zahl war zu gross.
echo Deine Zahl war %number%.
pause>nul
exit

kle

cls
echo Testeingabe.
echo Deine Zahl war zu klein.
echo Deine Zahl war %number%.
pause>nul
exit

nochmal: Das hier funktioniert! Was ist der unterschied? ich raffs nicht…

MfG
Kirschi

Mein Gott, bin ich… geistesabwesend! Ich hab den Fehler gefunden! ich hatte das zurücksetzen der Zahlen vergessen!
Hier der funktionierende Code:

@echo off
title Zahlen Raten!

setall

set number1=0
set number2=0
set think1=0
set think2=0
set pointsP1=0
set pointsP2=0

setnamep1

cls
echo Spieler 1, bitte Namen eingeben!
echo falls der Name Spieler 1 sein soll, bitte „Sp1“ eingeben.
set /p namep1=
if /i %namep1%== sp1 goto no.ch
if /i %namep1%== sp2 goto no.ch11
goto setnamep2
exit

no.ch

set namep1=Spieler 1
goto setnamep2
exit

no.ch11

set namep1=Spieler 2
goto setnamep2
exit

setnamep2

cls
echo Spieler 2, bitte Namen eingeben!
echo falls der Name Spieler 2 sein soll, bitte „Sp2“ eingeben.
set /p namep2=
if /i %namep2%== sp2 goto no.ch2
if /i %namep2%== sp1 goto no.ch22
goto nxt1
exit

no.ch2

set namep2=Spieler 2
goto nxt1
exit

no.ch22

set namep2=Spieler 1
goto nxt1
exit

nxt1

cls
echo Der Name von Spieler 1 lautet „%namep1%“.
echo Der Name von Spieler 2 lautet „%namep2%“.
pause>nul
goto nxt2
exit

nxt2

cls
echo %namep1%, bitte jetzt eine Zahl zwischen 1 und 100 eingeben.
echo %namep2%, bitte jetzt wegschauen!
set /p number11=
set /a number1=%number1%+%number11%
if %number11% == reset goto setall
if %number11% == exit goto end
if %number1% GEQ 101 goto wrong
if %number1% LEQ 0 goto wrong
cls
echo %namep2%, bitte jetzt eine Zahl zwischen 1 und 100 eingeben.
echo %namep1%, bitte jetzt wegschauen!
set /p number22=
set /a number2=%number2%+%number22%
if %number22% == reset goto setall
if %number22% == exit goto end
if %number2% GEQ 101 goto wrong
if %number2% LEQ 0 goto wrong
cls
echo %namep1%, bitte jetzt eine die Zahl von %namep2% schatzen.
echo %namep2%, bitte jetzt wegschauen, falls %namep1% das verlangt!
set /p think11=
set /a think1=%think1%+%think11%
if %think11% == reset goto setall
if %think11% == exit goto end
if %think1% GEQ 101 goto wrong
if %think1% LEQ 0 goto wrong
cls
echo %namep2%, bitte jetzt eine die Zahl von %namep1% schatzen.
echo %namep1%, bitte jetzt wegschauen, falls %namep2% das verlangt!
set /p think22=
set /a think2=%think2%+%think22%
if %think22% == reset goto setall
if %think22% == exit goto end
if %think2% GEQ 101 goto wrong
if %think2% LEQ 0 goto wrong
goto finish11
exit

finish11

cls
echo Eingabe %namep1%: %number1%
echo Schatzung von %namep2%: %think2%
echo.
echo Eingabe %namep2%: %number2%
echo Schatzung von %namep1%: %think1%
pause>nul
goto fin
exit

fin

cls
if %number1%== %think2% goto p2sc
goto fin2
exit

fin2

cls
if %number2%== %think1% goto p1sc
goto fin3
exit

fin3

cls
goto finfin
exit

p2sc

cls
set /a pointsP2=%pointsP2%+1
goto fin2
exit

p1sc

cls
set /a pointsP1=%pointsP1%+1
goto fin3
exit

finfin

cls
echo Punktestand:
echo %namep1%: %pointsP1%
echo %namep2%: %pointsP2%
pause>nul
goto set0
exit

wrong

cls
echo Falsche Eingabe!
echo Neustart.
pause>nul
goto set0
exit

set0

set number1=0
set number2=0
set think1=0
set think2=0
goto nxt2

end

cls
echo Spiel beendet.
ping localhost -n 2 >nul
exit

Wenn du vergleichst, siehst du es auch. Gott, bin ich blind! xDD
Danke nochmal für deine Hilfe! :smiley:

MfG
Kirschi