Paso 6: Cambiar los bits de tanque
Con los personajes en la pantalla, puede modificar sus pedacitos. En última instancia, usted tiene que llamar a la función createChar (índice, byteArray) para obtener los bits para el LCD, y eso significa que tienes que tener una matriz de ocho bytes por carácter. Estoy utilizando cuatro caracteres personalizados, por lo que utiliza matrices de cuatro bytes.sprite0 Byte [8];
sprite1 Byte [8];
sprite2 Byte [8];
sprite3 Byte [8];
En el loop(), tomé el bit a bit modulo posición para llegar a un desvío. Entonces, fui una línea a la vez a través del tanque. Aquí, la eficiencia de los enteros largos entra en juego. En primer lugar, le copio el int largo del tanque estático a una variable local. Entonces, yo cambiaría el int entero largo por el número de bits que necesitaría.
int shiftbits = (tankx % BITS_PER_CHAR); Si (shiftbits < 0) {shiftbits += BITS_PER_CHAR;}
para (int y = 0; y < 8; y ++)
{
largo lval = tankImg [y];
...
lshifted largo = lval << (BITS_PER_CHAR-shiftbits);
sprite0 [y] = (byte) ((lshifted >> (3 * BITS_PER_CHAR)) & B011111);
sprite1 [y] = (byte) ((lshifted >> (2 * BITS_PER_CHAR)) & B011111);
sprite2 [y] = (byte) ((lshifted >> (1 * BITS_PER_CHAR)) & B011111);
sprite3 [y] = (byte) ((lshifted >> (0 * BITS_PER_CHAR)) & B011111);
}
Finalmente, cuando habían sido computadas todas las matrices de bytes, empujaría les sobre a lo LCD.
lcd.createChar (0, sprite0);
lcd.createChar (1, sprite1);
lcd.createChar (2, sprite2);
lcd.createChar (3, sprite3);
Si se computa esto cambiando bytes, tienes que asegurarse de que usted ' d que "lleva" el último bit el octeto siguiente horizontalmente, pero ya que me quedo dentro de lo 32 bits int largo con cada ronda, el procesador hace poco para mí.
Al final del bucle, mover el tanque y luego lazo alrededor al principio después de consiguió el depósito fuera de la pantalla.
++ tankx;
Si (tankx > = 50) {tankx = -15;}
...
Delay(100);
Por último, ves el retraso. Es importante utilizar un retraso que es apropiado para su LCD. Mi afición LCD es azul con blanco iluminación, y se desvanece muy lentamente, por lo que un breve retraso acabaría con un montón de visión borrosa.