Skip to content

Instantly share code, notes, and snippets.

@AsedaDeveloper
Last active December 1, 2020 22:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AsedaDeveloper/340ca2444fb297b8ae1938b00932c9c6 to your computer and use it in GitHub Desktop.
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);
}
}
@AsedaDeveloper
Copy link
Author

You have to run it in https://editor.p5js.org/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment