|
|
@@ -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;
|
|
|
+}
|
|
|
+
|