xxxxxxxxxx
288
// <-------------- Variables -------------->
// Screen size
var canvasWidth = 700;
var canvasHeight = 600;
// Game pieces
var character;
var treasure;
var rock;
var ocean;
var giant;
var tree;
// Images
var pathImg;
var bgImg;
var giantImg;
var rockImg;
var treeImg;
// Animations
var walkAnimation;
var idleAnimation;
var victoryAnimation;
var damageAnimation;
var oceanAnimation;
var treasureAnimation;
var giantAnimation;
// Game values
var name = 'Eevee';
var password = 'cold'; // the password is one word and all lowercase!
var gold = 105;
var gameEnded= false;
var turn = 0;
let secretCode;
var encountered = false;
// <-------------- Starting Functions -------------->
function preload(){
// Load images
bgImg = loadImage("images/grass-bg.png");
bgImgSmall = loadImage("images/grass-bg-small.png");
pathImg = loadImage("images/paths.png");
rockImg = loadImage("images/rock.png");
treeImg = loadImage("images/tree.png");
var playerIdleImg = loadSpriteSheet("images/character-idle.png", 100, 100, 8);
var playerWalkImg = loadSpriteSheet("images/character-walk.png", 100, 100, 8);
var playerVictory = loadSpriteSheet("images/character-victory.png",100,100,5);
var playerDamage = loadSpriteSheet("images/character-damage.png",100,100,9);
var oceanImg = loadSpriteSheet("images/ocean.png", 300, 250, 12);
var treasureImg = loadSpriteSheet("images/treasure.png", 100, 100, 6);
var giantImg = loadSpriteSheet("images/giant.png",110,150,13);
//Create Animations
walkAnimation= loadAnimation(playerWalkImg);
walkAnimation.looping = false;
idleAnimation= loadAnimation(playerIdleImg);
victoryAnimation = loadAnimation(playerVictory);
damageAnimation = loadAnimation(playerDamage);
oceanAnimation= loadAnimation(oceanImg);
treasureAnimation= loadAnimation(treasureImg);
giantAnimation = loadAnimation(giantImg);
}
function setup() {
// Set the scene
createCanvas(canvasWidth, canvasHeight);
setInterval(moveCharacter,1000);
// Create game parts
secretCode = new secret();
createGameObjects();
// Welcome display
if(password !=secretCode.getPassword()){
alert("Hello " + name + ". What can you catch but not throw?");
}else{
alert("Welcome "+name+" to the Decoder game!");
}
}
// <-------------- Game Play -------------->
function draw() {
if(password == secretCode.getPassword() && gameEnded == false) {
setupLevel();
drawSprites();
}
else{
pregameMenu();
}
}
function moveCharacter(){
if(password == secretCode.getPassword() && gameEnded == false) {
switch (turn){
case 1:
moveRight();
break;
case 2:
moveRight();
break;
case 3:
moveRight();
break;
case 4:
moveRight();
break;
case 5:
moveRight();
break;
case 6:
moveRight();
break;
case 7:
moveUp();
break;
case 8:
moveUp();
break;
case 9:
moveUp();
break;
case 10:
moveUp();
break;
case 11:
moveRight();
break;
case 12:
moveRight();
break;
case 13:
moveRight();
break;
case 14:
moveRight();
break;
case 15:
moveUp();
break;
case 16:
moveUp();
break;
case 17:
moveUp();
break;
case 13:
moveUp();
break;
case 18:
moveUp();
break;
case 19:
moveUp();
break;
}
turn++;
}
}
// <-------------- Character Movement -------------->
function moveUp(){
animateSlime();
character.position.y -=50;
}
function moveRight(){
animateSlime();
character.position.x +=50;
}
// <-------------- Gameplay Functions -------------->
function encounterGiant(){
if(encountered == false){
encountered = true;
// Giant's gold code
if(gold <= secretCode.getGoldMinimum()){
alert("Not enough gold ARGGHHH!");
gameOver();
}else if (gold >secretCode.getGoldMinimum() && gold <secretCode.getGoldMaximum()){
alert("THE PERFECT AMOUNT OF GOLD!!");
giant.scale =0.5;
}else{
alert("TOOOOO MUCH GOLD");
gameOver();
}
}
}
// <-------------- Setup Functions -------------->
function createGameObjects(){
// Create tree
tree = createSprite(200, 200,155, 155);
tree.addImage(treeImg);
// Create rock
rock = createSprite(250, 450,100, 100);
rock.addImage(rockImg);
// Create ocean
//ocean = createSprite(528, 140,300, 300);
//ocean.addAnimation('waves',oceanAnimation);
// Create giant
giant = createSprite(550, 350,150, 150);
giant.addAnimation('giant',giantAnimation);
// Create treasure
treasure = createSprite(550, 100,100, 100);
treasure.addAnimation('treasure',treasureAnimation);
//Create character
character = createSprite(50, 550, 100, 100);
character.maxSpeed = 6;
character.addAnimation('walk',walkAnimation);
character.addAnimation('victory',victoryAnimation);
character.addAnimation('damage',damageAnimation);
// Create collisions
character.setCollider("rectangle", 0, 17, 33, 65);
tree.setCollider("rectangle", 0, 0, 57, 89);
rock.setCollider("rectangle", 0, 0, 50, 50);
giant.setCollider("rectangle", 0, 0, 80, 50);
treasure.setCollider("rectangle", 0, 0, 50, 50);
//ocean.setCollider("rectangle", 0, 0, 200, 100);
}
function animateSlime(){
character.animation.changeFrame(0);
character.animation.play();
}
function setupLevel(){
if (canvasWidth >= 700) {
background(bgImg);
} else {
background(bgImgSmall)
}
image(pathImg,0,0);
fill(255);
textSize(25);
text('Get to the treasure, '+name + '!', 40, 100);
text('Gold: ' + gold, 40, 140);
// Character Collisions
character.overlap(treasure, victory);
character.overlap(rock, gameOver);
character.overlap(tree, gameOver);
character.overlap(giant, encounterGiant);
//character.overlap(ocean, gameOver);
}
// <-------------- Game State Functions -------------->
function victory(){
if (gameEnded == false){
alert("I did it!");
character.changeAnimation('victory');
gameEnded = true;
}
}
function gameOver(){
if (gameEnded == false){
gameEnded = true;
character.changeAnimation('damage');
alert(name+' has fallen!');
}
}
function pregameMenu(){
background(255);
textAlign(CENTER);
if(gameEnded){
text('Game Over...', width/2, height/2);
}else{
text('Input password to proceed...', width/2, height/2);
}
}