PDA

Ver la versión completa : Haciendo un juego (Trivial)



Thalyssien
05-04-2013, 19:28
Muy buenas a todos.

Llevo ya un par de semanas empezando un proyecto en equipo de un juego. El Trivial.

Por el momento el tema de las clases va bien. Tenemos los botones, el tablero y una base de datos creados. -- La base de datos es para las preguntas y respuestas y para almacenar las estadísticas de los jugadores --

La "movida" es que obviamente necesitamos unas fichas que se muevan hacia donde el usuario diga (izquierda/derecha/arriba/abajo), y en las posiciones que indique un dado.

Me gustaría (si no es mucho pedir) que si podéis echarme una manita vendría de lujo. He buscado por google pero he encontrado objetos en movimiento y no con objetos estáticos.

Más que la solución, busco que alguien pueda explicarme el como hacerlo con algunos ejemplos sencillos, luego ya sigo investigando y ampliando. Y si lo acabo os paso el juego si queréis jeje :D

Gracias de antemano.
Saludos!

markul
24-04-2013, 18:20
Pues haber,a mi se me ocurre una manera de hacerlo ,pero es costosa y complicada de hacer (no se con que lenguaje lo estais haciendo).
El asunto seria que tu por ejemplo tienes un tablero dibujado como fondo de tu formulario ,y simplemente es controlar la posicion de las casillas respecto a la posicion en la que estan en el formulario y para mover a un sitio u otro puedes generar una imagen de un circulo(ficha)en el que dependiedo de donde este (o donde comiences la partida y de lo que saque el dado pueda ir a una posicion determinada o no.
No se si te sirve de algo la idea ya que es un poco dificil de ver y de hacer y yo la verdad es que me explico como el culo jajaja . Un saludo.

Thalyssien
25-04-2013, 23:03
Pues haber,a mi se me ocurre una manera de hacerlo ,pero es costosa y complicada de hacer (no se con que lenguaje lo estais haciendo).
El asunto seria que tu por ejemplo tienes un tablero dibujado como fondo de tu formulario ,y simplemente es controlar la posicion de las casillas respecto a la posicion en la que estan en el formulario y para mover a un sitio u otro puedes generar una imagen de un circulo(ficha)en el que dependiedo de donde este (o donde comiences la partida y de lo que saque el dado pueda ir a una posicion determinada o no.
No se si te sirve de algo la idea ya que es un poco dificil de ver y de hacer y yo la verdad es que me explico como el culo jajaja . Un saludo.

El lenguaje que usamos es Java.
Al ser iniciados en programación no sabemos todas las funciones que nos puede aportar el JFrame, pero mirando y rebuscando vimos que se pueden poner o "declarar" las posiciones en el tablero con el GridLayout/FlowLayout/GridBagLayout, etc.

Estas funciones te dividen el tablero en partes iguales, por lo que el problema es que no sabemos como mirar la posición de cada parcela de esas funciones para mover la ficha. xD

Gracias por la respuesta. :)

foxwar
26-04-2013, 17:03
En mi opinión al dibujar el tablero lo tenéis que realizar con nuevas clases creadas "casillas", es decir, la clase tablero tiene que tener un arrayList de casillas, y cada casilla te pinta a ella misma, al crearlas les indicas la posición en el jframe. Si utilizas una imagen para dibujar todo el tablero luego os va a costar especificar donde se encuentra cada casilla. Pues vais a querer clicarla y mover la ficha no?

Saludos
PD: hacía mucho tiempo que no me pasaba por aquí. Espero seguir visitándoos.

Thalyssien
27-04-2013, 00:15
En mi opinión al dibujar el tablero lo tenéis que realizar con nuevas clases creadas "casillas", es decir, la clase tablero tiene que tener un arrayList de casillas, y cada casilla te pinta a ella misma, al crearlas les indicas la posición en el jframe. Si utilizas una imagen para dibujar todo el tablero luego os va a costar especificar donde se encuentra cada casilla. Pues vais a querer clicarla y mover la ficha no?

Saludos
PD: hacía mucho tiempo que no me pasaba por aquí. Espero seguir visitándoos.

Si, bueno, la idea es que al tirar el dado la ficha se mueva sola, ya que seguirá un patrón predeterminado para no complicarnos mucho la vida.
Si en el dado sale 5, pues se moverá 5 casillas.

Hoy hemos estado 2 horas mirándolo con el profesor, pero ni él sabía como hacerlo de lo que rebuscaba...enfin...la posible buena noticia es que tenemos un mes más para terminarlo! jaja (alivio)

Gracias. Saludos!

jackson
09-08-2017, 16:38
lo primero que tienes que tener es un array de 42 posiciones para el circulo de casillas

lo ideal seria declarar un array de estructura tipo:

struct juego {

bool JUGADOR1;
bool JUGADOR2;
bool JUGADOR3;
bool JUGADOR4;
bool JUGADOR5;
bool JUGADOR6;
};

struct juego TABLERO[42];

con este array de 42 posiciones controlariamos internamente, donde esta colocada cada ficha de quesitos pero OJO para controlar los quesitos que tiene cada uno tendriamos que tener variables o estructuras tambien tipo booleano para "comprobar" que quesitos tiene cada jugador durante la partida...y para los RADIOS de las RUEDAS tambien necesitariamos implementar una lógica que nos permita calcular cuando van de los puntos clave (quesitos de colores) al centro en una u otra direccion

Sabiendo en que CASILLA del circulo estamos, solo tendremos que ajustar el Bool de cada casilla conforme realizamos la funcion de movimiento poniendo a True las casillas que contengan JUGADORES y el resto de las casillas y todos los bool a False


dado este tablero (las coordenadas estan calculadas en este concretamente)

http://www.qualinost.tk/descargas/trivial.jpg

las coordenadas del circulo son:

CENTRO: 324,318
C0Quesito Amarillo: 324,54
C1Marron: 376,54
C2Blanca: 412,62
C3Verde: 446,76
C4Roja: 476,96
C5Blanca: 506,118
C6Azul: 532,142
C7Quesito Rosa: 560,182
C8Azul: 588,234
C9Blanca: 596,268
C10Marron: 602,302
C11Amarilla: 602,340
C12Blanca: 600,376
C13Roja: 592,414
C14Quesito Verde: 565,460
C15Roja: 536,508
C16Blanca: 510,535
C17Azul: 480,554
C18Rosa: 448,576
C19Blanca: 414,588
C20Amarilla: 378,600
C21Quesito Marron: 324,600
C22Amarilla: 272,600
C23Blanca: 234,592
C24Roja: 200,576
C25Verde 168,560
C26Blanca: 138,536
C27Rosa: 110,510
C28Quesito Azul: 84,460
C29Rosa: 60,414
C30Blanca: 48,378
C31Amarilla: 48,342
C32Marron: 46,342
C33Blanca: 52,266
C34Verde: 62,232
C35Quesito Rojo: 86,184
C36Verde: 118,142
C37Blanca: 144,116
C38Rosa: 174,92
C39Azul: 206,76
C40Blanca: 238,64
C41Marron: 272,54


y luego los radios de la rueda, el que baja desde el quesito AMARILLO hasta el centro:

ESCALERA 0
C0Quesito Amarillo: 324,54
C1Marron: 324,94
C2Azul: 324,132
C3Verde: 324,168
C4Rosa: 324,210
C5Rojo: 324,246

el resto de radios de la rueda te dejo que los calcules tu :

sabiendo estas coordenadas, luego solo es cuestion de dibujar 1) Tablero Vacio 2) Pintar las FICHAS en las coordenadas de casilla correspondiente a cada jugador y repetir la operacion de dibujado cada vez que se mueva una ficha

