In diesem Schritt fügen wir einen neuen Steintyp brick5 hinzu. Wird dieser Stein vom Ball getroffen, verschwindet er und eine Kugel (sphere1) fällt vom getroffenem Brick nach unten. Trifft die Kugel das Paddle, erhält der Spieler ein zusätzliches Leben.
assets die Grafikdatei brick5.png für den neuen Steintyp hinzu.sphere1.png für die PowerUp-Kugel hinzu (z.B. eine kleine Kugel oder ein Herz-Symbol).assets/level3.jsonZum Testen des neuen Steintyps erstelle eine neue Datei level3.json mit folgendem Beispielinhalt:
{
"layout": [
[0,0,0,5,5,5,0,0,0],
[0,1,1,1,1,1,1,1,0],
[2,2,2,2,2,2,2,2,2],
[0,3,3,3,3,3,3,3,0],
[0,0,0,4,4,4,0,0,0]
]
}
Hier steht 5 für den neuen Brick-Typ.
game.js const maxLevel = 3; // Level 3 mit brick5 hinzugefügt
...
// Neuer Physik-Sprite für die fallende Kugel (PowerUp)
let powerUp;
function preload() {
this.load.image('sphere1', 'assets/sphere1.png'); // PowerUp Kugel laden
...
}
function create() {
...
powerUp = this.physics.add.image(-100, -100, 'sphere1'); // erstmal ausblenden, außerhalb vom Bildschirm
powerUp.setVelocity(0, 0);
powerUp.setCollideWorldBounds(true);
powerUp.setBounce(0.5);
powerUp.setVisible(false);
powerUp.body.allowGravity = false;
// Kollisionsprüfung PowerUp - Paddle
this.physics.add.overlap(powerUp, paddle, collectPowerUp, null, this);
loadLevel.call(this, currentLevel);
this.physics.add.collider(ball, paddle, ballPaddleCollision, null, this);
this.physics.add.collider(ball, bricks, ballBrickCollision, null, this);
}
function update() {
...
if (ball.y > this.sys.game.config.height - ball.height) {
loseLife();
}
// PowerUp fällt nach unten, wenn sichtbar
if (powerUp.visible) {
// Kugel fällt mit konstanter Geschwindigkeit nach unten
powerUp.setVelocityY(200);
// Kugel geht verloren, wenn sie den Boden berührt (außerhalb des Bildschirms)
if (powerUp.y > this.sys.game.config.height - powerUp.height) {
resetPowerUp();
}
}
}
// PowerUp erzeugen an Position x,y
function spawnPowerUp(x, y) {
powerUp.setPosition(x, y);
powerUp.setVelocity(0, 200);
powerUp.setVisible(true);
}
// PowerUp verschwindet, wenn es Paddle berührt
function collectPowerUp(sphere, paddle) {
resetPowerUp();
lives++;
livesText.setText('Leben: ' + lives);
}
// PowerUp zurücksetzen wenn verloren oder eingesammelt
function resetPowerUp() {
powerUp.setVisible(false);
powerUp.setVelocity(0, 0);
powerUp.x = -100;
powerUp.y = -100;
}
brick5 treffen, verschwindet der Brick und das PowerUp (die Kugel sphere1) wird an dieser Position erzeugt.