Ver la Versión Completa : [ CONSULTA ] Juego multijugador por turnos
KrLx_roller
01/02/12, 13:37:48
Estoy desarrollando un juego que tiene una base de juego parecida al Monopoly (por poner un ejemplo entre muchos otros), es decir, un juego por turnos y con varios jugadores.
Empieza el primer jugador, éste hace lo que el juego le dice que haga, si lo hace bien pasa al siguiente jugador. Si lo hace mal, se le añade una letra a ése único jugador y pasa al siguiente. Para que se entienda, el primer jugador que complete la palabra ERROR, será el perdedor. Si falla una vez tendrá la E, a la siguiente ronda del juego si vuelve a fallar tendrá una R y así sucesivamente.
He estado pensando en cómo hacerlo, y el único modo que se me ocurre es mediante IF. Todo IF. Es decir, que lo vaya comprobando todo: si hay más de un jugador pase al siguiente, que compruebe el numero de letras del jugador actual para añadir la siguiente... Lo que pasa es que no se si esto es perjudicial para el rendimiento del juego.
Lo que quiero saber es si hay algún método para hacer esto algo más sencillo, y no con tantos IF.
Gracias de antemano.
Un saludo!
kriogeN
01/02/12, 16:02:34
Sin ver el problema concreto no se decirte, aunque si el discriminante es el número de letras siempre puedes hacer un switch mejor que IFs seguidos.
De todas formas no te preocupes por el rendimiento, hacer 5 IFs por jugador (las letras de la palabra ERROR) no le supone nada al procesador.
KrLx_roller
01/02/12, 17:25:18
El problema que tengo es que no se como hacer que pase al siguiente jugador. En pantalla se muestra el texto Jugador1 con sus 3 letras ERR, éste pulsa un botón y, si existe un segundo jugador, que el texto en pantalla cambie a Jugador2 con sus correspondientes letras, y así sucesivamente.
KrLx_roller
04/02/12, 13:32:16
He intentado hacerlo con bucles pero se me descontrola, no se como hacerlo... Aquí te expongo un ejemplo "gráfico" de cómo tendría que ser con tan solo 2 jugadores:
Jugador 1 || X V // Si el jugador 1 falla 'X' se le añade la letra 'E' y pasa al jugador 2
E
Jugador 2 || X V // Si el jugador 2 falla 'X' se le añade la letra 'E' y pasa al jugador 1
E
Jugador 1 || X V // Si el jugador 1 falla 'X' se le añade la letra 'R' y pasa al jugador 2
ER
Jugador 2 || X V // Ahora el jugador 2 lo hace bien 'V' por tanto no se le añade letra y pasa al jugador 1 de nuevo
ER
Jugador 1 || X V // El jugador 1 vuelve a fallar y se le añade la 'R', turno del jugador 2
ERR
Jugador 2 || X V // El jugador 2 vuelve a hacerlo bien, no se le añade ninguna letra y turno del jugador 1
ER
Jugador 1 || X V // El jugador 1 vuelve a fallar, se le añade la letra 'O' y turno del jugador 2
ERRO
Jugador 2 || X V // El jugador 2 vuelve a dar en el clavo y turno del jugador 1
ER
Jugador 1 || X V // El jugador 1 vuelve a fallar, completa la palabra 'ERROR' y por tanto es el perdedor del juego
ERROR
Espero que hayas entendido el objetivo y funcionamiento del juego. Gracias por ayudarme.
Un saludo!
kriogeN
04/02/12, 15:03:54
Una clase jugador, en dicha clase están las letras que lleva acumuladas cada jugador, con un método set y otro get (lo suyo realmente sería una función que añade la letra correspondiente automáticamente, pero lo simplifico con set)
En la clase principal tienes 2 instancias de jugador (o de tantos jugadores como tengas), la activity se pinta según los datos del jugador actual, puedes añadirle letras y consultar sus letras, por lo tanto puedes saber cuando ese jugador pierde. Cuando termina su turno cambias al otro jugador.
Lo único que tienes que controlar en la Activity es quien es el jugador actual y cambiarlo al final del turno.
Esto realmente es el A, B, C de Java, como ya te he dicho varias veces no se puede (o no se debe) programar en Android sin conocer Java al detalle, o por lo menos como funciona la POO.
FartBomb
04/02/12, 17:26:03
usa un switch
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.