xxxxxxxxxx
137
let SCROLL_SPEED;
let clouds = [];
let goose;
let jellos = [];
let powerUp;
let score = 0;
let jelloInterval = 30;
let gooseImg;
let bg;
let star;
let titleImg;
let gameOverImg;
let gameStarted = false;
let gameOver = false;
function preload() {
gooseImg = loadImage('goose.png');
bg = loadImage('ct-background.png');
star = loadImage('ct-star.png');
titleImg = loadImage('title.png');
gameOverImg = loadImage('game-over.png');
}
function setup() {
createCanvas(windowWidth, windowHeight);
SCROLL_SPEED = width / 120;
for (let i = 0; i < 12; i++) {
clouds.push(new Cloud());
}
goose = new Goose(width / 2, height / 2, gooseImg);
powerUp = new PowerUp(star);
}
function draw() {
if (gameOver) {
image(gameOverImg, 0, 0, width, height);
noLoop();
} else {
image(bg, 0, 0, width, height);
for (let cloud of clouds) {
cloud.update();
cloud.show();
}
if (gameStarted) {
powerUp.update();
if (powerUp.collected(goose)) {
goose.applyForce(createVector(20, 0));
powerUp.pos.x = -100;
}
powerUp.show();
for (let jello of jellos) {
jello.update();
if (jello.contains(goose.pos, goose.r * 0.5)) {
goose.fakeDrag(jello.density);
}
}
controlGoose();
// universal drag
goose.drag(0.1);
goose.update();
}
goose.show();
if (gameStarted) {
// so goose shows up below jellos
for (let jello of jellos) {
jello.show();
}
if (goose.pos.x <= -goose.r) {
gameOver = true;
}
if (frameCount % jelloInterval == 0) {
addJello();
}
if (frameCount % 200 == 0) {
powerUp.reset();
}
// display score
fill(0);
text(`SCORE: ${score}`, 10, 20);
} else {
image(titleImg, 0, 0, width, height);
}
for (let i = jellos.length - 1; i >= 0; i--) {
if (jellos[i].pos.x < -100) {
jellos.splice(i, 1);
score++;
if (score % 10 === 0) {
jelloInterval--;
if (jelloInterval < 10) {
jelloInterval = 10;
}
}
}
}
}
}
function controlGoose() {
if (keyIsDown(UP_ARROW)) {
goose.applyForce(createVector(0, -5));
}
if (keyIsDown(DOWN_ARROW)) {
goose.applyForce(createVector(0, 5));
}
}
function keyPressed() {
gameStarted = true;
}
function addJello() {
jellos.push(new Jello(width + 100, random(height), random(width / 20, width / 10), random(0.1, 0.3)));
}