Tenemos que continuar programando funciones sobre los arrays que definimos en la anterior entrada del blog. Por ejemplo:
void crear_ficha_l(u8 color) {
ficha.radio = 3;
ficha.ficha[0][0] = color;
ficha.ficha[1][0] = CASILLA_VACIA;
ficha.ficha[2][0] = CASILLA_VACIA;
ficha.ficha[3][0] = CASILLA_VACIA;
ficha.ficha[0][1] = color;
ficha.ficha[1][1] = CASILLA_VACIA;
ficha.ficha[2][1] = CASILLA_VACIA;
ficha.ficha[3][1] = CASILLA_VACIA;
ficha.ficha[0][2] = color;
ficha.ficha[1][2] = color;
ficha.ficha[2][2] = CASILLA_VACIA;
ficha.ficha[3][2] = CASILLA_VACIA;
ficha.ficha[0][3] = CASILLA_VACIA;
ficha.ficha[1][3] = CASILLA_VACIA;
ficha.ficha[2][3] = CASILLA_VACIA;
ficha.ficha[3][3] = CASILLA_VACIA;
}
y así todas las fichas!!
Pensando en la forma como hemos solucionado el tema de las fichas, se podría hacer de otra manera.
Esta se basaría en que todas las fichas tienen 4 piezas, con lo que con un array de cuatro elementos sería suficiente, y cada elemento del array guardaría la posición (x, y) donde va esa pieza.
Por ejemplo:
- La pieza L sería (0, 0), (0, 1), (0, 2), (1, 2)
- La pieza J sería (1, 0), (1, 1), (0, 2), (1, 2)
- La pieza o (el cuadrado) sería (0, 0), (0, 1), (1, 0), (1, 1)
Más funciones, la de colisión:
u8 existe_colision(u8 x, u8 y) {
u8 i, j;
for(i = 0; i < j =" 0;">= TABLERO_ANCHO) return 1;
if (y + j >= TABLERO_ALTO) return 1;
if (tablero[x + i][y + j] != CASILLA_VACIA) return 1;
}
return 0; //false
}
Esta la vamos a explicar con más detenimiento.
La función mira si la ficha 'ficha' en las posiciones 'x' e 'y', pasadas como parámetro, está sobre un obstáculo. Se mira que no se salga por los bordes izquierdo o derecho ( if (x + i <>= TABLERO_ANCHO) return 1;), que no llegue al fondo ( if (y + j >= TABLERO_ALTO) return 1;) o que no encuentre alguna casilla del tablero no vacía (if (tablero[x + i][y + j] != CASILLA_VACIA) return 1;), por supuesto todo esto se hará si la casilla de la ficha (i, j) no está vacía ( if (ficha.ficha[i][j] != CASILLA_VACIA) {)
Saludos
4 comentarios:
Se agradece queeste nuevo tutorial llegara tan rapido.
si, esta vez te diste prisa! solo que ya me esta parececiendo dificil y acabamos de empezar, xD...
No es difícil!!! sólo son funciones para manejar arrays...dibujando los arrays en papel se ve muy bien.
Saludos
¡¡¡Sigue así!!!
Eres el mejor , yo i mis amigos te estamos muy agradecidos.
esta muy bien que te des prisa, así aprenderemos antes, biva!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Publicar un comentario