Heartsprites
- Home
- Tutorials
- Android
- Spiele App für Android 2.3.6 Programmieren
- Heartsprites
Ladet für die 5 extra Sekunden ersteinmal folgendes Bild herunter.

Dann fügt zu euren Variablen in der GameView Klasse folgenden Liste ein:
private List<Sprite> heartSprites = new ArrayList<Sprite>();
private final int heartChance = 25;
private int createHeart;
private boolean spriteHit = false;
Random rnd = new Random(System.currentTimeMillis());
Bei heartSprites handelt es sich um unsere Herzen die Extrazeit bringen sollen, bei heartChance um die Wahrscheinlichkeit mit der ein Herz auftauchen soll und bei createHeart um die Variable in die die Zufallszahl eingefügt werden soll die bei random(25) herauskommt. Wir können somit die Zeile...
Random rnd = new Random(System.currentTimeMillis());
... aus unserer rndCreateSprite() Methode löschen um nicht ein weiteres Objekt vom Typen Random zu erzeugen.
Fügt dann die Methode createHeartSprites() in der GameView Klasse ein:
private Sprite createHeartSprite(int resource) {
Bitmap bmp = BitmapFactory.decodeResource(getResources(), resource);
return new Sprite(this, bmp);
}
In dieser Methode ordnen wir dem Sprite ein Bild zu und geben eine Objekt vom Typen Sprite zurück.
Um die Heartsprites nun auch zu malen, brauchen wir in unserer draw() (in früheren Versionen hieß es noch onDraw() Methode folgende For Schleife.
for (Sprite sprite : heartSprites) {
sprite.draw(canvas);
}
Damit wir nun überhaupt einer Sprite erstellt wird, brauchen wir in unserer onTouchEvent Methode zwei kleine Änderungen:
-
Erzeugung eines zufälligen Wertes zwischen 0 und"heartChance" -1 der in createHeart gespeichert wird
createHeart = rnd.nextInt(heartChance);
-
Erzeugung eines Heartsprites, wenn createHeart 1 ist. (Hierbei könnte man jede beliebeige Zahl zwischen 0 und "heartChance" -1 nehmen)
if (createHeart == 1) { heartSprites.add(createHeartSprite(R.drawable.heartsprite)); }
-
Außerdem müssen wir noch eine if Abfrage um unsere rndCreateSprite() Methode einfügen, damit nur ein neuer zufälliger Sprite erstellt wird, wenn kein Heartsprite erstellt wird.
if (!(createHeart == 1)) { rndCreateSprite(); }
Jetzt wird zwar ein Heartsprite erzeugt und gemalt, jedoch haben wir noch nicht implementiert, was passieren soll, wenn einer der HeartSprites vom Spieler berührt wird. Es sollen 5 Sekunden zur Spielzeit hinzugefügt werden, der HeartSprite soll verschwinden. Wenn der Sound aktiviert ist, soll noch ein Ton erzeugt werden. Und wir dürfen den Boolean spriteHit nicht vergessen. Diesen müssen wir abfragen, für die for Schleife der Heartsprites und für die for Schleife der anderen Sprites, außerdem dürfen wir nicht vergessen, die Variable spriteHit auch wieder auf false zu setzen, wenn der Touchbefehl abgeschlossen ist.
@Override
public boolean onTouchEvent(MotionEvent event) {
if (System.currentTimeMillis() - lastClick > 300) {
lastClick = System.currentTimeMillis();
synchronized (getHolder()) {
if (!spriteHit) {
for (int i = heartSprites.size() - 1; i >= 0; i--) {
Sprite sprite = heartSprites.get(i);
if (sprite.isTouched(event.getX(), event.getY())) {
score++;
playTime += 5000;
if (theGameActivity.getSoundToggleState()) {
theGameActivity.playPoint();
}
heartSprites.remove(sprite);
spriteHit = true;
}
}
}
if (!spriteHit) {
for (int i = spriteList.size() - 1; i >= 0; i--) {
createHeart = rnd.nextInt(heartChance);
Sprite sprite = spriteList.get(i);
if (sprite.isTouched(event.getX(), event.getY())) {
if (currentColorNum == spriteListNum.get(i)) {
score++;
if (theGameActivity.getSoundToggleState()) {
theGameActivity.playPoint();
}
if ((score % 5 == 0) && (score != 0)) {
playTime += 3000;
}
} else {
// lives--;
playTime -= 5000;
if (theGameActivity.getVibrationToggleState()) {
theGameActivity.vibrator();
}
if (theGameActivity.getSoundToggleState()) {
theGameActivity.playMinusPoint();
}
// if (lives == 0) {
// theGameActivity.onGameOver();
// }
}
// if (score == 3)
// lives++;
if (!(createHeart == 1)) {
rndCreateSprite();
}
if (createHeart == 1) {
heartSprites
.add(createHeartSprite(R.drawable.heartsprite));
}
removeSprite(i);
changeColor();
spriteHit = true;
break;
}
}
}
} spriteHit = false;
}
return true;
}
Spiele App für Android 2.3.6 Programmieren
-
Android 2.3.6 Spiele App Programmieren
-
Lektion1.1
-
Lektion1.2
-
Lektion1.3
-
Lektion1.4
-
Lektion1.5
-
Lektion1.6
-
Lektion1.7
-
Lektion1.8
-
Lektion1.9
-
Lektion1.10
-
Lektion1.11
-
Lektion1.12
-
Lektion1.13
-
Lektion1.14
-
Lektion1.15
-
Lektion1.16
-
Lektion1.17
-
Lektion1.18
-
Lektion1.19
-
Lektion1.20
-
Lektion1.21
-
Lektion1.22
-
Lektion1.23
-
Lektion1.24
-
Lektion1.25
-
Lektion1.26
-
Lektion1.27
-
Lektion1.28
-
Lektion1.29
-
Lektion1.30
-
Lektion1.31
-
Lektion1.32
-
Lektion1.33
-
Lektion1.34
-
Lektion1.35
-
Lektion1.36
-
Lektion1.37
-
Lektion1.38
-
Lektion1.39
-