Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: UlisesBritos en Abril 04, 2012, 09:36:41 PM

Título: Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: UlisesBritos en Abril 04, 2012, 09:36:41 PM
Como algunos saben, estoy haciendo un juego de peleas y quiero hacer algo así.

Numero aleatorio:
Si toca 1:
Mover atrás.
Si toca 2:
Mover adelante.
Si toca 3:
Mover hacia arriba.
Si toca 4:
Mover hacia abajo.
Si toca 5:
Atacar.
Si toca 6:
Cubrirse.

Alguna ayudita?
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: Ciberman en Abril 04, 2012, 09:39:28 PM
revisa en el manual la sentencia Switch y la funcion irandom
(el manual no muerde)
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: UlisesBritos en Abril 04, 2012, 09:43:38 PM
Cita de: Ciberman en Abril 04, 2012, 09:39:28 PM
revisa en el manual la sentencia Switch y la funcion irandom
(el manual no muerde)
jajaj Si lo se (xD) pero es que el manual entero nunca lo termino y sabia que alguien me iba a decir una parte especifica xD!

EDITO: En que categoria del GML está? No lo encuentro :(
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: Ciberman en Abril 04, 2012, 09:51:06 PM
El Switch está en Estructura general del GML
y el irandom está en Trabajando con Reales (o algo asi se llamaba)

EDIT: el irandom no está en GM6 por lo que no lo vas a encontrar en el manual en español, usa el que está en ingles del Game Maker (apretá F1 en el programa)
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: ferhand en Abril 04, 2012, 09:51:57 PM
Makero UlisesBritos:

si lo que quieres es esto:  ;)


Cita de: UlisesBritos en Abril 04, 2012, 09:36:41 PM
Como algunos saben, estoy haciendo un juego de peleas y quiero hacer algo así.

Numero aleatorio:
Si toca 1:
Mover atrás.
Si toca 2:
Mover adelante.
Si toca 3:
Mover hacia arriba.
Si toca 4:
Mover hacia abajo.
Si toca 5:
Atacar.
Si toca 6:
Cubrirse.

Alguna ayudita?


   El "switch statement" es lo que necesitas.  ;D  Mira como quedaría:

variable = número_aleatorio;

switch(variable)
{
    case 1:
        mover atrás;
    break;
    case 2:
        Mover adelante;
    break;
    case 3:
        Mover hacia arriba;
    break;
    case 4:
        Mover hacia abajo;
    break;
    case 5:
        Atacar;
    break;
    case 6:
        Cubrirse;
    break;
}

  ¿Qué es lo que hace realmente?   ???
   
   Toma el valor de la variable "variable" y realiza las acciones que estén en el caso "case" que le corresponda. La sentencia "break" garantiza que salga del "switch" sin realizar otras acciones.  ;D

  Espero te sirva de ayuda.  :D

  Gracias por la atención prestada y disculpen las molestias ocasionadas.

Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: UlisesBritos en Abril 04, 2012, 10:26:01 PM
Makero Ferhand (Feel Like Ferhand):

Entonces lo que tendría que hacer seria...

variable = 1;

switch(variable)
{
    case 1:
        poner los comandos: mover atrás;
    break;
    case 2:
        poner los comandos: Mover adelante;
    break;
    case 3:
        poner los comandos: Mover hacia arriba;
    break;
    case 4:
        poner los comandos: Mover hacia abajo;
    break;
    case 5:
        poner los comandos: Atacar;
    break;
    case 6:
        poner los comandos: Cubrirse;
    break;
}


???
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: MaanuRP en Abril 04, 2012, 10:45:58 PM
Nono, lo que debes hacer es:


