viernes, 13 de febrero de 2009

Volcar las fichas al tablero

En este post vamos a dar forma completamente al motor del juego. Lo que nos queda es pasar las fichas al tablero cuando estas colisiones. Una vez hecho esto mirar si se ha hecho una línea y posteriormente quitarla.

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];
}


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;
}


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];
}


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);
}


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:

David Martínez Martínez dijo...

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.

Anónimo dijo...

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.