Challenge number 1

Dependencies:   IoTChallenge1

Committer:
schizzlewizzle
Date:
Mon Feb 11 13:39:58 2019 +0000
Revision:
1:a308877d2475
Parent:
0:8680a1ea7711
Child:
2:9b6d3e17f059
comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
schizzlewizzle 0:8680a1ea7711 1 #include "MicroBit.h"
schizzlewizzle 1:a308877d2475 2 /
schizzlewizzle 0:8680a1ea7711 3 int pLocationX;
schizzlewizzle 0:8680a1ea7711 4 int pLocationY;
schizzlewizzle 0:8680a1ea7711 5 int xPos = 2;
schizzlewizzle 0:8680a1ea7711 6 bool gameOver = false;
schizzlewizzle 0:8680a1ea7711 7 int y;
schizzlewizzle 0:8680a1ea7711 8 int obstacleX;
schizzlewizzle 0:8680a1ea7711 9 int score = 0;
schizzlewizzle 0:8680a1ea7711 10 int playX;
schizzlewizzle 0:8680a1ea7711 11 int direction = 0;
schizzlewizzle 0:8680a1ea7711 12 MicroBit uBit;
schizzlewizzle 0:8680a1ea7711 13
schizzlewizzle 1:a308877d2475 14 //Gets X value from microbit
schizzlewizzle 0:8680a1ea7711 15 void getXPos(){
schizzlewizzle 0:8680a1ea7711 16 playX = uBit.accelerometer.getX();
schizzlewizzle 0:8680a1ea7711 17 if(playX > 250){
schizzlewizzle 0:8680a1ea7711 18 xPos++;
schizzlewizzle 0:8680a1ea7711 19 direction = 1;
schizzlewizzle 0:8680a1ea7711 20 }else if (playX < -250) {
schizzlewizzle 0:8680a1ea7711 21 xPos--;
schizzlewizzle 0:8680a1ea7711 22 direction = 0;
schizzlewizzle 0:8680a1ea7711 23 }
schizzlewizzle 0:8680a1ea7711 24
schizzlewizzle 0:8680a1ea7711 25 }
schizzlewizzle 1:a308877d2475 26
schizzlewizzle 1:a308877d2475 27 //Compares player location with obstacle location to check collision.
schizzlewizzle 0:8680a1ea7711 28 void checkCollision(){
schizzlewizzle 0:8680a1ea7711 29 if (xPos == obstacleX || xPos == obstacleX - 1 && y == 4){
schizzlewizzle 0:8680a1ea7711 30 gameOver = true;
schizzlewizzle 0:8680a1ea7711 31 }else{
schizzlewizzle 0:8680a1ea7711 32
schizzlewizzle 0:8680a1ea7711 33 gameOver = false;
schizzlewizzle 0:8680a1ea7711 34 }
schizzlewizzle 0:8680a1ea7711 35
schizzlewizzle 0:8680a1ea7711 36 }
schizzlewizzle 1:a308877d2475 37
schizzlewizzle 1:a308877d2475 38 //Draws the player on screen, and ensures it cannot go off the side. Also clears lEDs as it moves.
schizzlewizzle 0:8680a1ea7711 39 void displayPlayerLocation(){
schizzlewizzle 0:8680a1ea7711 40 getXPos();
schizzlewizzle 0:8680a1ea7711 41 if (xPos < 0){
schizzlewizzle 0:8680a1ea7711 42 xPos = 0;
schizzlewizzle 0:8680a1ea7711 43 } else if(xPos > 4) {
schizzlewizzle 0:8680a1ea7711 44 xPos = 4;
schizzlewizzle 0:8680a1ea7711 45 }
schizzlewizzle 0:8680a1ea7711 46 if(direction == 1) {
schizzlewizzle 0:8680a1ea7711 47 uBit.display.image.setPixelValue(xPos - 1, 4, 0);
schizzlewizzle 0:8680a1ea7711 48 } else if(direction == 0) {
schizzlewizzle 0:8680a1ea7711 49 uBit.display.image.setPixelValue(xPos + 1, 4, 0);
schizzlewizzle 0:8680a1ea7711 50 }
schizzlewizzle 0:8680a1ea7711 51
schizzlewizzle 0:8680a1ea7711 52 checkCollision();
schizzlewizzle 0:8680a1ea7711 53 uBit.display.image.setPixelValue(xPos, 4, 255);
schizzlewizzle 0:8680a1ea7711 54 }
schizzlewizzle 1:a308877d2475 55
schizzlewizzle 1:a308877d2475 56 //Displays the falling leds, and also clears them afterwards
schizzlewizzle 0:8680a1ea7711 57 void displayObs(){
schizzlewizzle 0:8680a1ea7711 58 uBit.display.image.setPixelValue(obstacleX, y, 0);
schizzlewizzle 0:8680a1ea7711 59 obstacleX = uBit.random(5);
schizzlewizzle 0:8680a1ea7711 60
schizzlewizzle 0:8680a1ea7711 61 for (y = 0; y < 5; y++){ // descends the obstacles based on y value
schizzlewizzle 0:8680a1ea7711 62 uBit.display.image.setPixelValue(obstacleX, y, 255);
schizzlewizzle 0:8680a1ea7711 63 if (obstacleX > 0)
schizzlewizzle 0:8680a1ea7711 64 {
schizzlewizzle 0:8680a1ea7711 65 uBit.display.image.setPixelValue(obstacleX - 1, y, 255);
schizzlewizzle 0:8680a1ea7711 66 }
schizzlewizzle 0:8680a1ea7711 67 if (y > 0)
schizzlewizzle 0:8680a1ea7711 68 {
schizzlewizzle 0:8680a1ea7711 69 uBit.display.image.setPixelValue(obstacleX, y - 1, 0);
schizzlewizzle 0:8680a1ea7711 70 }
schizzlewizzle 0:8680a1ea7711 71 if (obstacleX > 0 && y > 0)
schizzlewizzle 0:8680a1ea7711 72 {
schizzlewizzle 0:8680a1ea7711 73 uBit.display.image.setPixelValue(obstacleX - 1, y - 1, 0);
schizzlewizzle 0:8680a1ea7711 74 }
schizzlewizzle 0:8680a1ea7711 75 if (score > 0)
schizzlewizzle 0:8680a1ea7711 76 {
schizzlewizzle 0:8680a1ea7711 77 uBit.sleep(500 - score);
schizzlewizzle 0:8680a1ea7711 78 }else if (score >= 500)
schizzlewizzle 0:8680a1ea7711 79 {
schizzlewizzle 0:8680a1ea7711 80 uBit.sleep(0);
schizzlewizzle 0:8680a1ea7711 81 }else{
schizzlewizzle 0:8680a1ea7711 82 uBit.sleep(500);
schizzlewizzle 0:8680a1ea7711 83 }
schizzlewizzle 0:8680a1ea7711 84 checkCollision();
schizzlewizzle 0:8680a1ea7711 85 displayPlayerLocation();
schizzlewizzle 0:8680a1ea7711 86 }
schizzlewizzle 0:8680a1ea7711 87 y = 4;
schizzlewizzle 0:8680a1ea7711 88 uBit.display.image.setPixelValue(obstacleX, y, 0);
schizzlewizzle 0:8680a1ea7711 89 uBit.display.image.setPixelValue(obstacleX - 1, y, 0);
schizzlewizzle 0:8680a1ea7711 90 score += 5;
schizzlewizzle 0:8680a1ea7711 91 }
schizzlewizzle 0:8680a1ea7711 92
schizzlewizzle 0:8680a1ea7711 93
schizzlewizzle 0:8680a1ea7711 94
schizzlewizzle 0:8680a1ea7711 95
schizzlewizzle 0:8680a1ea7711 96 int main(){
schizzlewizzle 0:8680a1ea7711 97 uBit.init();
schizzlewizzle 0:8680a1ea7711 98 while(gameOver == false){
schizzlewizzle 0:8680a1ea7711 99 displayObs();
schizzlewizzle 0:8680a1ea7711 100 }
schizzlewizzle 0:8680a1ea7711 101 uBit.display.scroll("Game Over, Score: ");
schizzlewizzle 0:8680a1ea7711 102 uBit.display.scroll(score);
schizzlewizzle 0:8680a1ea7711 103 }
schizzlewizzle 0:8680a1ea7711 104
schizzlewizzle 0:8680a1ea7711 105
schizzlewizzle 0:8680a1ea7711 106