Frogger in progress. Currently the digital input is non-functioning. Cars do not erase path, death-thread not complete.

Dependencies:   4DGL-uLCD-SE PinDetect SDFileSystem mbed-rtos mbed wave_player

Committer:
swilliams346
Date:
Sat Oct 29 22:15:03 2016 +0000
Revision:
0:9f1095365b9a
Child:
1:abd7e0631db8
10/29/2016

Who changed what in which revision?

UserRevisionLine numberNew contents of line
swilliams346 0:9f1095365b9a 1 //robot
swilliams346 0:9f1095365b9a 2 class Robot
swilliams346 0:9f1095365b9a 3 {
swilliams346 0:9f1095365b9a 4 Mutex stdio_mutex;
swilliams346 0:9f1095365b9a 5 public:
swilliams346 0:9f1095365b9a 6 void drawFrog() {
swilliams346 0:9f1095365b9a 7 uLCD.filled_rectangle(XPosition-5,YPosition-5,XPosition+5,YPosition+5,RED);
swilliams346 0:9f1095365b9a 8 }
swilliams346 0:9f1095365b9a 9
swilliams346 0:9f1095365b9a 10 void drawOutline() {
swilliams346 0:9f1095365b9a 11 uLCD.line(0, 0 , 0, 127, BLACK);
swilliams346 0:9f1095365b9a 12 uLCD.line(0, 0 , 127, 0, BLACK);
swilliams346 0:9f1095365b9a 13 uLCD.line(127, 127 , 0, 127, BLACK);
swilliams346 0:9f1095365b9a 14 uLCD.line(127, 127 , 127, 0, BLACK);
swilliams346 0:9f1095365b9a 15 }
swilliams346 0:9f1095365b9a 16
swilliams346 0:9f1095365b9a 17 void drawGrass(int Xp,int Yp) {
swilliams346 0:9f1095365b9a 18 uLCD.filled_rectangle(Xp-10,Yp-10,Xp+10,Yp+10,GREEN);
swilliams346 0:9f1095365b9a 19 }
swilliams346 0:9f1095365b9a 20
swilliams346 0:9f1095365b9a 21 void drawBar(int Xp,int Yp) {
swilliams346 0:9f1095365b9a 22 uLCD.filled_rectangle(Xp-10,Yp-10,Xp+10,Yp+10,BLACK);
swilliams346 0:9f1095365b9a 23 }
swilliams346 0:9f1095365b9a 24
swilliams346 0:9f1095365b9a 25 void drawRoad(int Xp,int Yp) {
swilliams346 0:9f1095365b9a 26 uLCD.filled_rectangle(Xp-10,Yp-10,Xp+10,Yp+10,BLACK);
swilliams346 0:9f1095365b9a 27 uLCD.filled_rectangle(Xp-2,Yp-1,Xp+2,Yp+1,WHITE);
swilliams346 0:9f1095365b9a 28 }
swilliams346 0:9f1095365b9a 29
swilliams346 0:9f1095365b9a 30 void drawCar1(int Position1) {
swilliams346 0:9f1095365b9a 31 stdio_mutex.lock();
swilliams346 0:9f1095365b9a 32 uLCD.filled_rectangle(Position1-10,95-4,Position1+10,95+4,BLUE);
swilliams346 0:9f1095365b9a 33 stdio_mutex.unlock();
swilliams346 0:9f1095365b9a 34 }
swilliams346 0:9f1095365b9a 35
swilliams346 0:9f1095365b9a 36 void drawWater(int Xp,int Yp) {
swilliams346 0:9f1095365b9a 37 uLCD.filled_rectangle(Xp-10,Yp-10,Xp+10,Yp+10,BLUE);
swilliams346 0:9f1095365b9a 38 if(Xp == 11 || Xp == 53 || Xp == 95){
swilliams346 0:9f1095365b9a 39 uLCD.filled_rectangle(Xp-6,Yp-6,Xp+6,Yp+6,GREEN);
swilliams346 0:9f1095365b9a 40 }
swilliams346 0:9f1095365b9a 41 }
swilliams346 0:9f1095365b9a 42
swilliams346 0:9f1095365b9a 43 void drawDrown1() {
swilliams346 0:9f1095365b9a 44 uLCD.filled_rectangle(XPosition-10,YPosition-10,XPosition+10,YPosition+10,BLUE);
swilliams346 0:9f1095365b9a 45 uLCD.filled_rectangle(XPosition-4,YPosition-4,XPosition+4,YPosition+4,RED);
swilliams346 0:9f1095365b9a 46 uLCD.circle(XPosition, YPosition , 2, WHITE);
swilliams346 0:9f1095365b9a 47 }
swilliams346 0:9f1095365b9a 48 void drawDrown2() {
swilliams346 0:9f1095365b9a 49 uLCD.filled_rectangle(XPosition-10,YPosition-10,XPosition+10,YPosition+10,BLUE);
swilliams346 0:9f1095365b9a 50 uLCD.filled_rectangle(XPosition-3,YPosition-3,XPosition+3,YPosition+3,RED);
swilliams346 0:9f1095365b9a 51 uLCD.circle(XPosition, YPosition, 3, WHITE);
swilliams346 0:9f1095365b9a 52 }
swilliams346 0:9f1095365b9a 53 void drawDrown3() {
swilliams346 0:9f1095365b9a 54 uLCD.filled_rectangle(XPosition-10,YPosition-10,XPosition+10,YPosition+10,BLUE);
swilliams346 0:9f1095365b9a 55 uLCD.filled_rectangle(XPosition-1,YPosition-1,XPosition+1,YPosition+1,RED);
swilliams346 0:9f1095365b9a 56 uLCD.circle(XPosition, YPosition, 4 , WHITE);
swilliams346 0:9f1095365b9a 57 }
swilliams346 0:9f1095365b9a 58 void drawDrown4() {
swilliams346 0:9f1095365b9a 59 uLCD.filled_rectangle(XPosition-10,YPosition-10,XPosition+10,YPosition+10,BLUE);
swilliams346 0:9f1095365b9a 60 uLCD.circle(XPosition, YPosition, 5 , WHITE);
swilliams346 0:9f1095365b9a 61 uLCD.circle(XPosition, YPosition, 2 , WHITE);
swilliams346 0:9f1095365b9a 62 }
swilliams346 0:9f1095365b9a 63 void drawDrown5() {
swilliams346 0:9f1095365b9a 64 uLCD.filled_rectangle(XPosition-10,YPosition-10,XPosition+10,YPosition+10,BLUE);
swilliams346 0:9f1095365b9a 65 }
swilliams346 0:9f1095365b9a 66
swilliams346 0:9f1095365b9a 67 void drawHelper(int Xp,int Yp) {
swilliams346 0:9f1095365b9a 68 if(Yp == 11) {
swilliams346 0:9f1095365b9a 69 drawBar(Xp,Yp); //Row 1
swilliams346 0:9f1095365b9a 70 }
swilliams346 0:9f1095365b9a 71 if(Yp == 32){
swilliams346 0:9f1095365b9a 72 drawGrass(Xp,Yp); //Row 2
swilliams346 0:9f1095365b9a 73 }
swilliams346 0:9f1095365b9a 74 if(Yp == 53){
swilliams346 0:9f1095365b9a 75 drawRoad(Xp,Yp); //Row 3
swilliams346 0:9f1095365b9a 76 }
swilliams346 0:9f1095365b9a 77 if(Yp == 74){
swilliams346 0:9f1095365b9a 78 drawWater(Xp,Yp); //Row 4
swilliams346 0:9f1095365b9a 79 }
swilliams346 0:9f1095365b9a 80 if(Yp == 95){
swilliams346 0:9f1095365b9a 81 drawRoad(Xp,Yp); //Row 5
swilliams346 0:9f1095365b9a 82 }
swilliams346 0:9f1095365b9a 83 if(Yp == 116){
swilliams346 0:9f1095365b9a 84 drawGrass(Xp,Yp); //Row 6
swilliams346 0:9f1095365b9a 85 }
swilliams346 0:9f1095365b9a 86 }
swilliams346 0:9f1095365b9a 87
swilliams346 0:9f1095365b9a 88 void drawEraser() {
swilliams346 0:9f1095365b9a 89 drawHelper(XPosition,YPosition);
swilliams346 0:9f1095365b9a 90 }
swilliams346 0:9f1095365b9a 91
swilliams346 0:9f1095365b9a 92 void moveForward() {
swilliams346 0:9f1095365b9a 93 setYPosition(getYPosition() - 21);
swilliams346 0:9f1095365b9a 94 }
swilliams346 0:9f1095365b9a 95 void moveBackward() {
swilliams346 0:9f1095365b9a 96 setYPosition(getYPosition() + 21);
swilliams346 0:9f1095365b9a 97 }
swilliams346 0:9f1095365b9a 98 void moveLeft() {
swilliams346 0:9f1095365b9a 99 setXPosition(getXPosition() - 21);
swilliams346 0:9f1095365b9a 100 }
swilliams346 0:9f1095365b9a 101 void moveRight() {
swilliams346 0:9f1095365b9a 102 setXPosition(getXPosition() + 21);
swilliams346 0:9f1095365b9a 103 }
swilliams346 0:9f1095365b9a 104
swilliams346 0:9f1095365b9a 105 int getXPosition() {
swilliams346 0:9f1095365b9a 106 return XPosition;
swilliams346 0:9f1095365b9a 107 }
swilliams346 0:9f1095365b9a 108 int getYPosition() {
swilliams346 0:9f1095365b9a 109 return YPosition;
swilliams346 0:9f1095365b9a 110 }
swilliams346 0:9f1095365b9a 111
swilliams346 0:9f1095365b9a 112 void setXPosition(int x) {
swilliams346 0:9f1095365b9a 113 XPosition=x;
swilliams346 0:9f1095365b9a 114 }
swilliams346 0:9f1095365b9a 115 void setYPosition(int y) {
swilliams346 0:9f1095365b9a 116 YPosition=y;
swilliams346 0:9f1095365b9a 117 }
swilliams346 0:9f1095365b9a 118
swilliams346 0:9f1095365b9a 119 Robot()
swilliams346 0:9f1095365b9a 120 {
swilliams346 0:9f1095365b9a 121 XPosition = 74;
swilliams346 0:9f1095365b9a 122 YPosition = 116;
swilliams346 0:9f1095365b9a 123 }
swilliams346 0:9f1095365b9a 124 private:
swilliams346 0:9f1095365b9a 125
swilliams346 0:9f1095365b9a 126 int XPosition;
swilliams346 0:9f1095365b9a 127 int YPosition;
swilliams346 0:9f1095365b9a 128 };