Quellcode durchsuchen

Add Endless Run for orange

Michael Tang vor 3 Jahren
Ursprung
Commit
ddaa65f4ee
1 geänderte Dateien mit 126 neuen und 0 gelöschten Zeilen
  1. 126 0
      03-orange/endless-run.js

+ 126 - 0
03-orange/endless-run.js

@@ -0,0 +1,126 @@
+/**
+
+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*******************//
+$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;
+}
+