Programmieren lernen
PacmanÜber mich
Deutsch
Deutsch
  • Kursübersicht
  • Pacman
    • Das Projekt aufsetzen
      • Die Entwicklungsumgebung
      • Die Datei- und Ordnerstruktur
      • Die Zeichenfläche
    • Die Spielfigur inszenieren
      • Pacman zeichnen (Kreis)
      • Pacman zeichnen (Bogen)
      • Pacman animieren (Mund)
      • Pacman bewegen
      • Pacman steuern
      • Pacman drehen
      • Pacman einfangen
    • Die Spielwelt gestalten
      • Wände ziehen
      • Mit Wänden kollidieren
      • Mehrere Wände
      • Außenwände
    • Das Ziel definieren
      • Punkte zeichnen
      • Punkte verteilen
      • Punkte fressen
      • Punkte zählen
      • Ziel erreicht
    • Die Monster erwecken
      • Ein Monster zeichnen
      • Herumirrendes Monster
      • Jagd auf Pacman
      • Erwischt?
      • Monsterparty
      • Schlaue Monster
  • Objektorientierung
    • Überblick
  • Datenbanken
    • Überblick
Powered by GitBook
On this page

Was this helpful?

  1. Pacman
  2. Das Ziel definieren

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;
}
PreviousPunkte verteilenNextPunkte zählen

Last updated 4 years ago

Was this helpful?