Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: ordo_ab_chao en Febrero 23, 2014, 08:21:01 PM

Título: Duda con choose();
Publicado por: ordo_ab_chao en Febrero 23, 2014, 08:21:01 PM
Hola comunidad!!! hace tiempo que no volvía, y que gusto me da ver tan llena de vida la comunidad  :D

bueno vamos al punto, quisiera saber que tan random es la función choose, ya que la utilizo para escoger al azar un personaje enemigo con el siguiente codigo:
if (global.GameMode=="PvsC" and select1_obj.elegir==0 and ele==1)
{
    ele=0;
    fila=choose(0,1,2,3);
    if (fila<2) columna=choose(0,1);
    else columna=choose(0,1,2,3,4);   
}


según yo el algoritmo funciona para escoger un personaje en  una room de elección de la siguiente forma :
(http://i59.tinypic.com/2epqzxf.png)
el problema es que siempre se repiten las elecciones, si alguien tiene algún consejo se los agradecería mucho :)
Título: Re:Duda con choose();
Publicado por: DarkKRuleR en Febrero 23, 2014, 08:31:15 PM
Primero, eso no es realmente aleatorio. Ahí estás diciendo que la probabilidad de que toque alguno de las dos primeras filas, es igual a que toque de las dos últimas. Y no es cierto, pues el número de jugadores no es el mismo. En todo caso, arriba hay 4, abajo 10. Abajo hay 2.5 más. Por lo tanto, deberías hacer un random(29) para que toque alguna de las dos filas superiores y un random(71) para las dos inferiores, no como ahora, que estás haciendo random(50) y random(50), lo cual sería cierto si hubiera el mismo número en ambas partes, pero arriba hay menos. Es decir, 14.5% que toque la primera fila, 14.5% la segunda, 35.5% la tercera y 35.5% la cuarta. Y ya en cada caso haces sin problemas un choose entre el número de columnas.

Los números habría que modificarlos si añades más casillas. Básicamente, por filas, hay 2, 2, 5 y 5. O sea, lo dividimos en 4/10. Eso es igual a 1/2.5. Por lo tanto, la probabilidad que toque en la parte superior es (1/3.5), y en la inferior (2.5/3.5) (dividimos el numero de cada parte entre la suma de las partes, es un tanto REBUSCADO pero creo que es cierto). No hay ninguna fórmula, lo he sacado aplicando lógica pura, si alguien ve que me he equivocado en algo que diga :)
Título: Re:Duda con choose();
Publicado por: ordo_ab_chao en Febrero 23, 2014, 08:38:21 PM
mmmmm creo que tiene mucho sentido lo que dices, voy a implementarlo y aviso que tal me fue, si fue eso fue un error muy tonto  :-[
Título: Re:Duda con choose();
Publicado por: penumbra en Febrero 23, 2014, 09:01:26 PM
Cita de: DarkKRuleR en Febrero 23, 2014, 08:31:15 PM
si alguien ve que me he equivocado en algo que diga :)

Según el makero ordo_ab_chao, el problema es que las elecciones siempre se repiten, es decir, se elige siempre lo mismo. Si no me equivoco, aunque modifique el porcentaje de probabilidad como le has sugerido. seguirán repitiéndose las mismas elecciones.

if (global.GameMode=="PvsC" and select1_obj.elegir==0 and ele==1)
{
    ele=0;
    randomize()   //<--------   prueba con esta función.
    fila=choose(0,1,2,3);
    if (fila<2) columna=choose(0,1);
    else columna=choose(0,1,2,3,4);   
}

Título: Re:Duda con choose();
Publicado por: ordo_ab_chao en Febrero 23, 2014, 09:12:08 PM
mejoroo bastante con esa función penumbra, muchas gracias por el dato, peroo creo que DarkKRuleR también tiene razón con lo de las probabilidades, gracias a los dos! :D