let noiseY;
let noiseSpeed = 0.07;
let noiseHeight = 20;
let bubbles = [];
let enemies = [];
let score = 0;
function setup() {
createCanvas(600, 600);
//background(10, 50, 255);
noiseY = height * 3.2 / 4;
//}
// spawn the enemies or in this case trash/waste
for (let e = 0; e < 15; e++) {
let enemy = {
x: random(0, width),
y: random(-600, 0),
c: color(random(255), random(255), random(255))
};
enemies.push(enemy);
}
}
function drawOceanWaves() {
// draw ocean waves
for (let i = 0; i < 4; i++) {
let offsetY = i * 90;
noFill();
//fill('blue')
stroke(255, 20);
strokeWeight(height / 2);
beginShape();
curveVertex(2, height / 2);
for (let x = 0; x < width; x += 40) {
let y = noise(frameCount * noiseSpeed + x + i) * noiseHeight + noiseY + offsetY;
curveVertex(x, y);
}
curveVertex(width, height / 4);
endShape();
}
}
function draw() {
background(10, 20, 200);
// draw ocean waves
drawOceanWaves ();
fill('blue');
strokeWeight(0);
// draw player
rectMode(CENTER);
ellipse(mouseX, height - 20, 20);
// draw bubbles update
for (let bubble of bubbles) {
bubble.y -= 15;
circle(bubble.x, bubble.y, 20);
//fill('blue');
}
fill(255);
// draw enemies update
for (let enemy of enemies) {
enemy.y += 4;
fill(enemy.c);
square(enemy.x, enemy.y, 40);
if (enemy.y > height) {
fill(255);
text("Game Over!", width / 2.5, height / 2);
noLoop();
}
}
// collisions
for (let enemy of enemies) {
for (let bubble of bubbles) {
if (dist(enemy.x, enemy.y, bubble.x, bubble.y) < 80) {
enemies.splice(enemies.indexOf(enemy), 1);
bubbles.splice(bubbles.indexOf(bubble), 1);
let newEnemy = {
x: random(0, width),
y: random(-800, 0),
c: color(random(255), random(255), random(255))
};
enemies.push(newEnemy);
// each hit counts as 1
score += 1;
}
}
}
fill(255);
textSize(30);
text(score, 20, 30);
}
// shoot bubbles
function keyPressed() {
if (key === " ") {
let bubble = {
x: mouseX,
y: height - 50,
};
bubbles.push(bubble);
}
}
So originally I was going to create an image with trash being left out in the ocean to represent ocean pollution. I dropped that idea since I felt like it was too simple and I couldn’t run a local server in the past. I finally decided that I wanted to code a game. The idea was to represent squares as waste being thrown in the ocean and there’s a player who has to shoot down as many waste before it reaches past the canvas. I re wrote all of my code and started from scratch. I watched tutorials on youtube and looked up on google on how to use for of loop on JavaScript. When coding the game I had a lot of issues especially with the text and textsize syntax. I found out later that my brackets were off and were interfering with my other parameters. I finally got the game to work and I’ve never felt this satisfied with myself since coding for me is a whole different language and a very difficult skill to learn. How the game works is that you have to shoot as many squares (trash) before it reaches past the canvas. You drag MouseX to move around the canvas. There is also a score on the top left. Each hit counts as 1. You press spacebar to shoot the bubbles. If the squares go past the canvas “Game Over!”. If I had more time to work on this game I would want to add a healthbar for the player or randomize the speed of the squares. Its a simple game but I am proud of the results.