Frogger for mbed

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

Fork of 4180_Lab4_v6 by Erick Cardenas

Committer:
swilliams346
Date:
Wed Nov 02 17:17:03 2016 +0000
Revision:
3:427c365950d7
Parent:
1:abd7e0631db8
Beta Version

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