xxxxxxxxxx
122
var canvasWidth = 800;
var canvasHeight = 700;
var batsSpawned = 0;
var arrayOfBats = [];
var goal = 10;
var win = false;
function preload() {
fontRegular = loadFont('fonts/PatrickHand-Regular.ttf');
bgImg = loadImage("images/Background.png");
var doorOpenImg = loadSpriteSheet("images/Doors.png", 250, 310, 13);
var vampireImg = loadSpriteSheet("images/Vampire.png", 180, 300, 8);
var vampireReleaseImg = loadSpriteSheet("images/VampireRelease.png", 280, 300, 12);
var batImg = loadSpriteSheet("images/Bat.png", 100, 100, 5);
vampireAnim = loadAnimation(vampireImg);
vampireReleaseAnim = loadAnimation(vampireReleaseImg);
batAnim = loadAnimation(batImg);
doorAnim = loadAnimation(doorOpenImg);
}
function setup() {
createCanvas(canvasWidth, canvasHeight);
createGameObjects();
}
function draw() {
background(bgImg);
drawSprites();
if (win==false){
drawText();
if (vampire.animation.getFrame() == 11) {
vampire.changeAnimation('idle');
}
}else{
displayWinScreen();
}
}
function drawText() {
textFont(fontRegular);
textSize(40);
fill('white');
text("Current Bats: " + batsSpawned, 40, 70);
textSize(30);
fill(color(0, 255, 153));
text("Goal: " + goal, 610, 650);
}
// <---------------------- Spawn and Remove Bats ----------------------> //
function spawnBats() {
for (let i = 0; i < random(10); i++) {
bat = createSprite(random(700), random(600));
bat.addAnimation('fly', batAnim);
batsSpawned = batsSpawned + 1;
arrayOfBats.push(bat);
}
checkNumOfBats();
}
function removeBats() {
for (let i = 0; i < random(arrayOfBats.length); i++) {
arrayOfBats.pop().remove();
batsSpawned = batsSpawned - 1;
}
checkNumOfBats();
}
// <---------------------- Check Number of Bats ----------------------> //
function checkNumOfBats() {
if (arrayOfBats.length == goal) {
win = true;
}
}
// <---------------------- Win Screen ----------------------> //
function displayWinScreen(){
door.remove();
vampire.remove();
textAlign(CENTER, CENTER);
textFont(fontRegular);
textSize(40);
fill('white');
text("There are " + goal + " bats!", width/2, (height/2)-100);
textSize(70);
fill(color(0, 255, 153));
text("You win! ", width/2, height/2);
}
// <---------------------- Create Game Objects ----------------------> //
function createGameObjects() {
door = createSprite(130, 250);
door.addAnimation('door', doorAnim);
door.animation.stop();
door.animation.looping = false;
door.animation.changeFrame(13);
door.onMousePressed = function() {
if (batsSpawned > 0) {
door.animation.changeFrame(0);
door.animation.play();
removeBats();
}
}
vampire = createSprite(485, 400);
vampire.addAnimation('idle', vampireAnim);
vampire.addAnimation('release', vampireReleaseAnim);
vampire.onMousePressed = function() {
vampire.changeAnimation('release');
vampire.animation.changeFrame(0);
vampire.animation.play();
spawnBats();
}
}