Stap 3: Aanpakken van de LED-Matrix
Voor de tic tac toe code, zullen wij moeten zitten kundig voor opslaan van de volgende informatie over de LED's:-of een LED brandt of niet
-Als verlicht, of is het rode of groene
Een manier van doen dit is voor het opslaan van de staat in de matrix van een 9-cel, met drie cijfers om de staat (0 = uit, 1 = rood op, 2 = groen op). Everytime die we nodig hebben om te controleren op de Staten van de LED, bijvoorbeeld, om te controleren of er een win-aandoening is, zullen wij moeten doorlopen van de matrix. Dit is een werkbare methode, maar nogal onhandig.
Een meer gestroomlijnde methode zou zijn om twee groepen van negen bits gebruiken. De eerste groep van negen bits slaat de aan / uit-status van de LED's, en de tweede groep van negen bits slaat de kleur. Manipuleren van de LED-Staten wordt dan, gewoon een kwestie van bits rekenkundige en verschuiven.
Hier is een uitgewerkt voorbeeld. Laten we zeggen dat we onze tic tac toe raster grafisch, en het eerste gebruik 1s en 0s te vertegenwoordigen de aan / uit-status (1 aanstaat, 0 is uitgeschakeld):
000
000 = matrix met linksonder LED verlicht
100
100
010 = matrix met diagonale LEDs verlicht
001
Als we de cellen uit de links onderaan inventariseren, kunnen we de bovenstaande verklaringen schrijven als een reeks bits. In het eerste geval, dat zou 100000000, en in het tweede geval, zou het 001010100. Als wij van deze als binaire representaties denken, kan vervolgens elke reeks bits worden samengevat in een enkel getal (256 in het eerste geval, 84 in het tweede geval). Dus in plaats van met behulp van een array op te slaan van de staat van de matrix, kunnen we gewoon gebruiken een enkel getal!
Ook wij de kleur van de LED op dezelfde manier kunnen vertegenwoordigen (1 is rood, 0 is groen). Eerst stel alle de LEDs verlicht zijn (dus de aan / uit-status wordt vertegenwoordigd door 511). De onderstaande matrix zal de kleur staat voor de LEDs vertegenwoordigen:
010 groen, rood, groen
101 rood, groen, rood
010 groen, rood, groen
Nu, bij het weergeven van de LED-matrix, we gewoon moeten doorlopen elk van de bits, eerst in de aan / uit-status, en vervolgens in de kleur staat. Bijvoorbeeld, laten we zeggen dat onze aan-uit staat is 100100100, en de kleur staat is 010101010. Hier is ons algoritme voor verlichting van de LED-matrix:
Stap 1. Doen een bitsgewijze toevoeging van de aan / uit-staat met een binaire 1 (dwz bits maskeren).
Stap 2. Als het waar is, brandt de LED. Doe nu een bitsgewijze toevoeging van de kleur staat met een binaire 1.
Stap 3. Als het waar is, licht op de rode LED. Als het onwaar is, licht op de groene LED.
Stap 4. Verschuiven van zowel de aan / uit-staat en de kleur staat, een beetje naar rechts (dwz bitverschuiving).
Stap 5. Herhaal stap 1-4 totdat alle negen bits zijn gelezen.
Opmerking dat we de matrix achteruit - bent vullen we beginnen met cel 9, dan gaan terug naar cel 1.
Ook worden de aan / uit- en kleur Staten opgeslagen als een niet-ondertekende integer type (woord) in plaats van een type integer met teken. Dat komt omdat in bitverschuiving, als we niet voorzichtig zijn, kunnen we inadvertenly wijzigen het teken van de variabele.
Bijgevoegd is de code voor de verlichting van de LED-matrix.