Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: siuby en Junio 08, 2012, 06:52:55 AM

Título: asignar turnos
Publicado por: siuby en Junio 08, 2012, 06:52:55 AM
Intento hacer un juego de cartas pero me he quedado atrapado en este punto...  asignar turnos¡¡¡

-me gustaria q al seleccionar una carta, tenga que esperar X turnos para poderla convocar

-tambien me gustaria saber como empezar y finalizar los turnos de cada jugador (como yuguioh por ejemplo)

-al crear una instancia identificar su ID para asignarle un turno manual o automaticamente(asi todas las cartas pelearan en cadena y se volvera mas dinamico, eso creo)

PD1: con  una q me digan estare contentisimo y bastante agradecido


Título: Re:asignar turnos
Publicado por: FrogGer en Junio 08, 2012, 08:34:30 AM
 Genial, juego de cartas. Te puedo ayudar ya que hace bastante tiempo experimente creando uno. Es un tema dificil, ya que se basa en como programe cada uno.
 
La pregunta más facil de responder es la 3. Para obtener el ID de un objeto recien creado es asi:

id_objeto = instance_create(x, y, objeto)

Para usar esa id, basta con:

with(id_objeto) speed = 5

//Otra opcion

id_objeto.x = 15
id_objeto.y = 20


La segunda pregunta es más complicada, yo lo hago de la siguiente forma:

- Creo un objeto invisible llamado Control, es quien se encargará de asignar turnos y varias cosillas más.
- En el evento Create del objeto Control creo una variable llamada global.jugadorTurno = 1
- Agrego un evento Alarm[0] que tendrá todas las opciones de fin de turno

  En el juego, cuando se necesite terminar el turno de un jugador, se tiene que llamar al evento alarm[0] del Control

with(Control) alarm[0] = 1

Un ejemplo del codigo que funciona en alarm[0] del Control puede ser:

if global.jugadorTurno = 1
{
          show_message("Ha terminado el turno del jugador 1")
          //Hacer lo que quieras para terminar el turno
          global.jugadorTurno = 2
}
else
{
          show_message("Ha terminado el turno del jugador 2")
          //Hacer lo que quieras para terminar el turno
          global.jugadorTurno = 1
}


Ahora, con esa pequeña explicación puedes realizar la primera pregunta. Al seleccionar una carta, esta puede tener una variable con la cantidad de turnos que tienen que pasar para activarse. Al terminar el turno, en el evento alarm[0] de Control puedes restarle 1 al contador de la carta. El objeto Control o la misma carta pueden verificar si la carta ya esta lista para activarse, por ejemplo de esta manera

if cantTurnos <= 0
{
        //Se puede activar la carta
        puedeActivar = true
}


Y asi, te di una idea. Si me pudiste entender bien, si no solo pregunta :)
Título: Re:asignar turnos
Publicado por: siuby en Junio 08, 2012, 05:22:53 PM
gracias por la idea intentare  llevarlo al juego  8)