Program is a work in progress

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

Fork of 4180_Lab4_v6 by Scott Williams

Committer:
ecardenas8
Date:
Sun Oct 30 04:39:01 2016 +0000
Revision:
1:e84085bbf399
Parent:
0:9f1095365b9a
Program is a work in progress

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