- forma compacta de representar os sprites (uma lista de 6 inteiros em vez de uma lista de 6 listas de 6 inteiros)
- forma tb compacta de realizar o sliding/scrolling lateral (uma lista de 6 inteiros consegue armazenas 2 sprites e vou carregando o próximo sprite quando o primeiro termina de ser apresentado em vez da lista de 6 listas de n+6 inteiros inicial)
- alguma optimização de código
- algumas operações bitwise sobre inteiros
- alguma redução dos nomes das variáveis e classes
- uma nova classe e mais dois módulos
disto resultou alguma dificuldade em entender o código (mas tenho tentado comentar tudo o melhor possível) mas para o utilizador final isso é irrelevante, mantém-se a forma de operar e mais:
- é possível usar apenas dois ColorLightMatrix, numa disposição 6x3
- se por qualquer motivo estranho se tiver 4 CLMx mas se pretender 2 apresentações distintas é possível instanciar dois objectos 6x3 (ou mesmo 3 objectos quem for rico e tiver um hub de 6 portas e 6 CLMx)
- é inclusive possível usar um BOOST Move Hub (no limite mesmo mas consegue carregar a mesma fonte de 10 digitos, 26 letras, ?, !, @ e espaço dos manos mais crescidos)
Quem usar 2 CLMx apenas não espere grande coisa exibindo caracteres estáticos a menos que edite a fonte (continua a ser 6x6) e encaixe tudo em 6x3. Mas se mandar exibir o mesmo caracter em modo sliding a coisa melhora, o nosso cérebro consegue colmatar a falta de resolução.
Pessoalmente tenho achado vantajoso mandar exibir um caracter precedido de um espaço e fazer deslizar para a esquerda:
(está ali um espaço entre a primeira plica e o A)matrix.show(' A', 'L', 250, (Color.YELLOW, Color.BLACK) )
O código todo e alguns exemplos no github:
https://github.com/JorgePe/matrix_6x6
próximos passos serão extender a fonte (mas não para o Move Hub, esse vai ficar essencialmente como está) e implementar uma forma de o utilizador definir o seu próprio sprite para não ter que editar a fonte no código.