Ms-Dos - No se esperaba neg en este momento

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 2 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

No se esperaba neg en este momento

Publicado por Andre (2 intervenciones) el 15/08/2018 02:19:02
Acabo de crear un pequeño minijuego pero cuando lo intento abrir dice que no se esperaba neg en este momento aqui les dejo el codigo aver si encuentran el error tal vez sea obvio pero no lo he notado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
@echo off
title 'My game'
Color 0A
if "%1" neg "" ( goto %1% )
pause
exit
:Menu
cls
 echo "1. Inicio"
 echo "2.Instrucciones"
 echo "3.Salir"
 set /p answer 1
 if %answer%==1 goto "Inicio_1"
 if %answer%==2 goto "Instrucciones"
 if %answer%==3 goto "Salir"
  :"Salir"
  echo ¡Gracias por jugar!
  exit /b
  :"Instrucciones"
  cls
  echo "Instrucciones"
  echo.
  echo "¿En serio necesitas instrucciones?Bien,Escribe la opcion que elijas  ya lo se es muy dificil pero intenta aver que pasa ¿eh?
  pause
  goto Menu
  :Inicio_1
  cls
  echo "Estas en medio de la lluvia"
  echo "Encontraste una cabaña donde refugiarte"
  echo "Al dia siguiente encuentras a una pandilla de villanos.
  echo Sus fuerzas son:"
  echo "3 granjeros desarmados"
  echo "Tienes una alta probabilidad de ganar."
  Set /p answer= Quieres luchar o huir?
  if %answer%=="Luchar" goto "Luchar_1"
  if %answer%=="Huir goto "Huir_1"
  :Huir_1
  cls
  echo ¡Pudiste Huir!Pero ahora te encuentras mas perdido para tu suerte hay una gasolineria cerca
  echo entras en la gasolineria y vuelves a tu casa
  echo Tu cobardia hizo que ganaras el juego pero relmente lo ganaste?
  pause
  goto "Inicio_1"
  echo Elegiste luchar
  echo Se esta librando la batalla
  set /p answer=1
  if %answer%==1 goto Fight_1_Loop
  :"Luchar_1_Loop
  set /a num=%random%
  if %num% gtr 4 goto "Luchar_1_Loop
  if %num%==1 goto "Pierde_Luchar_1
  if %num%==2 goto "Gana_Luchar_1
  if %num%==3 goto "Gana_Luchar_1
  if %num%==4 goto "Gana_Luchar_1"
  :"Pierde_Luchar_1"
  cls
  echo Lo lamento perdiste la batalla ke sad
  pause
  goto Menu
  :"Gana_Luchar_1"
  cls
  echo ¡Increible!Derrotaste a el invencible Exodias espera que?, quise decir que ganaste la batalla
  set /p answer="Quieres Guardar"
  if %answer%== "Si" goto "Guardar"
  if %answer%== "No" goto "Inicio_2
  :"Guardar"
  goto "Inicio_2"
  :Inicio_2
  cls
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

No se esperaba neg en este momento

Publicado por Antoni Masana (811 intervenciones) el 15/08/2018 10:12:38
Línea 4: la condición esta mal.

La sintasis correcta seria esta

1
if      "%1" NEQ "" ( goto %1% )
o
1
if  not "%1"  =  "" ( goto %1% )

De todas formas sigue estando mal. En este caso los paréntesis no son necesarios y la etiqueta %1% no esta definida que no es lo mismo que %1, pero como como esto es Microsoft y trabajan como trabajan resulta que en el BAT si son iguales.

El BAT solo funciona bien si lo llamas y pones como parámetro la palabra Menu, cualquier otra cosa da un error.

Y tienes varios errores más.

Repasemos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@echo off
title 'My game'
Color 0A
if "%1" neg "" ( goto %1% )
    pause
    exit
 
:Menu
    cls
    echo "1. Inicio"
    echo "2.Instrucciones"
    echo "3.Salir"
    set /p answer 1                                ' ---Error de sitxasis
    if %answer%==1 goto "Inicio_1"
    if %answer%==2 goto "Instrucciones"
    if %answer%==3 goto "Salir"                    ' --- Que pasa si responde 4
 
:"Salir"
    echo ¡Gracias por jugar!
    exit /b
 
:"Instrucciones"
    cls
    echo "Instrucciones"
    echo.
    echo "¿En serio necesitas instrucciones?Bien,Escribe la opcion que elijas
    echo   ya lo se es muy dificil pero intenta aver que pasa ¿eh?
    pause
    goto Menu

:Inicio_1
    cs
    echo "Estas en medio de la lluvia"
    echo "Encontraste una cabaña donde refugiarte"
    echo "Al dia siguiente encuentras a una pandilla de villanos.
    echo Sus fuerzas son:"
    echo "3 granjeros desarmados"
    echo "Tienes una alta probabilidad de ganar."
 
    Set /p answer= Quieres luchar o huir?            ' --- Respuestas largas ERROR OJO nayusculas y minisculas
    if %answer%=="Luchar" goto "Luchar_1"            ' --- Usa la opcion /I en el IF (Ver IF /?)
    if %answer%=="Huir goto "Huir_1"
 
:Huir_1
    cls
    echo ¡Pudiste Huir!Pero ahora te encuentras mas perdido para tu suerte hay una gasolineria cerca
    echo entras en la gasolineria y vuelves a tu casa
    echo Tu cobardia hizo que ganaras el juego pero relmente lo ganaste?
    pause
    goto "Inicio_1"
 
    echo Elegiste luchar                             ' --- Este es codigo MUERTO
    echo Se esta librando la batalla
    set /p answer=1                                  '--- Y esto que es?
    if %answer%==1 goto Fight_1_Loop
 
:"Luchar_1_Loop
    set /a num=%random%
    if %num% gtr 4 goto "Luchar_1_Loop
    if %num% ==  1 goto "Pierde_Luchar_1            ' ---Etiqueta ERRONEA
    if %num% ==  2 goto "Gana_Luchar_1              ' ---Etiqueta ERRONEA
    if %num% ==  3 goto "Gana_Luchar_1              ' ---Etiqueta ERRONEA
    if %num% ==  4 goto "Gana_Luchar_1"

:"Pierde_Luchar_1"
    cls
    echo Lo lamento perdiste la batalla ke sad
    pause
    goto Menu

:"Gana_Luchar_1"
    cls
    echo ¡Increible!Derrotaste a el invencible Exodias espera que?, quise decir que ganaste la batalla
    set /p answer="Quieres Guardar"
    if %answer%== "Si" goto "Guardar"               ' --- No le encuentro sentido a las lineas de aquí al final
    if %answer%== "No" goto "Inicio_2               ' 
 
:"Guardar"
    goto "Inicio_2"                                 ' 
 
:Inicio_2
    cls

No he arreglado los errores porque no se que deseas hacer.
Las etiquetas de los GOTO ponlas sin las comillas, no son necesarias.
Así si se lee mejor el código, que funcionar funciona igual.

Para todos los SET /P si pulsa INTRO sin texto tendrás errores de sintaxis

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 2 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

No se esperaba neg en este momento

Publicado por Andre (2 intervenciones) el 15/08/2018 16:25:33
Gracias por cierto estaba intenatndo hacer un juego de elecciones ese que te dice elige 1 para luchar o elige 2 para huir y asi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar