[RPGXP] Usando valores aleatorios en RPG

Avisos

Like Tree5Gracias
  • 3 Post By Alice
  • 1 Post By cosarara97
Respuesta
 
Herramientas Desplegado
  #1  
14/01/2014
Predeterminado Usando valores aleatorios en RPG
He visto en muchos foros que al trabajar valores aleatorios desde scripts muchos tienen problemas, es por ello que vengo a compartir un poco de ayuda.

¿Para que puedo utilizar los valores aleatorios?
  • Condicionar eventos
  • Generar codigos de amigo
  • Crear nuevas situaciones de juego

No se me ocurrio nada mas que poner así que me voy directo a la explicación.

En Ruby, podemos generar un valor aleatorio de la siguiente manera:
rand(X..Y)
rand(X...Y)
Lo que hace es definir un rango y elegir un valor cualquiera del mismo.
Sin embargo, en RPG Maker esto no trabaja de la misma manera. En RPG podemos definir únicamente el valor máximo.

Generando el valor aleatorio
Para generarlo basta con utilizar:
Código:
rand(X)
Y es todo :3

...
...
...

¡Pero no se queda ahí!
Si quieres trabajar con ese valor debes almacenarlo en una variable, según la situación es el tipo de variable, yo la almacenaré en una local.

Código:
variable = rand(9)
Con tu numero aleatorio almacenado en una variable puedes hacer gran cosa, a continuación un ejemplo y lo explicaré:

Código:
def menu
    opciones = [_INTL("4"),_INTL("Pocos"),_INTL("No sé"),_INTL("Muchos")]
    comandos = Kernel.pbMessage(_INTL("¿Cuantos hacks hay en wah?"),opciones)
    if comandos == 0
      elegirhack(4)
    elsif comandos == 1
    elsif comandos == 2
    elsif comandos == 3
    end
  end
Código:
def elegirhack(cantidad)
  @cantidad = cantidad
  @bloque = []
  if @cantidad == 4
Kernel.pbMessage("A continuación, introduce algunos de ellos.")
  @bloque[0] = Kernel.pbMessageFreeText(_INTL("¿Cómo se llama el hack?"),"",false,5)
  @bloque[1] = Kernel.pbMessageFreeText(_INTL("¿Cómo se llama el hack?"),"",false,5)
  @bloque[2] = Kernel.pbMessageFreeText(_INTL("¿Cómo se llama el hack?"),"",false,5)
  @bloque[3] = Kernel.pbMessageFreeText(_INTL("¿Cómo se llama el hack?"),"",false,5)
  Kernel.pbMessage("Se elegirá uno al azar.") if @cantidad == 4
  hackaleatorio(4) if @cantidad == 4
  end
end
Código:
def hackaleatorio(cantidad)
  if cantidad == 4
     [MENTION=25770]Aleatorio[/MENTION] = rand(3)
  end [MENTION=26553]lol[/MENTION]
      Kernel.pbMessage("Agrupando...")
       [MENTION=15149]Hack[/MENTION] = @bloque  [MENTION=25770]Aleatorio[/MENTION]]
    if  [MENTION=15149]Hack[/MENTION]almacenado.include?  [MENTION=15149]Hack[/MENTION])
       elegirhack(cantidad)
     else
         [MENTION=15149]Hack[/MENTION]almacenado.push  [MENTION=15149]Hack[/MENTION])
        Kernel.pbMessage("El hack elegido es: #  [MENTION=15149]Hack[/MENTION]}")
        continuarproceso equisdequisde
    end
end
EXPLICACIÓN
Primero he creado un menú sencillito :3, muestra 4 opciones siendo la primera la que continua la cadena.

Al elegir la primera opción se llama a otro método con un atributo en cuestión; cantidad. (4)

Se abre un array vacio y si la variable es igual a la especificada en el atributo, te da la oportunidad de introducir 4 valores que serán almacenados en el array definido.

Finalmente, este te lleva a otro método, en este último se almacena un valor aleatorio de 4 opciones en una variable de clase.
rand(3)
Se elige un valor del array correspondiente al resultado del valor aleatorio y se almacena en otra variable de clase.

Por ultimo paso, se compara si el valor de la variable existe ya en otro array, si existe vuelve a elegir un valor aleatorio, si no existe se almacena en el array y continua el proceso.


Es solo un ejemplo, se pueden utilizar para otras cosas, espero haberme explicado bien que he hecho un gran esfuerzo tratando de ser clara :s
Gracias: VGS, GeovaneFR y Evird

Última edición por KleinStudio; 26/05/2016 a las 20:42
  #2  
15/01/2014
Predeterminado Respuesta: Usando valores aleatorios en RPG
Genial, Muy bien tu aporte
Es de mucha ayuda, se pueden hacer varias cosas.
  #3  
07/09/2014
Predeterminado Re: Respuesta: Usando valores aleatorios en RPG
Dicho por Ciro Ver mensaje
lolo necropost



Eso no es del todo cierto. Se puede generar un número cualquiera en un rango haciendo algo como esto:

Código:
numerito=0 # Dando un valor a numerito
until numerito>=1000 && numerito<=1100 # Genera números de valor máximo 1100 hasta tener uno comprimido entre 1000 y 1100
numerito=rand(1100)
end
Para comprobar que eso funciona, bastaría con poner algo así:

Código:
Kernel.pbMessage("#{numerito}")
Y podremos comprobar que ese mensaje siempre mostrará un número comprimido entre 1000 y 1100.
Eso es algo así como súper sub-optimo (?). Mucho mejor:

Código:
def awesome_rand(min, max)
	return min + rand(max-min)
end
Gracias: C!ro
Respuesta

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 16:24.