| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /**
- Decomposition:
- * Ninja jumps in y direction when space is pressed
- * Ninja is animated every frame
- * rock moves from right to left
- * lose a point if the rock touches the ninja
- * shuriken moves from right to left
- * shuriken y position is randomized
- * lose a point if shuriken touches ninja
- * Scene has ninja jump code
- * Scene has rock spawn code
- * Scene has shuriken spawn code
- * Updates the score
- */
- //****************Scene Object - Initialize When Scene Starts Event*****************//
- if($this.scene.state() == "PLAY") {
- // set up score variables
- $this.score = 0;
- // timer for 2 seconds, spawn a new obstacle
- createTimer(2000, function() {
- var chance = random(100);
- if (chance <= 25) {
- $this.generateStone()
- } else if(chance <= 75) {
- $this.generateShuriken();
- } else {
- $this.generateStone();
- $this.generateShuriken();
- }
- // increase score after every spawn
- $this.score += 10;
- scoreLabel.text($this.score);
- });
- }
- $this.generateStone = function() {
- // clone the stone object
- var stoneClone = stone.clone();
- // position it off the screen
- stoneClone.x(850);
- // activate the clone for collision
- stoneClone.active = true;
- };
- $this.generateShuriken = function() {
- //clone the shuriken object
- var shurikenClone = shuriken.clone();
- // position it with a random y
- shurikenClone.x(850);
- shurikenClone.y(random(150,400));
- // randomize the speedX
- shurikenClone.speedX(random(-200,-100));
- // activate the clone for collision
- shurikenClone.active = true;
- };
- //*********************Stone Object - Update Every Frame Event********************//
- // always be moving
- $this.moveX();
- // if object goes off the screen, remove it
- if ($this.x() < -150) {
- $this.remove();
- }
- // if the object is active and it touches ninja
- if ($this.active && $this.isTouching(ninja)) {
- //deactivate object
- $this.active = false;
- //subtract points and update the UI
- $this.scene.score -= 5;
- scoreLabel.text($this.scene.score);
- }
- //*********************Shuriken Object - Update Every Frame***********************//
- // always be moving
- $this.moveX();
- // if the object goes off screen, remove it
- if ($this.x() < 150) {
- $this.remove();
- }
- // if the object is active and touchs the ninja
- if ($this.active && $this.isTouching(ninja)) {
- // deactivate this object
- $this.active = false;
- // subtract points and update the UI
- $this.scene -= 5;
- scoreLabel.text($this.scene.score);
- }
- //***********************Scene - Update Every Frame*********************************//
- //check to see if spacebar is pressed
- var spaceIsPressed = isKeyPressed(Keys.space);
- // if the spacebar is pressed
- // and ninja is not already jumping
- if (spaceIsPressed && !ninja.isJumping) {
- ninja.velocityY = -450;
- ninja.isJumping = true;
- }
- //*****************ninja Object - Initialize When Scene Starts Event*****************//
- $this.velocityY = 0;
- $this.isJumping = false;
- //********************ninja Object - Update Every Frame Event***********************//
- $this.incrementAnimation();
- // if the ninja is jumping
- if (this.isJumping) {
- // move the ninja based on its velocity
- $this.moveY($this.velocityY);
- //change the y velocity due to gravity
- $this.velocityY += 10;
- }
- // if the ninja touches the ground
- if ($this.y() > 500) {
- $this.isJumping = false;
- }
|