xxxxxxxxxx
209
var canvasWidth = 900;
var canvasHeight = 700;
var candy;
var displayingSpell = false;
var spell;
invisible = false;
itemPressed = false;
gameEnded = false;
function preload() {
fontRegular = loadFont("fonts/PatrickHand-Regular.ttf");
bgImg = loadImage("images/Background2.png");
candyImg = loadImage("images/Candy.png");
catImg = loadSpriteSheet("images/Cat.png", 140, 150, 9);
catIvisImg = loadSpriteSheet("images/Cat_Invisible.png", 140, 150, 9);
broomImg = loadSpriteSheet("images/Broom.png", 90, 290, 16);
monsterImg = loadSpriteSheet("images/Monster.png", 140, 230, 12);
ghostImg = loadSpriteSheet("images/Ghost.png", 110, 170, 9);
pumpkinImg = loadSpriteSheet("images/Pumpkin.png", 160, 160, 8);
catAnim = loadAnimation(catImg);
catInvisAnim = loadAnimation(catIvisImg);
broomAnim = loadAnimation(broomImg);
monsterAnim = loadAnimation(monsterImg);
ghostAnim = loadAnimation(ghostImg);
pumpkinAnim = loadAnimation(pumpkinImg);
}
function setup() {
createCanvas(canvasWidth, canvasHeight);
createGameObjects();
}
function createGameObjects() {
backgroundSprite = createSprite(width / 2, height / 2, 900, 700);
backgroundSprite.addImage(bgImg);
cat = createSprite(60, 550, 140, 150);
cat.setCollider("rectangle", 0, 0, 110, 110)
cat.addAnimation("walk", catAnim);
cat.addAnimation("invisible", catInvisAnim);
broom = createSprite(width - 80, 480, 90, 290);
broom.addAnimation("glow", broomAnim);
ghost = createSprite(width - 200, 200, 110, 170);
ghost.setCollider("rectangle", 0, 0, 80, 140)
ghost.addAnimation("float", ghostAnim);
ghost.attractionPoint(1.3, cat.position.x, cat.position.y);
monsters = new Group();
monster = createSprite(450, 500, 170, 280);
monster.setCollider("rectangle", 20, 0, 70, 260)
monster.addAnimation("walk", monsterAnim);
monsters.add(monster);
monster = createSprite(500, 500, 170, 280);
monster.setCollider("rectangle", 20, 0, 70, 260)
monster.addAnimation("walk", monsterAnim);
monsters.add(monster);
monster = createSprite(550, 500, 170, 280);
monster.setCollider("rectangle", 20, 0, 70, 260)
monster.addAnimation("walk", monsterAnim);
monsters.add(monster);
candy = createSprite(1000, 1000, 50, 50);
pumpkin = createSprite(280, 550, 100, 100);
pumpkin.setCollider("circle", 0, 0, 70)
pumpkin.addAnimation("idle", pumpkinAnim);
readInput();
}
function draw() {
background("orange");
if (!gameEnded) {
moveCat();
drawSprites();
displaySpell();
}
collisions();
}
function collisions() {
cat.overlap(broom, youWin);
cat.overlap(ghost, gameOverGhost);
cat.overlap(pumpkin, gameOverGhost);
cat.overlap(monsters, gameOverMonster);
ghost.overlap(candy, stopGhost);
}
//------------------------- Check Inputs -------------------------//
function readInput(){
pumpkin.onMousePressed = function() {
itemPressed = true;
displaySpell("Teleport");
pumpkin.position.x = random(canvasWidth);
pumpkin.position.y = random(canvasHeight);
}
cat.onMousePressed = function() {
itemPressed = true;
if (invisible == false) {
displaySpell("Invisible");
invisible = true;
cat.changeAnimation('invisible');
}
else {
displaySpell("Visible");
invisible = false;
cat.changeAnimation('walk');
}
}
}
function mouseClicked() {
if (itemPressed == false && gameEnded == false) {
displaySpell("Create Candy");
candy.remove();
candy = createSprite(mouseX, mouseY, 50, 50);
candy.addImage(candyImg);
ghost.setVelocity(0, 0);
ghost.attractionPoint(1.3, candy.position.x, candy.position.y);
}
itemPressed = false;
}
//------------------------- Character Movement -------------------------//
function moveCat() {
cat.position.x += 0.65;
}
function stopGhost() {
ghost.setVelocity(0, 0);
candy.remove();
ghost.attractionPoint(1.3, cat.position.x, cat.position.y);
}
//------------------------- Game Over Screens -------------------------//
function youWin() {
if (!invisible) {
ghost.remove();
monster.remove();
pumpkin.remove();
gameEnded = true;
displayWinScreen();
}
}
function gameOverMonster() {
if (!invisible) {
gameEnded = true;
displayGameOverScreen();
}
}
function gameOverGhost() {
gameEnded = true;
displayGameOverScreen();
}
//------------------------- Display Screen Info -------------------------//
function castSpell(spellCast) {
spell = spellCast;
displayingSpell = true;
setTimeout(function() {
displayingSpell = false;
}, 1000);
}
function displaySpell() {
if (displayingSpell) {
textAlign(CENTER, CENTER);
textFont(fontRegular);
textSize(50);
fill('white');
text(spell + "!", width / 2, height - 60);
}
}
function displayGameOverScreen() {
textAlign(CENTER, CENTER);
textFont(fontRegular);
textSize(40);
fill('white');
text("You've been defeated!", width / 2, (height / 2) - 100);
textSize(70);
fill(color(136, 30, 228));
text("Game Over ", width / 2, height / 2);
}
function displayWinScreen() {
textAlign(CENTER, CENTER);
textFont(fontRegular);
textSize(40);
fill('white');
text("You made it to the broom!", width / 2, (height / 2) - 100);
textSize(70);
fill(color(63, 171, 67));
text("You win! ", width / 2, height / 2);
}