Les 13 - Space Invaders
Hier de code voor Space Invaders:
let aliens = []; //lege array om aliens in op te slaan
let kogels = []; //lege array voor kogels
let ruimteSchip;
let gameOver = false;
let victory = false;
function setup() {
//plaats hier de code die maar ÊÊn keer hoeft te worden uitgevoerd
createCanvas(800,600);
background(0);
ruimteSchip = new RuimteSchip();
//maak de eerste 5 aliens aan
let numAliens = 5;
for (let i = 0; i < numAliens; i ++) {
aliens.push(new Alien((width / (numAliens * 2)) + ((width / numAliens) * i),0));
}
}
function draw() {
//plaats daar de code die continue herhaald moet worden.
background(0);
//spawn nieuwe aliens
if (frameCount % 180 === 0) {
spawnAliens();
}
//teken de kogels
for (let i = 0; i < kogels.length; i ++) {
kogels[i].update();
kogels[i].teken();
}
//teken en update alle aliens
for (let i = 0; i < aliens.length; i ++) {
aliens[i].teken();
aliens[i].update();
if (aliens[i].y > height) {
gameOver = true;
}
}
ruimteSchip.teken();
tekenGameOver();
}
function spawnAliens() {
//voeg 5 aliens toe aan het einde van de lijst
let numAliens = 5;
for (let i = 0; i < numAliens; i ++) {
aliens.push(new Alien((width / (numAliens * 2)) + ((width / numAliens) * i),0));
}
}
function tekenGameOver() {
if (gameOver === true) { //als een alien onderaan het scherm komt
if (frameCount % 30 < 15) {
//iedere eerste 15 frames van iedere 30 frames, teken zwarte achtergrond
background(0);
fill(255,0,0)
} else {
//anders teken een rode achtergrond
background(255,0,0)
fill(0)
}
textSize(48);
textAlign(CENTER);
text("GAME OVER", width / 2, height / 2)
// frameRate(0);
}
}
function mousePressed() {
console.log("Ik klik op de muis", mouseX, mouseY);
for (let i = 0; i < aliens.length; i ++) {
//reken de afstand uit tussen de muis en alle aliens
let afstand = dist(mouseX, mouseY, aliens[i].x, aliens[i].y)
if (afstand < aliens[i].size / 2) {
//verwijder deze alien als ie te dichtbij de muis bent
aliens.splice(i,1);
}
}
kogels.push(new Kogel(mouseX));
}
class RuimteSchip{
constructor() {
this.x = mouseX;
this.y = height - 50;
this.radius = 20;
}
teken() {
fill(0,255,0);
this.x = mouseX;
ellipse(this.x, this.y, this.radius)
// image(spaceShipPlaatje, this.x - 25, this.y,50,50)
}
}
class Kogel {
constructor(xPos) {
this.x = xPos;
this.y = height - 50;
this.size = 5;
this.ySpeed = -5;
makeNote(80,0.5,10);
}
update() {
this.y = this.y + this.ySpeed;
for (let i = 0; i < aliens.length; i ++) {
//reken de afstand uit tussen de muis en alle aliens
let afstand = dist(this.x, this.y, aliens[i].x, aliens[i].y)
if (afstand < aliens[i].size / 2) {
//verwijder deze alien als ie te dichtbij de muis bent
aliens.splice(i,1);
makeNote(50,0.8,20);
}
}
}
teken() {
fill(255,0,0)
ellipse(this.x, this.y, this.size)
}
}
class Alien {
//hier begint de beschrijving van een alien
constructor(xPos, yPos) {
//neem de positie aan die je meegegeven is
this.x = xPos;
this.y = yPos;
//kies een grootte
this.size = 20;
}
update() {
this.y = this.y + .5;
}
teken() {
rectMode(CENTER);
fill(255);
noStroke();
rect(this.x,this.y,this.size);
// image(alienPlaatje, this.x,this.y, this.size, this.size)
}
}