Thalyssien
09-08-2017, 23:06
lo primero que tienes que tener es un array de 42 posiciones para el circulo de casillas

lo ideal seria declarar un array de estructura tipo:

struct juego {

bool JUGADOR1;
bool JUGADOR2;
bool JUGADOR3;
bool JUGADOR4;
bool JUGADOR5;
bool JUGADOR6;
};

struct juego TABLERO[42];

con este array de 42 posiciones controlariamos internamente, donde esta colocada cada ficha de quesitos pero OJO para controlar los quesitos que tiene cada uno tendriamos que tener variables o estructuras tambien tipo booleano para "comprobar" que quesitos tiene cada jugador durante la partida...y para los RADIOS de las RUEDAS tambien necesitariamos implementar una lógica que nos permita calcular cuando van de los puntos clave (quesitos de colores) al centro en una u otra direccion

Sabiendo en que CASILLA del circulo estamos, solo tendremos que ajustar el Bool de cada casilla conforme realizamos la funcion de movimiento poniendo a True las casillas que contengan JUGADORES y el resto de las casillas y todos los bool a False


dado este tablero (las coordenadas estan calculadas en este concretamente)

http://www.qualinost.tk/descargas/trivial.jpg

las coordenadas del circulo son:

CENTRO: 324,318
C0Quesito Amarillo: 324,54
C1Marron: 376,54
C2Blanca: 412,62
C3Verde: 446,76
C4Roja: 476,96
C5Blanca: 506,118
C6Azul: 532,142
C7Quesito Rosa: 560,182
C8Azul: 588,234
C9Blanca: 596,268
C10Marron: 602,302
C11Amarilla: 602,340
C12Blanca: 600,376
C13Roja: 592,414
C14Quesito Verde: 565,460
C15Roja: 536,508
C16Blanca: 510,535
C17Azul: 480,554
C18Rosa: 448,576
C19Blanca: 414,588
C20Amarilla: 378,600
C21Quesito Marron: 324,600
C22Amarilla: 272,600
C23Blanca: 234,592
C24Roja: 200,576
C25Verde 168,560
C26Blanca: 138,536
C27Rosa: 110,510
C28Quesito Azul: 84,460
C29Rosa: 60,414
C30Blanca: 48,378
C31Amarilla: 48,342
C32Marron: 46,342
C33Blanca: 52,266
C34Verde: 62,232
C35Quesito Rojo: 86,184
C36Verde: 118,142
C37Blanca: 144,116
C38Rosa: 174,92
C39Azul: 206,76
C40Blanca: 238,64
C41Marron: 272,54


y luego los radios de la rueda, el que baja desde el quesito AMARILLO hasta el centro:

ESCALERA 0
C0Quesito Amarillo: 324,54
C1Marron: 324,94
C2Azul: 324,132
C3Verde: 324,168
C4Rosa: 324,210
C5Rojo: 324,246

el resto de radios de la rueda te dejo que los calcules tu :

sabiendo estas coordenadas, luego solo es cuestion de dibujar 1) Tablero Vacio 2) Pintar las FICHAS en las coordenadas de casilla correspondiente a cada jugador y repetir la operacion de dibujado cada vez que se mueva una ficha

Muchas gracias por responder el tema. Es de agradecer, pero ya han pasado 4 años jaja
De todas formas se agradece mucho. A alguien más le puede servir.

El proyecto salió bien y sin problemas. También fue fallo mío no comunicarlo debidamente! jeje

Un saludo.

clarinetista
11-08-2017, 11:22
A ti por volver y contárnoslo :D