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;
}