elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Crear contadores multiples en batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear contadores multiples en batch  (Leído 3,267 veces)
RafaelTheHacker372

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Crear contadores multiples en batch
« en: 23 Diciembre 2020, 20:30 pm »

Hola este es mi primer post y quiera saber si me podian ayudar :P
Lo que estoy intentando hacer es que cuando un contador suba y llege a 20 empiece a bajar el otro contador. Este es el codigo que hice:

@echo off
set vida=30
set hambre=0
:inicio
cls
echo Vida: %vida%
echo Hambre:%hambre%
echo.
timeout /t 2 >nul
goto mashambre

:mashambre
set /a hambre= %hambre% + 3
if %hambre% EQU 20 (goto menosvida)
goto inicio

:menosvida
set /a vida= %vida% - 2
if %vida%  EQU 0 goto dead
goto inicio


:dead
exit

Pero el contador de hambre empieza a subir y el contador de vida no baja  :-( y queria saber si me podian ayudar en eso. Saludos!


En línea

Enderman_gray

Desconectado Desconectado

Mensajes: 7


Enderman sabe donde vives -w-


Ver Perfil
Re: Crear contadores multiples en batch
« Respuesta #1 en: 27 Diciembre 2020, 10:15 am »

Hola, buen día.

He revisado tu código y encontré lo siguiente.

En la linea de "mas hambre" tenemos el primer error:
Código:
...
if %hambre% EQU 20 (goto menosvida)
...
El código EQU significa "igual a", entonces, el hambre va subiendo en múltiplos de 3. Cuando llega a 18 y sube a 21, haciendo que el 20 nunca aparezca, y el comando dice "igual a 20".

Para solucionar esto, cambiemos el EQU por GEQ, que signica "mayor o igual a". Dejándolo así:
Código:
...
if %hambre% GEQ 20 (goto menosvida)
...
Aquí le decimos al programa que, cualquier número igual o superior a 20, el condicional se active.

Así, mientras el hambre sube y sube, la vida baja y baja y cuando llegue a 0, dirá que estás morido.

Y el resto del código está bien.

============

Código:
@echo off
set vida=30
set hambre=0
:inicio
cls
echo Vida: %vida%
echo Hambre:%hambre%
echo.
timeout /t 2 >nul
goto mashambre

:mashambre
set /a hambre= %hambre% + 3
if %hambre% GEQ 20 (goto menosvida)
goto inicio

:menosvida
set /a vida= %vida% - 2
if %vida%  EQU 0 goto dead
goto inicio


:dead
echo.
echo.
echo Muerto.
pause.
exit


En línea

Streuner Corporation.
CEO de USB File Resc.
Mudereded401

Desconectado Desconectado

Mensajes: 118


:$


Ver Perfil
Re: Crear contadores multiples en batch
« Respuesta #2 en: 29 Diciembre 2020, 17:55 pm »

Hola, buen día.

He revisado tu código y encontré lo siguiente.

En la linea de "mas hambre" tenemos el primer error:
Código:
...
if %hambre% EQU 20 (goto menosvida)
...
El código EQU significa "igual a", entonces, el hambre va subiendo en múltiplos de 3. Cuando llega a 18 y sube a 21, haciendo que el 20 nunca aparezca, y el comando dice "igual a 20".

Para solucionar esto, cambiemos el EQU por GEQ, que signica "mayor o igual a". Dejándolo así:
Código:
...
if %hambre% GEQ 20 (goto menosvida)
...
Aquí le decimos al programa que, cualquier número igual o superior a 20, el condicional se active.

Así, mientras el hambre sube y sube, la vida baja y baja y cuando llegue a 0, dirá que estás morido.

Y el resto del código está bien.

============

Código:
@echo off
set vida=30
set hambre=0
:inicio
cls
echo Vida: %vida%
echo Hambre:%hambre%
echo.
timeout /t 2 >nul
goto mashambre

:mashambre
set /a hambre= %hambre% + 3
if %hambre% GEQ 20 (goto menosvida)
goto inicio

:menosvida
set /a vida= %vida% - 2
if %vida%  EQU 0 goto dead
goto inicio


:dead
echo.
echo.
echo Muerto.
pause.
exit


  De hecho creo que al código le falta algo, ya que una vez se le baje la vida y nuevamente tenga más hambre, nunca más volvera a bajarle la vida ya que no se estableció que hambre fuera 0 nuevamente para volver a llegar al conteo. Aunque se podría calcular de manera un poco más compleja sacando los multiplos de 20. Por otra parte veo que hay un "goto" de más, que creo que es un poco innecesario .-.  Los GOTO extras le quitan aunque sean milisegundos de reacción en la ejecución, algo es algo xd.

Código:
@echo off
set vida=30
set hambre=0
set hambre_=0
:inicio
cls
echo Vida: %vida%
echo Hambre:%hambre%
echo.
timeout /t 2 >nul
goto mashambre

:mashambre
set/a hambre+=3
set/a hambre_+=3
if %hambre_% GEQ 20 (
set/a vida-=2
set hambre_=0
)
if %vida%==0 (goto dead)
goto inicio


:dead
echo.
echo.
echo Muerto.
pause>nul
exit

Saludos  ;D :rolleyes:
En línea

Pero aunque los que sepan me digan que no, yo sé muy bien que existe el lado oscuro del sol. – El lado soleado de la calle
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] Ejecutar multiples procesos
Scripting
EagleOneRaptor 5 7,224 Último mensaje 9 Mayo 2009, 07:08 am
por leogtz
un if con cálculos múltiples[BATCH]
Scripting
trolleoatodos 4 3,079 Último mensaje 21 Agosto 2013, 14:14 pm
por trolleoatodos
[Batch] Problema al leer múltiples niveles de subdirectorios
Scripting
z3nth10n 8 3,388 Último mensaje 26 Diciembre 2013, 17:47 pm
por z3nth10n
Cómo crear un pendrive maestro con múltiples instaladores de S.O
Noticias
wolfbcn 2 2,494 Último mensaje 22 Agosto 2016, 15:04 pm
por AsimoJMSR
Crear múltiples objetos y ejecutar ventanas
Programación C/C++
Diego_22 0 1,590 Último mensaje 22 Agosto 2017, 13:42 pm
por Diego_22
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines