-
-
Save AsedaDeveloper/340ca2444fb297b8ae1938b00932c9c6 to your computer and use it in GitHub Desktop.
| var PLAY = 1; | |
| var END = 0; | |
| var gameState = PLAY; | |
| var trex, trex_running, trex_collided; | |
| var ground, invisibleGround, groundImage; | |
| var cloud, cloudsGroup, cloudImage; | |
| var obstaclesGroup, obstacle1, obstacle2, obstacle3, obstacle4, obstacle5, obstacle6; | |
| var score; | |
| 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"); | |
| } | |
| function setup() { | |
| createCanvas(600, 200); | |
| trex = createSprite(50,180,20,50); | |
| trex.addAnimation("running", trex_running); | |
| trex.addAnimation("collided" , trex_collided); | |
| trex.scale = 0.5; | |
| ground = createSprite(200,180,400,20); | |
| ground.addImage("ground",groundImage); | |
| ground.x = ground.width /2; | |
| ground.velocityX = -4; | |
| invisibleGround = createSprite(200,190,400,10); | |
| invisibleGround.visible = false; | |
| // create Obstacles and Cloud groups | |
| obstaclesGroup = createGroup(); | |
| cloudsGroup = createGroup(); | |
| score = 0; | |
| } | |
| function draw() { | |
| background(150); | |
| text("Score: "+ score, 500,50); | |
| if(gameState === PLAY){ | |
| ground.velocityX = -4; | |
| score = score + Math.round(frameCount/60); | |
| if(keyDown("space")&& trex.y >= 100) { | |
| trex.velocityY = -13; | |
| } | |
| trex.velocityY = trex.velocityY + 0.8; | |
| if (ground.x < 0){ | |
| ground.x = ground.width/2; | |
| } | |
| spawnClouds(); | |
| spawnObstacles(); | |
| if (obstaclesGroup.isTouching(trex)) { | |
| gameState = END; | |
| obstaclesGroup.setVelocityXEach(0); | |
| cloudsGroup.setVelocityXEach(0); | |
| } | |
| } | |
| else if(gameState === END){ | |
| ground.velocityX = 0; | |
| } | |
| trex.collide(invisibleGround); | |
| drawSprites(); | |
| } | |
| function spawnObstacles(){ | |
| if (frameCount % 60 === 0){ | |
| var obstacle = createSprite(400,165,10,40); | |
| obstacle.velocityX = -6; | |
| // //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; | |
| //adding obstacles to the group | |
| obstaclesGroup.add(obstacle); | |
| } | |
| } | |
| function spawnClouds() { | |
| //write code here to spawn the clouds | |
| if (frameCount % 60 === 0) { | |
| cloud = createSprite(600,100,40,10); | |
| cloud.y = Math.round(random(10,60)); | |
| cloud.addImage(cloudImage); | |
| cloud.scale = 0.5; | |
| cloud.velocityX = -3; | |
| //assign lifetime to the variable | |
| cloud.lifetime = 134; | |
| //adjust the depth | |
| cloud.depth = trex.depth; | |
| trex.depth = trex.depth + 1; | |
| //adding cloud to the group | |
| cloudsGroup.add(cloud); | |
| } | |
| } |
var trex, trex_running, trex_collided;
var ground, invisibleGround, groundImage;
var cloud, cloudsGroup, cloudImage;
var obstaclesGroup, obstacle1, obstacle2, obstacle3, obstacle4, obstacle5, obstacle6;
var score;
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");
}
function setup() {
createCanvas(600, 200);
trex = createSprite(50,180,20,50);
trex.addAnimation("running", trex_running);
trex.addAnimation("collided", trex_collided);
trex.scale = 0.5;
ground = createSprite(200,180,400,20);
ground.addImage("ground",groundImage);
ground.x = ground.width/2;
ground.velocityX = -4;
invisibleGround = createSprite(200,190,400,10);
invisibleGround.visible = false;
obstaclesGroup = new Group();
cloudsGroup = new Group();
score = 0;
}
function draw() {
background(150);
text("Score: "+ score, 500,50);
if(gameState === PLAY){
ground.velocityX = -4;
score = score + Math.round(frameCount/60);
if(keyDown("space") && trex.y >= 100) {
trex.velocityY = -13;
}
trex.velocityY += 0.8;
if (ground.x < 0) ground.x = ground.width/2;
spawnClouds();
spawnObstacles();
if (obstaclesGroup.collide(trex)) {
gameState = END;
trex.changeAnimation("collided");
obstaclesGroup.setVelocityXEach(0);
cloudsGroup.setVelocityXEach(0);
}
}
else if(gameState === END){
ground.velocityX = 0;
}
trex.collide(invisibleGround);
drawSprites();
}
function spawnObstacles(){
if (frameCount % 60 === 0){
let obstacle = createSprite(400,165,10,40);
obstacle.velocityX = -6;
let 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;
}
obstacle.scale = 0.5;
obstacle.lifetime = 300;
obstaclesGroup.add(obstacle);
}
}
function spawnClouds() {
if (frameCount % 60 === 0) {
cloud = createSprite(600,100,40,10);
cloud.y = Math.round(random(10,60));
cloud.addImage(cloudImage);
cloud.scale = 0.5;
cloud.velocityX = -3;
cloud.lifetime = 134;
cloud.depth = trex.depth;
trex.depth++;
cloudsGroup.add(cloud);
}
}
</script>
Thanks
You have to run it in https://editor.p5js.org/