Frogger for mbed
Dependencies: 4DGL-uLCD-SE Motor PinDetect SDFileSystem mbed-rtos mbed wave_player
Fork of 4180_Lab4_v6 by
Robot.h@3:427c365950d7, 2016-11-02 (annotated)
- 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?
User | Revision | Line number | New 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 | }; |