Hola, buenas, después de muchísimo tiempo de inactividad aquí estoy.
Más inútil que nunca jajaj ;D
Tengo este script sencillo, que únicamente el objetivo de éste es obtener el porcentaje de un número y mostrarlo en pantalla.
En el fondo, por si no me expliqué bien, o mí código está malo(cosa que es muy probable, ya que no lo ejecuté porque estoy en Linux)
Pretendo consultar al usuario un número, por ejemplo 50.000
una vez teniendo esa cantidad, sacar 2% - 40% - 8% - 50% y mostrarlo en pantalla en el orden que puse en el script.
Fuerza : 1.000
Agilidad : 20.000
Vitalidad : 4.000
Energia : 2.500
Mí consulta es la siguiente, cómo puedo ejecutar éste script en Linux, o cómo pasarlo a otro lenguaje compatible con Linux.
pensé en html y ver si podía subirlo a algún hosting gratuito. Pero a pesar de qué indague y pedí ayuda en el foro, no pude lograr nada.
Por eso recurro a ésta sección, ya que antiguamente hice alguno que otro aporte. que quizás a alguien le sirvio.
Dejo mí codigo!!!
@echo off
title Stats
:menu
cls
echo.&&echo.
echo Ingresa Stats totales:
set /p stats =
echo Presiona Enter para obtener tus stats recomendados.
pause > nul
goto calcular
:calcular
cls
REM LOS NÚMEROS AQUÍ SUPONEN UN PORCENTAJE
set fuerza = 2
set agilidad = 40
set vitalidad = 8
set energia = 50
set porcieno = 100
echo.
set /a fz=%stats% * %fuerza%
set /a r1=%fz% / %porciento%
set /a ag=%stats% * %agilidad%
set /a r2=%ag% / %porciento%
set /a vt=%stats% * %vitalidad%
set /a r3=%vt% / %porciento%
set /a ene=%stats% * %energia%
set /a r4=%ene% / %porciento%
echo Procesando...
ping -n 3 localhost >nul
echo Fuerza : %r1%
echo Agilidad : %r2%
echo Vitalidad : %r3%
echo Energia : %r4%
echo.&&echo.
echo Presiona una tecla para volver al menu
pause >nul
goto menu
PD: Elektro, espero que sigas aquí y puedas darme una manito.
EDIT:
Buenas noches gente!
Disculpen la hora de la publicación, soy Chileno y aquí apenas es media noche!!!
si sabes lo minimo de programación es simple pasarlo a ya sea c++, python, javascript (no es necesario el server, solo te creas un html y listo) que los 3 son compatibles nativamente en la mayor parte de los linux, con algunas modificaciones podrías dejarlo listo para bash
lo unico que tienes que saber es que lo que está entre %% son las variables antes declaradas
Cita de: engel lex en 16 Octubre 2016, 05:59 AM
si sabes lo minimo de programación es simple pasarlo a ya sea c++, python, javascript (no es necesario el server, solo te creas un html y listo) que los 3 son compatibles nativamente en la mayor parte de los linux, con algunas modificaciones podrías dejarlo listo para bash
lo unico que tienes que saber es que lo que está entre %% son las variables antes declaradas
Ese es el problema, hace bastantes años atrás sólo aprendí Batch, hice un par de script, descubrí el ciclo del FOR y bueno, sólo eso tengo en mente, cómo podría ejecutar esa idea en Linux, si es en Bash, espero puedan instruirme por que desconozco.
Encontré la solución, ejecuté mediante Wine el script en .bat
el problema ahora es, cómo sacar porcentajes en batch... :o
Para sacar un porcentaje del número 50.000 podrías hacerlo así:
Set /A "num=50000"
Set /A "percent=50"
Set /A "result=(%num%*%percent%) / 100"
¿Te refieres a ese tipo de operación, verdad?, si con eso te es suficiente entonces ok, pero de todas formas deberías tener en cuenta que la capacidad de Batch está limitada a un valor entero de 32 bits (2.147.483.647) y olvídate de operaciones con decimales... es preferible que lo hagas en Ruby u otro lenguaje multi plataforma como los que ya te han mencionado.
Saludos!
Set /A "num=%numero%"
Set /A "percent=%p1%"
Set /A "result=(%num% * %percent%) / 100"
Es viable setear una variable con otra variable??
Los números que el usuario introducirá, irán aumentando 300,
Por ejemplo el siguiente valor que el usuario podría introducir sería, 50.300, luego 50.600, 50.900 y así sucesivamente, crees que podría funcionar??
La idea de este script es para un juego, en el cual de un número total nos arroja esos porcentajes para repartir esos puntos a los stats del personaje, los cuales son los más "optimos"
perdón, ¿vale la pena tanto laburo en batch? cuando podrías usar python(nativo en linux) o vbscript igual en windows. Donde ambos lenguajes proveen más funcionalidades.
Cita de: Geormarsch en 18 Octubre 2016, 21:12 PMEs viable setear una variable con otra variable??
Viable, sí, no hay problema en hacer eso que has hecho, pero todo incluso lo más sencillo carece de eficiencia al implementarlo en un lenguaje tan limitado como es Batch.
Desde el principio todos te hemos aconsejado que lo hagas en otro lenguaje, sencillamente deberías olvidarte de Batch no solo para este problema sino para todo lo demás, olvídalo de por vida y avanza un nivel para aprender lo básico de otro lenguaje, ¡solo lo básico he dicho!, con eso ya te sería más que suficiente y de mayor utilidad... mucho más útil que ignorar el consejo que se te ha dado desde el principio.
Aquí abajo puedes compprobar lo sencillo que sería el equivalente a ese Batch-script en Ruby, he intentado evitar estructurarlo correctamente y evitar modificarlo más de lo necesario al adaptarlo para que te resulte facil compararlo con el código original. El código es portable para Windows y Linux... o al menos debería (excepto el comando
CHCP, no se como manejará la terminal de Linux las codificaciones de texto/sets de caracteres)
script.rb#!/usr/bin/ruby
# -*- coding: Windows-1252 -*-
require 'io/console'
@stats = nil
def Main()
while true
SetUserInput()
puts('Presione cualquier tecla para continuar...')
STDIN.getch()
CalcStats()
print('Presione cualquier tecla para volver al menú...')
STDIN.getch()
end
end
def SetUserInput()
system("clear") or system('cls')
print('Ingrese el valor de estadísticas totales: ')
@stats = Integer(gets) rescue SetUserInput()
end
def CalcStats()
# LOS NÚMEROS AQUÍ SUPONEN UN PORCENTAJE
strPct = 2
agiPct = 40
vitPct = 8
enePct = 50
pctVal = 100
str = (@stats * strPct) / (pctVal)
agi = (@stats * agiPct) / (pctVal)
vit = (@stats * vitPct) / (pctVal)
ene = (@stats * enePct) / (pctVal)
# no deberías hacer esto de esperar 3 segundos intencionadamente, es absurdo.
system("clear") or system('cls')
puts('Procesando...')
sleep(3)
system("clear") or system('cls')
puts("Fuerza : #{str}\n"\
"Agilidad : #{agi}\n"\
"Vitalidad : #{vit}\n"\
"Energia : #{ene}\n\n")
end
system('(CHCP 1252)1>NUL')
Main()
__END__
No siempre te lo van a dar todo hecho, aprende un lenguaje para lo que necesites, no cuesta nada aprender lo más básico de lo básico que en este caso sería aprender a imprimir texto, usar los operadores aritméticos, y quizás los tipos de búcles, fin.
Saludos!
Toda la razón, me iré por python y veré que sucede respecto al Script.
Gracias totales.