Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Georgia en Febrero 16, 2016, 08:07:18 AM

Título: [resuelto] rondas(rounds) en juego de pelea
Publicado por: Georgia en Febrero 16, 2016, 08:07:18 AM
hola
me gustaría que me ayuden
como podría poner rondas(rounds) en mi juego sería un total de 5 rondas en un tiempo de 20 segundos cada una, y que al terminar las rondas se sumen los puntos para determinar al ganador.

disculpen que sea tanto, es que estoy iniciando con el game maker, ya busque sobre eso y no pude encontrar algo parecido a lo que quiero.
Título: Re:rondas(rounds) en juego de pelea
Publicado por: kostra en Febrero 16, 2016, 05:07:31 PM
evento create:
[gml]ronda = 0;
maximoderondas = 10; //el maximo que tendrá, 10 por ejemplo, cuenta la numero 0 o ponla que empiece en 1!!
alarm[0] = 20*room_speed; //20 son los segundos[/gml]

evento alarm0:
[gml]if ronda < maximoderondas {
    ronda++;
    alarm[0] = 20*room_speed; //igual que antes
    }
else {
    //codigo al final de la partida
    }[/gml]
Título: Re:rondas(rounds) en juego de pelea
Publicado por: Clamud en Febrero 16, 2016, 05:10:31 PM
Marth me ganó, de todos modos voy a mostrar lo que escribí, es una ligera variación.
¿Quieres hacer un juego de pelea al estilo Street Fighter?, si apenas comienzas con GameMaker no te recomiendo que lo hagas, un juego como ese requiere muchos conocimientos y mucho trabajo. Como sea, esta es la solución que se me ocurrió:

En un objeto controlador, en el evento Create, inicia una alarma de 20 segundos y una variable para contar las rondas
[gml]
alarm[0] = 20*room_speed;
ronda = 0;
[/gml]
Para dibujar los segundos, sin decimales, puedes hacer esto (en el evento Draw)
[gml]draw_text( x,y, string( alarm[0] div room_speed ));[/gml]
En el evento Alarm 0 (del controlador), guarda los resultados y restablece los puntos de los jugadores y sus posiciones. También revisa si se ha alcanzado el número máximo de rondas para terminar el juego.
[gml]
resultado1[ronda] = obJugador1.puntos; //puntos del jugador 1
resultado2[ronda] = obJugador2.puntos; //puntos del jugador 2

obJugador1.puntos = 0;
obJugador2.puntos = 0;

obJugador1.x = obJugador1.xstart;
obJugador1.y = obJugador1.ystart;
obJugador2.x = obJugador2.xstart;
obJugador2.y = obJugador2.ystart;

ronda += 1; //incrementar contador de rondas
if( ronda >= 5 ) //si es 5 el juego termina
{
    total1 = 0; //preparar variables
    total2 = 0;
    for( i=0; i<ronda; i+=1 )
    {
        total1 += resultado1; //sumar los resultados
        total2 += resultado2;
    }
   
    if( total1 > total2 ){
        //el jugador 1 gana
    }
    else if( total2 > total1 ){
        //el jugador 2 gana
    }
    else {
        //empate
    }
}
[/gml]
Faltan varios detalles dentro del código, pero esa es la idea.
Título: Re:rondas(rounds) en juego de pelea
Publicado por: kostra en Febrero 16, 2016, 05:20:37 PM
marth?? xD
Título: Re:rondas(rounds) en juego de pelea
Publicado por: Clamud en Febrero 16, 2016, 05:24:51 PM
Disculpa kostra, no se porqué me imaginé el nombre y el avatar de Marth  :-[
Título: Re:rondas(rounds) en juego de pelea
Publicado por: kostra en Febrero 16, 2016, 05:53:29 PM
será que la cerveza y las letras forman un barquito jaja
Título: Re:rondas(rounds) en juego de pelea
Publicado por: Georgia en Febrero 16, 2016, 07:40:18 PM
muchas gracias  :D