Challenge number 1
main.cpp@1:a308877d2475, 2019-02-11 (annotated)
- 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?
User | Revision | Line number | New 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 |