Paso 3: Hacer frente a la matriz de LED
El código de dedo del pie tic tac, tendremos que ser capaces de almacenar la siguiente información acerca de los LEDs:-Si un LED se ilumina o no
-Si enciende, si es rojo o verde
Una manera de hacer esto es guardar el estado en una matriz de 9 celdas, mediante tres dígitos para representar el estado (0 = apagado, 1 = rojo, 2 = verde en). Cada vez que necesitamos para verificar los Estados de lo LED, por ejemplo, para comprobar si existe una condición de ganar, tendremos que recorrer el array. Se trata de un método realizable, pero algo torpe.
Un método más ágil sería utilizar dos grupos de nueve bits. El primer grupo de nueve bits almacena el estado de encendido y apagado de los LEDs, y el segundo grupo de nueve bits almacena el color. Luego, manipulando los Estados LED simplemente se convierte en una cuestión de aritmética de bits y desplazamiento.
Aquí hay un ejemplo trabajado. Supongamos que dibujamos nuestra red de tic tac toe gráficamente y primer uso de 1s y 0s para representar el estado de encendido y apagado (1 sobre, 0 está apagado):
000
000 = matriz con la parte inferior izquierda LED encendido
100
100
010 = matriz diagonal LED iluminado
001
Si nosotros enumerar las células de la parte inferior izquierda, podemos escribir las representaciones anteriores como una serie de bits. En el primer caso, que sería 100000000, y en el segundo caso, sería 001010100. Si pensamos en estas representaciones binarias, cada serie de bits puede resumirse en un solo número (256 en el primer caso, 84 en el segundo caso). Así que en lugar de utilizar un array para almacenar el estado de la matriz, sólo podemos utilizar un solo número!
Del mismo modo, podemos representar el color del LED de la misma manera (1 es de color rojo, 0 es verde). Supongamos primero que todos los LEDs se encienden (por lo que el estado de encendido y apagado está representado por 511). La siguiente matriz representa entonces el estado del color de los LEDs:
010 verde, rojo, verde
101 rojo, verde, rojo
010 verde, rojo, verde
Ahora, cuando se muestra la matriz de LED, solo tenemos que recorrer cada uno de los bits, primero en el estado de encendido y apagado y luego en el estado de color. Por ejemplo, supongamos que nuestro estado de encendido y apagado es 100100100, y el estado de color 010101010. Aquí está nuestro algoritmo para iluminar la matriz LED:
Paso 1. Hacer un complemento bit a bit de estado encendido y apagado con un 1 binario (es decir bit masking).
Paso 2. Si bien es cierto, el LED está encendido. Hacer ahora un complemento bit a bit de estado de color con un 1 binario.
Paso 3. Si bien es cierto, encenderá el LED rojo. Si es false, se encenderá el LED verde.
Paso 4. Cambiar el estado de encendido y apagado y estado de color, un poco a la derecha (es decir cambio de bit).
Paso 5. Repita los pasos 1-4 hasta que se ha leído todos los nueve bits.
Nota que estamos llenando la matriz hacia atrás - empieza con celular 9, luego proceder a cell 1.
Además, los Estados de encendido y apagado y el color se almacenan como un tipo de entero sin signo (palabra) en lugar de un tipo del entero con signo. Eso es porque en cambio de poco, si no tenemos cuidadosos, podríamos inadvertenly cambio el signo de la variable.
Adjunto es el código para iluminar la matriz de LED.