IoT Challenge 1

Dependencies:   microbit-dal

Dependents:   IoTChallengeGame1

Committer:
schizzlewizzle
Date:
Mon Feb 11 11:34:34 2019 +0000
Revision:
15:138fa7c00834
v2

Who changed what in which revision?

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