Punkte fressen

Wie auch schon bei den Wänden reicht das Zeichnen der Punkte nicht aus. Wir müssen uns die Koordinaten jedes Punkts merken, um Kollisionen zu entdecken und Punkte als gefressen zu markieren.

Was ist neu?

game.js
// Eine globale Variable für die Punkte
var points = [];
game.js
function setup() {
    ...
    
    // Wir fügen die Punkte der globalen Liste hinzu
    for (var i = 120; i < height - 100; i = i + 40) {
        for (var j = 110; j < width; j += 200) {
            var p = { x: j, y: i, size: 15 };
            points.push(p);
        }
    }

    ...
}
game.js
/* Diese Funktion zeichnet alle Punkte in der globalen Liste */
function drawPoints() {
    stroke('white');

    for (var i = 0; i < points.length; i++) {

        // Greife auf den aktuellen Punkt zu
        var p = points[i];

        // Setze die Größe
        strokeWeight(p.size);

        // Zeichne den Punkt
        point(p.x, p.y);
    }
}
game.js
/* Diese Funktion prüft, ob Pacman einen Punkt gegessen hat. 
 * Wenn das der Fall ist wird der Punkt aus der globalen Liste entfernt
 */
function checkSwallow() {

    for (var i = 0; i < points.length; i++) {
        var p = points[i];

        // Wir nehmen 1/3 der Größe, damit der Punkt wirklich geschluckt wurde (und nicht nur gestriffen)
        var swallowed = objectsCollide(pacmanX, pacmanY, pacmanSize / 3, pacmanSize / 3, p.x, p.y, p.size, p.size);

        if (swallowed === true) {

            // Punkt entfernen
            points.splice(i, 1);
        }
    }
}
/* Diese Funktion prüft, ob 2 rechteckige Objekte miteinander kollidieren */
function objectsCollide(aX, aY, aWidth, aHeight, bX, bY, bWidth, bHeight) {

    if (aX < bX + bWidth &&
        aX + aWidth > bX - bHeight &&
        aY < bY + bHeight &&
        aY + aHeight > bY - bHeight) {

        return true;
    }

    return false;
}

Last updated

Was this helpful?