Stap 10: Tonen de score
De uitslag van het duel wordt berekend op hoeveel keer de bal stuitert op de balk.
Dus, toen de bal raakt de botton scherm- en niet de bar - we beëindigen het spel en de score wordt getoond.
Wij de score doorgeven aan de functie: showScore(byte score).
Zie de code:
clearMatrix();char scoreChar[5]; //char were to put the score number//converting the score to scoreChar String str = String(scoreNumber) + ' '; str.toCharArray(scoreChar, 5); for (char c = 0; scoreChar[c] != '\0'; c++) { for (int col = MATRIX_COL - 1; col >= 0; col--) { for (byte i = 0; i < MATRIX_COL; i++) { //put the charter into the matrixState for (byte j = 0; j < MATRIX_ROW; j++) { //as usual if (i >= col) { writeCharter(scoreChar[c], i, j, col); } else { //else, if col (i) is less than col, we shift the matrixState matrixState[j][i] = matrixState[j][i + 1]; } } } delay(150); } }
Eerst wissen wij de matrixState door middel van verhitting de clearMatrix() functie.
Vervolgens zetten wij de scoreNumber naar een tekenreeks en vervolgens naar een Handvest.
Dit omdat we de score willen in het scrollen modus weergeven. Om te doen dat we elke char van het nummer van de score.
Bijvoorbeeld, als we laten zien de nummer 15 willen, omgezet in char de matrix, hebben we:
scoreChar[5] = {'1','5',' ','\0',0}
Waar zijn de tekens int de eerste twee positie van de matrix char het nummer.
De char in de derde plaats is een ruimte die wordt gebruikt om een juiste visie van de score.
De char op de vierde plaats is het einde van de tekenreeks. Dit Handvest wordt automatisch toegevoegd aan elk einde van een willekeurige tekenreeks.
De laatste char, wordt in de vijfde positie, niet gebruikt. Het wordt gebruikt wanneer het nummer van de score hoger is dan 99.
Dus, laten we de scoreChar totdat we het Handvest '\0'.
We passeren elke char van de scoreChar aan de writeCharter() functie.
Deze functie schrijven het bijbehorende char-nummer naar de matrixState.
Omdat we schuiven van het nummer willen, moeten we "schrijven" in de matrixState alleen het deel van de char-getal dat wij willen.
Om dat te doen, doorgeven we ook aan de writeCharter functie, de positie van de char die wordt getoond.
void writeCharter(char charterToShow, byte i, byte j, byte col) { if (charterToShow == '0') { matrixState[j][i] = (bool*)pgm_read_byte(&(zero[j][i - col])); }
Dus de writeCharter() functie het aantal volgens welk nummer geeft gaan we aan het.