xxxxxxxxxx
210
var PLAY = 1;
var END = 0;
var gameState = PLAY;
var trex, trex_running, trex_collided;
var ground, invisibleGround, groundImage;
var cloudsGroup, cloudImage;
var obstaclesGroup, obstacle1, obstacle2, obstacle3, obstacle4, obstacle5, obstacle6;
var birdsGroup, birdAnimation;
var score=0;
var gameOver, restart;
var jumpSound, hitSound, checkpointSound;
var HighestScore = 0;
function preload(){
trex_running = loadAnimation("trex1.png","trex3.png","trex4.png");
trex_collided = loadAnimation("trex_collided.png");
groundImage = loadImage("ground2.png");
cloudImage = loadImage("cloud.png");
obstacle1 = loadImage("obstacle1.png");
obstacle2 = loadImage("obstacle2.png");
obstacle3 = loadImage("obstacle3.png");
obstacle4 = loadImage("obstacle4.png");
obstacle5 = loadImage("obstacle5.png");
obstacle6 = loadImage("obstacle6.png");
gameOverImg = loadImage("gameOver.png");
restartImg = loadImage("restart.png");
jumpSound = loadSound("jump.mp3");
hitSound = loadSound("hit.mp3");
checkpointSound = loadSound("checkpoint.mp3");
}
function setup() {
createCanvas(600, 200);
trex = createSprite(50,170,20,50);
trex.addAnimation("running", trex_running);
trex.addAnimation("collided", trex_collided);
trex.scale = 0.5;
trex.setCollider("circle",0,0,30);
ground = createSprite(200,180,400,20);
ground.addImage("ground",groundImage);
ground.x = ground.width /2;
ground.velocityX = -(6 + 3*score/100);
gameOver = createSprite(300,100);
gameOver.addImage(gameOverImg);
restart = createSprite(300,140);
restart.addImage(restartImg);
gameOver.scale = 0.5;
restart.scale = 0.5;
gameOver.visible = false;
restart.visible = false;
invisibleGround = createSprite(200,190,400,10);
invisibleGround.visible = false;
cloudsGroup = new Group();
obstaclesGroup = new Group();
score = 0;
}
function draw() {
background(255);
text("Score: "+ score, 500,50);
if (gameState===PLAY){
score = score + Math.round(getFrameRate()/60);
ground.velocityX = -(6 + 3*score/100);
if (score>0 && score%100 === 0){
checkpointSound.play();
}
if(keyDown("space") && trex.y >= 152) {
jumpSound.play();
trex.velocityY = -12;
}
trex.velocityY = trex.velocityY + 0.8
if (ground.x < 0){
ground.x = ground.width/2;
}
spawnClouds();
spawnObstacles();
if(HighestScore > 0){
text("HI : "+ HighestScore, 430,50);
}
if(obstaclesGroup.isTouching(trex)){
hitSound.play();
gameState = END;
}
}
else if (gameState === END) {
gameOver.visible = true;
restart.visible = true;
ground.velocityX = 0;
trex.velocityY = 0;
trex.changeAnimation("collided",trex_collided);
obstaclesGroup.setLifetimeEach(-1);
cloudsGroup.setLifetimeEach(-1);
obstaclesGroup.setVelocityXEach(0);
cloudsGroup.setVelocityXEach(0);
if(HighestScore<score){
HighestScore = score;
}
text("HI : "+ HighestScore, 430,50);
if(mousePressedOver(restart)) {
jumpSound.play();
reset();
}
}
trex.collide (invisibleGround);
drawSprites();
}
function spawnClouds() {
//write code here to spawn the clouds
if (frameCount % 60 === 0) {
var cloud = createSprite(600,120,40,10);
cloud.y = Math.round(random(80,120));
cloud.addImage(cloudImage);
cloud.scale = 0.5;
cloud.velocityX = -3;
//assign lifetime to the variable
cloud.lifetime = 200;
//adjust the depth
cloud.depth = trex.depth;
trex.depth = trex.depth + 1;
//add each cloud to the group
cloudsGroup.add(cloud);
}
}
function spawnObstacles() {
if(frameCount % 60 === 0) {
var obstacle = createSprite(600,165,10,40);
obstacle.velocityX = -(6 + 3*score/100);
//generate random obstacles
var rand = Math.round(random(1,6));
switch(rand) {
case 1: obstacle.addImage(obstacle1);
break;
case 2: obstacle.addImage(obstacle2);
break;
case 3: obstacle.addImage(obstacle3);
break;
case 4: obstacle.addImage(obstacle4);
break;
case 5: obstacle.addImage(obstacle5);
break;
case 6: obstacle.addImage(obstacle6);
break;
default: break;
}
//assign scale and lifetime to the obstacle
obstacle.scale = 0.5;
obstacle.lifetime = 300;
//add each obstacle to the group
obstaclesGroup.add(obstacle);
}
}
function reset(){
gameState = PLAY;
gameOver.visible = false;
restart.visible = false;
obstaclesGroup.destroyEach();
cloudsGroup.destroyEach();
trex.changeAnimation("running",trex_running);
score = 0;
}