variable = irandom(3) //Esto te va a dar valores entre 0 y 3 aleatorios.
switch(variable) //Esto va a actuar dependiendo del valor que dio la variable.
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: ferhand en Abril 04, 2012, 10:46:41 PM
Makero UlisesBritos:

  En la parte en que le asignas el número uno (1) a la variable "variable" la estás condenando a tener un solo valor, el valor uno (1).  >:(

Cita de: UlisesBritos en Abril 04, 2012, 10:26:01 PM
Makero Ferhand (Feel Like Ferhand):

Entonces lo que tendría que hacer seria...

[color=blue]variable = 1;[/color]

switch(variable)
{
    case 1:
        poner los comandos: mover atrás;
    break;
    case 2:
        poner los comandos: Mover adelante;
    break;
    case 3:
        poner los comandos: Mover hacia arriba;
    break;
    case 4:
        poner los comandos: Mover hacia abajo;
    break;
    case 5:
        poner los comandos: Atacar;
    break;
    case 6:
        poner los comandos: Cubrirse;
    break;
}


???

    El valor de la variable "variable" debería ser el resultado del generador de números aleatorios. Cada vez que se genere un número por el generador de números aleatorios que designes, este resultado debes guardarlo en la variable. Luego la variable se revisará, utilizando la sentencia "switch", para realizar las acciones según el número que contenga la variable "variable".

  Si le asignas un valor determinado a la variable "variable" solo realizará las acciones correspondientes al caso "case" de ese valor.  ¿Comprendes?  ???

  Una pregunta: ¿Sabes algo de GML?   :-\

  En caso de responder NO, te sugeriría que siguieras los "tutoriales" presentes en "Yoyogames" uno tras otro ya que están acordes para dominar la herramienta "Game Maker".   :D

  En caso de responder SÍ, deberías entender lo que estoy tratando de explicarte.  :-\

  De todas formas pregunta cuanto quieras, estamos aquí para eso.  ;D

  Gracias por la atención prestada y disculpa las molestias ocasionadas.   :D
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: UlisesBritos en Abril 04, 2012, 10:58:40 PM
SI, se algo de GML, pero lo que yo no se hacer es que la variable se cambie aleatoriamente... para hacer la IA del enemigo... (Creo que se me entendió, No?) por eso por ahora el código seria ese, quiero saber que agrego para que se cambie automaticamente durante el juego.

EDITO: Recien veo lo que dijo MaanuRP xD! Ya está creo, cualquier cosa vuelvo a hablar.  :-\
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: ferhand en Abril 04, 2012, 11:16:40 PM
Makero UlisesBritos:


   Disculpame si parecí algo duro en el "post" anterior, el problema es que en un foro no se ven los rostros de los interlocutores y las palabras se "sienten secas".  :D 

  Nada tiene que ver eso en este caso. Todo está dicho de buena "onda", con el mejor interés en que aprendas.  :-[

  Al tema:  :-[

  No se que versión de GM usas, pero para las versiones nuevas, el generador de números aleatorios que se usa es como dice el makero MaanuRP.    :D

  En cuanto a que:
Citarquiero saber que agrego para que se cambie automaticamente durante el juego.

    Todo depende de la frecuencia con que quieras que suceda.  :D Puedes usar los eventos "Alarm" para realizarlo con mucha precisión. Solo tendrías que tener en cuenta que cada treinta (30) "steps" sucede un segundo, más o menos, por lo que al ponerle valor al evento "Alarm" debes observar eso.  ;)

  No se que más decir...  :-\

  Gracias por la atención prestada y disculpa las molestias causadas.   
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: UlisesBritos en Abril 05, 2012, 12:02:18 AM
Makero Ferhand:

No, no me pareciste duro xD, ahora tengo otro problema con esto mismo, ya que no se usar las alarms  :-[

Bueno, la única forma que se usar con los steps es usar una TimeLine, pero haciendo eso tendria que crear una timeline por cada personaje que controle la pc (esto digo por los cambios de sprite)

Bueno, no se de que manera solucionarlo.

PD: Acabo de subir el alpha 2 de mi juego donde podrás ver como he utilizado la TimeLine para la IA de Goku.

http://dl.dropbox.com/u/70269844/DBZ%20Experimento%20X%20Alpha%202.exe
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: ferhand en Abril 05, 2012, 12:52:52 AM
Makero UlisesBritos:

  Lo siento, no tengo acceso a "dropbox" por lo que no podré ver tu ejemplo.  :'( Debes subirlo a la ComuniddaGM como adjunto al tu respuesta.   :-[

  El evento "Alarm" es como un reloj que seleccionamos un tiempo y llegado el momento realiza un sonido.  :D

  Los eventos "Alarm" se usan así:

  1*  creas el evento "Alarm_0" y dentro del evento escribes el código que contiene al "switch".
  2*  En el evento que decide cuando ejecutar las acciones aleatorias, por ejemplo el botón "enter", debe tener una línea más o menos así:
      alarm[0] = 4;

  En este caso, cada vez que se ejecute el evento que disparará las acciones aleatorias, el botón "enter", este le dirá al evento "Alarm_0" que debe ejecutar todas las acciones en cuatro (4) "steps".

  Claro, un segundo tiene treinta (30) "steps", por lo que debes calcular cuan rápido quieres que se dispare el evento "Alarm".   ;)

  Puedes usar varios eventos "Alarm": alarm[0], alarm[1], etc. Solo que debes asegurarte de dar valores de comienzo a la alarma que deseas.   :D


    No se que más decir...   :-\

  Gracias por la atención prestada y disculpa las molestias causadas.   
   
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: UlisesBritos en Abril 05, 2012, 01:00:19 AM
Ferhand:

Dos cosas:

1-El enlace de Dropbox es publico, no lo necesitas para descargar ese alpha y de todas maneras está adjunto en el post juegos en desarrollo.

2-Lo de alarm creo que lo entendi, pero como hago si por ejemplo (Con D&D) yo pongo en create set alarm 15 step (medio segundo) y selecciono mi alarm, que evento tengo que poner para que la alarm se repita sin que tenga que ponerlo en step?
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: ferhand en Abril 05, 2012, 01:08:45 AM
Makero UlisesBritos:

Cita de: UlisesBritos en Abril 05, 2012, 01:00:19 AM1-El enlace de Dropbox es publico, no lo necesitas para descargar ese alpha y de todas maneras está adjunto en el post juegos en desarrollo.

   Hay muchos "posts" en "Juegos en Desarrollo".   :-X ¿A cual de ellos te refieres?  ???

Cita de: UlisesBritos en Abril 05, 2012, 01:00:19 AM2-Lo de alarm creo que lo entendi, pero como hago si por ejemplo (Con D&D) yo pongo en create set alarm 15 step (medio segundo) y selecciono mi alarm, que evento tengo que poner para que la alarm se repita sin que tenga que ponerlo en step?

    Debes poner "set alarm" en el evento que originalmente iba a disparar las acciones.  :D ¿No estabas diseñando una IA?  ??? Pues la IA debe "setear la alarma" cuando tiene pensado hacerlo.  :-\

   Para mayor instantaneidad te recomiendo un (1) "step", no quince (15).    8)

   Gracias por la atención prestada y disculpa las molestias causadas.    :-[
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: UlisesBritos en Abril 05, 2012, 01:15:14 AM
1: El que está arriba del todo... xD

2: Pero lo que te digo, es que la IA, la tenia en step y quedaba terriblemente mal los movimientos por la velocidad en los que lo hacia (osea en cada step) por lo tanto luego lo pase a una TimeLine pero si lo usaba así tendria que crear una timeline para cada IA Enemiga, ahora, la IA la pongo directamente en el alarm 1 (el 0 ya lo ocupé)
y en create pongo el set alarm de main 1, pongo 15 para que haga un movimiento cada 1/2 segundo y selecciono la alarma 1, aqui radica mi duda ¿Cómo hago que se repita la alarma al terminar?
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: ferhand en Abril 05, 2012, 01:21:35 AM
Makero UlisesBritos:

  Muy sencillo.   XD

  Le "seteas la alarma" dentro del mismo evento Alarma que necesitas que se ejecute otra vez.  :D

  No se si entiendes.  :-[

  Cuando la alarma vaya a terminar, las últimas líneas del código deben ser el nuevo "set alarm". Así cuando salga de la alarma ya tiene un tiempo para empezar.  XD

Gracias por la atención prestada y disculpa las molestias causadas.    ;D
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: UlisesBritos en Abril 05, 2012, 01:47:08 AM
Molestias? eso tengo que decir yo ferhand gracias ya lo he solucionado.

Nos veremos cuando tenga otra duda (?) ~UlisesBritos
Título: Re:Cómo hacer que el enemigo haga movimientos por probabilidades.
Publicado por: Zeit en Abril 05, 2012, 08:03:58 PM
Hola, te invito a usar el buscador, aqui un tema donde habla de probabilidades que tambien se puede aplicar a tu problema:

http://www.comunidadgm.org/index.php?topic=16539.0 (http://www.comunidadgm.org/index.php?topic=16539.0)

Aqui escribi un metodo cuando las probabilidades no son las mismas para cada objeto (en tu caso accion), saludos.