![]() |
![]() |
|
|
|
|
|
Same Game es un juego tipo puzzle (rompecabezas) de un solo jugador. El juego consiste en eliminar la mayor cantidad de grupos de elementos de un tablero de N x M. Un grupo es conformado por 2 o mas elementos, del mismo color, que sean adjacentes entre sí. Al eliminar un grupo se debe llenar los espacios en blanco con los elementos superiores restantes. Igualmente si quedan columnas vacias tambien desaparecerlas haciendo que las columnas que esten mas a la derecha las ocupen.
Éste articulo describe qué es lo que se ha tomado en cuenta para la implementacion del Same Game, para lo cual se ha utilizado el lenguaje de programacion Microsoft Visual C++ 6.0, combinado con la técnica de computación grafica llamada Double Buffering.
Para la implementación del Same Game se ha tomado en cuenta lo siguiente:

SameGame - Pantalla Principal
Para la eliminacion de grupos de elementos se ha utilizado una búsqueda recursiva simple:
void CSame::Find(int i,int j)
{
if(pCells[i][j].color != ' ' && pCells[i][j].count == 0)
{
for(int k = 0 ; k < TMAX; k++)
{
if((((i + dirs[k][Y]) >= 0) && ((i + dirs[k][Y]) < n)) &&
(((j + dirs[k][X]) >= 0) && ((j + dirs[k][X]) < m)))
{
if(pCells[i + dirs[k][Y]][j +
dirs[k][X]].color == pCells[i][j].color)
{
Find(i + dirs[k][Y],j + dirs[k][X],count);
}
}
}
}
}
Donde i,j es la posicion en el tablero; pCells es el array de elementos; dirs es un array que contiene las TMAX direcciones posibles de adjacencia.
Los elementos son pedasos de un mapa de bits, cada pedazo es de 22x22 pixeles. Los elementos son cargados previamente en un Image List, para su mejor manipulación.
Iconos inactivos |
Iconos activos |
Para mas detalles sobre la implementación pueden descargar y revisar el código fuente del programa.
![]() |
![]() |
|||
|
||||
![]() |
![]() |