KeyChainino - första spelet nyckelringen programmerbara med Arduino (10 / 14 steg)
Steg 10: Visar poäng
Poängen med spelet beräknas hur många gånger de bollen studsar på baren.
Så, när bollen vidrör skärmen botton- och inte bar - vi avsluta spelet och poängen kommer att vara visade.
Passerar vi poängen till funktionen: showScore(byte score).
Låt oss se koden:
clearMatrix();
char scoreChar [5]. röding var att sätta antalet poäng
konvertera poäng till scoreChar
String str = String(scoreNumber) + "";
str.toCharArray (scoreChar, 5);
för (char c = 0; scoreChar [c]! = '\0'; c ++) {
för (int col = MATRIX_COL - 1; col > = 0; col--) {
för (byte jag = 0; jag < MATRIX_COL; i ++) {//put stadgan till matrixState
för (byte j = 0; j < MATRIX_ROW; j ++) {//as vanliga
om (jag > = col) {
writeCharter (scoreChar [c], i, j, col);
} annat {/ / annat, om col (i) är mindre än col, vi flytta matrixState
matrixState [j] [i] = matrixState [j] [i + 1];
}
}
}
Delay(150);
}
}
Först klara vi matrixState genom bränning funktionen clearMatrix().
Nästa konvertera vi scoreNumber till en sträng och sedan till en stadga.
Detta eftersom vi vill visa poängen i rullning läge. För att göra att vi får varje char antalet poäng.
Till exempel, om vi vill visa nummer 15, konverteras till char array, har vi:
scoreChar [5] = {"1", "5","","\0',0}
Där tecken int första två ställning char matrisen är numret.
Röding i tredje positionen är ett utrymme som används för att möjliggöra en korrekt vision av poängen.
Röding i fjärde position är i slutet av strängen. Denna stadga läggs automatiskt i varje slutet av valfri sträng.
Den sista röding, används i femte position, inte. Det används när poängen är högre än 99.
Så, visar vi scoreChar tills vi når stadgan '\0'.
Vi passerar varje röding av scoreChar till funktionen writeCharter().
Funktionen Skriv motsvarande nummer för röding till matrixState.
Eftersom vi vill att rulla numret, måste vi "skriva" i matrixState endast del av numret röding som vi vill ha.
För att göra det, passerar vi också till funktionen writeCharter, placera av röding som kommer att vara visade.
void writeCharter (char charterToShow, byte i, byte j, byte col) {
om (charterToShow == '0') {
matrixState [j] [i] = (bool *) pgm_read_byte (& (noll [j] [i - col]));
}
Så funktionen writeCharter() visar talet enligt vilket nummer passerar vi till den.