Challenge number 1

Dependencies:   IoTChallenge1

Committer:
schizzlewizzle
Date:
Mon Feb 11 13:46:22 2019 +0000
Revision:
2:9b6d3e17f059
Parent:
1:a308877d2475
code

Who changed what in which revision?

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