Muy buenas,
para iniciarme un poco con el XNA de Microsoft, estoy pensando en hacer un parchís con un colega.
Mi duda surge a la hora de implementar el tablero. Que seria mejor, un solo sprite y hacer cálculos para determinar en qué casilla estoy o hacer un sprite por casilla y currarme un "mapa" con todas las coordenadas de los sprites?
Gracias!
...
sepi, voto por el sprite unico para dominarlos a todos.
Si quieres, aparte de usar el sprite de fondo, puedes utilizar un mapa de texturas para ir señalandote cada casilla a la que tienes que mover cada ficha.
O guardarte las coordenadas de cada casilla e ir colocando ahi las fichas, solo necesitarias saber el numero de la ficha y el de la casilla a la que va.
Seguro que hay mas formas de hacerlo, por ahora se me han ocurrido esas.
Harko.
Vale, pues provaré lo de un solo sprite e ir calculando la casilla a pelo.
Ya os iremos contando!
Por cierto, que por lo poquito que he provado, esto del XNA está muy bien.
Un saludo
Que casualidad, yo tb estaba pensando en hacerme un Parchis pero con Ogre y C++..
Ya que con mis amigo solemos jugar por las tardes un par de partiditas, pero jugandonos los eurillos... :D
Si si definitivamente un solo sprite y almacenando las coordenadas de las casillas a pelo :P El parchís puede parecer fácil a primera vista pero no lo es tanto... no como un ajedrez... pero supongo q tiene mucha regla y eso obliga a poner unos cuantos ifs q hasta q no llega el momento no te planteas poner. Un colega mio estuvo con ello y la cosa se alargo mas de lo q pensabamos. Tienes pensado complicarte en plan.. meterle opción de 2 dados.. o hacerlo en red?
Bueno, en principio lo hago para aprender XNA, así que de momento será con un solo dado y sin opción de red. Si implemento algo de esto supongo que seria el tema de la red.
Un apuntillo, como tienes implementadas las casillas del parchis?, me explico:
Cuando sumas una tirada a una ficha en concreto como controlas que no se pase del rango, es decir si estas en la casilla 66 y saquas un 4 te vas a la casilla 2 (no a la 70:S)
Tienes un tipo de estructura o lo controlas directamente con un if tipo
if ((ficha.casilla + tirada) > 68){
ficha.casilla = ficha.casilla - 68;
}
Cita de: "1cacalvo"
if ((ficha.casilla + tirada) > 68){
ficha.casilla = ficha.casilla - 68;
}
ficha.casilla = (ficha.casilla + tirada) % 68;
Mejor ¿no? Aunque se puede hacer de mil maneras...
Yo también apostaría por un sólo sprite y mapearte de alguna manera lógica los movimientos en el tablero.
Saludos.
Mas que a la forma de mapear las fichas en el tablero, me referia a una estructura para guardar almacenar las casillas (aparte del apartado grafico), por ejemplo para saber que casillas estan ocupadas, para programar una futura IA (comidas y todo esto), donde hay barreras...
Ahora mismo (esta en un estado mu mu inicial) cada ficha sabe en que casilla esta, pero la clase game tendria ke recorrer a todos los jugadores, y a todas las fichas de esto para saber si hay alguien ya en esa casilla...
No se si me he explicado bien :s
Tener una clase Escena siempre es muy util, una clase que lo sepa TODO sobre el estado de la partida, que le puedas preguntar cosas como - fichas rojas en el tablero - o - quien está en la posicion 10 -, etc.
Agiliza mucho luego programar la logica de la partida.
Bueno yo tengo una clase Game que haria las funciones de Scene...
Y como estructura para representar todas las casillas del parchis he elegido algo como esto...
struct Casilla
{
Casilla (int numCas, int idFich1, int idCol1, int idFich2, int idCol2) :
numCasilla(numCas), idFicha1(idFich1), idColor1(idCol1), idFicha2(idFich2), idColor2(idCol2) {}
Casilla() : numCasilla(-1), idFicha1(-1), idColor1(-1), idFicha2(-1), idColor2(-1){}
int numCasilla;
bool seguro;
int idFicha1;
int idColor1;
int idFicha2;
int idColor2;
};
std::vector<Casilla> casillas(68);
A la Struc le implementare alguna función para agilizar cosas como barreras, y comidas o lo que se me vaya ocurriendo...
Otra pregunta como se puede llegar a la conclusión de saber si es mas optima declarar Casilla como Struct o como Class???
Hay alguna estructura ke sea mas optima para este caso???