Score auf dem Canvas anzeigen lassen
Dazu legen wir ersteinmal einen Integer Score, für das zählen der Punkte, und einen String scoreString, für das zeichnen auf den Canvas, an. Wir initialisieren score mit 0, damit der Spieler am Anfang eines jeden Spiels mit 0 Punkten anfängt.
private String scoreString;
private int score=0;
Nun haben wir zwar einen Score, können diesen aber noch nicht sehen. Um das zu ändern, müssen wir den Score auf den Canvas zeichnen. Das erreichen wir durch einfügen des folgenden Codes in die onDraw – Methode unserer GameView Klasse:
final int fontSize = 25;
int yTextPos = 40;
Typeface font = Typeface.create("Arial", Typeface.NORMAL);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTypeface(font);
paint.setTextSize(fontSize);
paint.setAntiAlias(true);
scoreString = String.valueOf(score);
int x = (canvas.getWidth() * 6 / 7);
final String text = scoreString;
canvas.drawText(text, x, yTextPos, paint);
Wobei fontSize die Schriftgröße und font die Schriftart ist. Wir erstellen also ein neues Objekt vom Typen Paint, welches die Werte: Schriftgröße, Schriftart und Farbe angeheftet bekommt. Dann wird der Integer Wert von score in einen String umgewandelt damit er dann mit canvas.drawText() gezeichnet werden kann.
Die x Position des Textes ist hiermit anteilig an der Gesammtbreite des Bildschirms, und die y Position auf 40 gesetzt. paint.setAntiAlias(true) macht unseren Text weicher, also weniger kantig.
Dann muss der Punktzahl ja noch erhöht werden, wenn man den richtigen Sprite angeklickt hat. Das ist der Fall wenn die momentane Rand der Farbe des Sprites entspricht: currentColor. Dazu fügen wir folgenden Code in die onTouchEvent() – Methode ein:
if (currentColorNum == spriteListNum.get(i)) {
score++;
}
Hierbei fragen wir ab, ob die Zahl currentColorNum den gleichen Wert hat, wie die Zahl die unsererm Sprite angeheftet wurde. Wenn dies der Fall ist, soll die Punktzahl (score) um eins erhöht werden.