Challenge number 1

Dependencies:   IoTChallenge1

Committer:
schizzlewizzle
Date:
Mon Feb 11 12:13:52 2019 +0000
Revision:
0:8680a1ea7711
Child:
1:a308877d2475
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
schizzlewizzle 0:8680a1ea7711 1 #include "MicroBit.h"
schizzlewizzle 0:8680a1ea7711 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 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 0:8680a1ea7711 25
schizzlewizzle 0:8680a1ea7711 26 void checkCollision(){
schizzlewizzle 0:8680a1ea7711 27 if (xPos == obstacleX || xPos == obstacleX - 1 && y == 4){
schizzlewizzle 0:8680a1ea7711 28 gameOver = true;
schizzlewizzle 0:8680a1ea7711 29 }else{
schizzlewizzle 0:8680a1ea7711 30
schizzlewizzle 0:8680a1ea7711 31 gameOver = false;
schizzlewizzle 0:8680a1ea7711 32 }
schizzlewizzle 0:8680a1ea7711 33
schizzlewizzle 0:8680a1ea7711 34 }
schizzlewizzle 0:8680a1ea7711 35 void displayPlayerLocation(){
schizzlewizzle 0:8680a1ea7711 36 getXPos();
schizzlewizzle 0:8680a1ea7711 37 if (xPos < 0){
schizzlewizzle 0:8680a1ea7711 38 xPos = 0;
schizzlewizzle 0:8680a1ea7711 39 } else if(xPos > 4) {
schizzlewizzle 0:8680a1ea7711 40 xPos = 4;
schizzlewizzle 0:8680a1ea7711 41 }
schizzlewizzle 0:8680a1ea7711 42 if(direction == 1) {
schizzlewizzle 0:8680a1ea7711 43 uBit.display.image.setPixelValue(xPos - 1, 4, 0);
schizzlewizzle 0:8680a1ea7711 44 } else if(direction == 0) {
schizzlewizzle 0:8680a1ea7711 45 uBit.display.image.setPixelValue(xPos + 1, 4, 0);
schizzlewizzle 0:8680a1ea7711 46 }
schizzlewizzle 0:8680a1ea7711 47
schizzlewizzle 0:8680a1ea7711 48 checkCollision();
schizzlewizzle 0:8680a1ea7711 49 uBit.display.image.setPixelValue(xPos, 4, 255);
schizzlewizzle 0:8680a1ea7711 50 }
schizzlewizzle 0:8680a1ea7711 51 void displayObs(){
schizzlewizzle 0:8680a1ea7711 52 uBit.display.image.setPixelValue(obstacleX, y, 0);
schizzlewizzle 0:8680a1ea7711 53 obstacleX = uBit.random(5);
schizzlewizzle 0:8680a1ea7711 54
schizzlewizzle 0:8680a1ea7711 55 for (y = 0; y < 5; y++){ // descends the obstacles based on y value
schizzlewizzle 0:8680a1ea7711 56 uBit.display.image.setPixelValue(obstacleX, y, 255);
schizzlewizzle 0:8680a1ea7711 57 if (obstacleX > 0)
schizzlewizzle 0:8680a1ea7711 58 {
schizzlewizzle 0:8680a1ea7711 59 uBit.display.image.setPixelValue(obstacleX - 1, y, 255);
schizzlewizzle 0:8680a1ea7711 60 }
schizzlewizzle 0:8680a1ea7711 61 if (y > 0)
schizzlewizzle 0:8680a1ea7711 62 {
schizzlewizzle 0:8680a1ea7711 63 uBit.display.image.setPixelValue(obstacleX, y - 1, 0);
schizzlewizzle 0:8680a1ea7711 64 }
schizzlewizzle 0:8680a1ea7711 65 if (obstacleX > 0 && y > 0)
schizzlewizzle 0:8680a1ea7711 66 {
schizzlewizzle 0:8680a1ea7711 67 uBit.display.image.setPixelValue(obstacleX - 1, y - 1, 0);
schizzlewizzle 0:8680a1ea7711 68 }
schizzlewizzle 0:8680a1ea7711 69 if (score > 0)
schizzlewizzle 0:8680a1ea7711 70 {
schizzlewizzle 0:8680a1ea7711 71 uBit.sleep(500 - score);
schizzlewizzle 0:8680a1ea7711 72 }else if (score >= 500)
schizzlewizzle 0:8680a1ea7711 73 {
schizzlewizzle 0:8680a1ea7711 74 uBit.sleep(0);
schizzlewizzle 0:8680a1ea7711 75 }else{
schizzlewizzle 0:8680a1ea7711 76 uBit.sleep(500);
schizzlewizzle 0:8680a1ea7711 77 }
schizzlewizzle 0:8680a1ea7711 78 checkCollision();
schizzlewizzle 0:8680a1ea7711 79 displayPlayerLocation();
schizzlewizzle 0:8680a1ea7711 80 }
schizzlewizzle 0:8680a1ea7711 81 y = 4;
schizzlewizzle 0:8680a1ea7711 82 uBit.display.image.setPixelValue(obstacleX, y, 0);
schizzlewizzle 0:8680a1ea7711 83 uBit.display.image.setPixelValue(obstacleX - 1, y, 0);
schizzlewizzle 0:8680a1ea7711 84 score += 5;
schizzlewizzle 0:8680a1ea7711 85 }
schizzlewizzle 0:8680a1ea7711 86
schizzlewizzle 0:8680a1ea7711 87
schizzlewizzle 0:8680a1ea7711 88
schizzlewizzle 0:8680a1ea7711 89
schizzlewizzle 0:8680a1ea7711 90 int main(){
schizzlewizzle 0:8680a1ea7711 91 uBit.init();
schizzlewizzle 0:8680a1ea7711 92 while(gameOver == false){
schizzlewizzle 0:8680a1ea7711 93 displayObs();
schizzlewizzle 0:8680a1ea7711 94 }
schizzlewizzle 0:8680a1ea7711 95 uBit.display.scroll("Game Over, Score: ");
schizzlewizzle 0:8680a1ea7711 96 uBit.display.scroll(score);
schizzlewizzle 0:8680a1ea7711 97 }
schizzlewizzle 0:8680a1ea7711 98
schizzlewizzle 0:8680a1ea7711 99
schizzlewizzle 0:8680a1ea7711 100