Así que manos a la obra.
Para pasar las fichas al tablero necesitaremos esta función:
void copiar_ficha_a_tablero() {
u8 i, j;
for(i = 0; i < FICHA_ANCHO; i++)
for(j = 0; j < FICHA_ALTO; j++)
if (ficha.ficha[i][j] != CASILLA_VACIA)
tablero[ficha.x + i][ficha.y + j] = ficha.ficha[i][j];
}
u8 i, j;
for(i = 0; i < FICHA_ANCHO; i++)
for(j = 0; j < FICHA_ALTO; j++)
if (ficha.ficha[i][j] != CASILLA_VACIA)
tablero[ficha.x + i][ficha.y + j] = ficha.ficha[i][j];
}
Para saber si se ha hecho una o más líneas:
u8 es_linea_completa(u8 fila) {
u8 i;
for(i = 0; i < TABLERO_ANCHO; i++)
if (tablero[i][fila] == CASILLA_VACIA) return 0;
return 1;
}
u8 i;
for(i = 0; i < TABLERO_ANCHO; i++)
if (tablero[i][fila] == CASILLA_VACIA) return 0;
return 1;
}
Para quitar esa línea que se hallado:
void quitar_linea(u8 fila) {
u8 i, j;
for(i = 0; i < TABLERO_ANCHO; i++)
for(j = fila; j > 0; j--)
tablero[i][j] = tablero[i][j - 1];
}
u8 i, j;
for(i = 0; i < TABLERO_ANCHO; i++)
for(j = fila; j > 0; j--)
tablero[i][j] = tablero[i][j - 1];
}
Por último, actualizaremos la puntuación, dependiendo del número de lineas que se hagan de una sola vez:
void actualizar_puntuacion(u8 lineas) {
if (lineas == 1) puntos += 10;
else if (lineas == 2) puntos += 30;
else if (lineas == 3) puntos += 60;
else if (lineas == 4) puntos += 100;
PA_OutputText(SCREEN_TOP, 25, 12, "%d ", puntos);
}
if (lineas == 1) puntos += 10;
else if (lineas == 2) puntos += 30;
else if (lineas == 3) puntos += 60;
else if (lineas == 4) puntos += 100;
PA_OutputText(SCREEN_TOP, 25, 12, "%d ", puntos);
}
El último código lo podeis descargar, junto a todo el proyecto, desde esta página.
En esta versión he puesto una pantalla de entrada, para ir decorando el juego. Se nota que no soy diseñador gráfico!!!
Saludos
2 comentarios:
He probado el Tetris, y te ha quedado muy pero que muy bien, ¡sigue así!
Por cierto, he leido que lo próximo será un Mario Bros, te recomiendo que uses del ejemplo de las PAlib, el de las plataformas. Va bastante bien, y tiene implementado gravedad en el salto. Lo único que le falta a mi parecer, es que no te puedas mover en el aire con tanta libertad.
Así, te costará menos hacerlo, además de que te podrías concentrar en otras cosas. Por ejemplo, no se, que en vez de saltar solamente, lleve una espada y mate a los malos, como quieras.
Saludos, sigue así, estas haciendo un trabajo SOBERBIO.
Si, apoyo la iniciativa del Mario Bros!!
La verdad es que no estaría mal que se saliera un poco de los esquemas tradicionales...
Sigue asi!! Un saludo.
Publicar un comentario