![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Hangman game
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed wave_player
main.cpp@0:d55363159a7b, 2016-03-15 (annotated)
- Committer:
- sreddy47
- Date:
- Tue Mar 15 21:53:35 2016 +0000
- Revision:
- 0:d55363159a7b
Sneha add hangman;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sreddy47 | 0:d55363159a7b | 1 | #include "mbed.h" |
sreddy47 | 0:d55363159a7b | 2 | #include <string> |
sreddy47 | 0:d55363159a7b | 3 | #include "mbed.h" |
sreddy47 | 0:d55363159a7b | 4 | #include "uLCD_4DGL.h" |
sreddy47 | 0:d55363159a7b | 5 | #include <string> |
sreddy47 | 0:d55363159a7b | 6 | #include <ctype.h> |
sreddy47 | 0:d55363159a7b | 7 | #include "SDFileSystem.h" |
sreddy47 | 0:d55363159a7b | 8 | #include "wave_player.h" |
sreddy47 | 0:d55363159a7b | 9 | RawSerial dev(p28,p27);//bluetooth |
sreddy47 | 0:d55363159a7b | 10 | SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board |
sreddy47 | 0:d55363159a7b | 11 | AnalogOut DACout(p18);//speaker |
sreddy47 | 0:d55363159a7b | 12 | wave_player waver(&DACout);//wave player |
sreddy47 | 0:d55363159a7b | 13 | int x1=0; |
sreddy47 | 0:d55363159a7b | 14 | int y1=11; |
sreddy47 | 0:d55363159a7b | 15 | //nav switch class for joystick |
sreddy47 | 0:d55363159a7b | 16 | class Nav_Switch |
sreddy47 | 0:d55363159a7b | 17 | { |
sreddy47 | 0:d55363159a7b | 18 | public: |
sreddy47 | 0:d55363159a7b | 19 | Nav_Switch(PinName up,PinName down,PinName left,PinName right,PinName fire); |
sreddy47 | 0:d55363159a7b | 20 | int read(); |
sreddy47 | 0:d55363159a7b | 21 | //boolean functions to test each switch |
sreddy47 | 0:d55363159a7b | 22 | bool up(); |
sreddy47 | 0:d55363159a7b | 23 | bool down(); |
sreddy47 | 0:d55363159a7b | 24 | bool left(); |
sreddy47 | 0:d55363159a7b | 25 | bool right(); |
sreddy47 | 0:d55363159a7b | 26 | bool fire(); |
sreddy47 | 0:d55363159a7b | 27 | |
sreddy47 | 0:d55363159a7b | 28 | //automatic read on RHS |
sreddy47 | 0:d55363159a7b | 29 | operator int (); |
sreddy47 | 0:d55363159a7b | 30 | //index to any switch array style |
sreddy47 | 0:d55363159a7b | 31 | bool operator[](int index) { |
sreddy47 | 0:d55363159a7b | 32 | return _pins[index]; |
sreddy47 | 0:d55363159a7b | 33 | }; |
sreddy47 | 0:d55363159a7b | 34 | private: |
sreddy47 | 0:d55363159a7b | 35 | BusIn _pins; |
sreddy47 | 0:d55363159a7b | 36 | |
sreddy47 | 0:d55363159a7b | 37 | }; |
sreddy47 | 0:d55363159a7b | 38 | Nav_Switch::Nav_Switch (PinName up,PinName down,PinName left,PinName right,PinName fire): |
sreddy47 | 0:d55363159a7b | 39 | _pins(up, down, left, right, fire) |
sreddy47 | 0:d55363159a7b | 40 | { |
sreddy47 | 0:d55363159a7b | 41 | _pins.mode(PullUp); //needed if pullups not on board or a bare nav switch is used - delete otherwise |
sreddy47 | 0:d55363159a7b | 42 | wait(0.001); //delays just a bit for pullups to pull inputs high |
sreddy47 | 0:d55363159a7b | 43 | } |
sreddy47 | 0:d55363159a7b | 44 | //sets up navigation switch |
sreddy47 | 0:d55363159a7b | 45 | inline bool Nav_Switch::up() |
sreddy47 | 0:d55363159a7b | 46 | { |
sreddy47 | 0:d55363159a7b | 47 | |
sreddy47 | 0:d55363159a7b | 48 | return !(_pins[0]); |
sreddy47 | 0:d55363159a7b | 49 | } |
sreddy47 | 0:d55363159a7b | 50 | inline bool Nav_Switch::down() |
sreddy47 | 0:d55363159a7b | 51 | { |
sreddy47 | 0:d55363159a7b | 52 | |
sreddy47 | 0:d55363159a7b | 53 | return !(_pins[1]); |
sreddy47 | 0:d55363159a7b | 54 | } |
sreddy47 | 0:d55363159a7b | 55 | inline bool Nav_Switch::left() |
sreddy47 | 0:d55363159a7b | 56 | { |
sreddy47 | 0:d55363159a7b | 57 | |
sreddy47 | 0:d55363159a7b | 58 | return !(_pins[2]); |
sreddy47 | 0:d55363159a7b | 59 | } |
sreddy47 | 0:d55363159a7b | 60 | inline bool Nav_Switch::right() |
sreddy47 | 0:d55363159a7b | 61 | { |
sreddy47 | 0:d55363159a7b | 62 | |
sreddy47 | 0:d55363159a7b | 63 | return !(_pins[3]); |
sreddy47 | 0:d55363159a7b | 64 | } |
sreddy47 | 0:d55363159a7b | 65 | inline bool Nav_Switch::fire() |
sreddy47 | 0:d55363159a7b | 66 | { |
sreddy47 | 0:d55363159a7b | 67 | |
sreddy47 | 0:d55363159a7b | 68 | return !(_pins[4]); |
sreddy47 | 0:d55363159a7b | 69 | } |
sreddy47 | 0:d55363159a7b | 70 | inline int Nav_Switch::read() |
sreddy47 | 0:d55363159a7b | 71 | { |
sreddy47 | 0:d55363159a7b | 72 | return _pins.read(); |
sreddy47 | 0:d55363159a7b | 73 | } |
sreddy47 | 0:d55363159a7b | 74 | inline Nav_Switch::operator int () |
sreddy47 | 0:d55363159a7b | 75 | { |
sreddy47 | 0:d55363159a7b | 76 | return _pins.read(); |
sreddy47 | 0:d55363159a7b | 77 | } |
sreddy47 | 0:d55363159a7b | 78 | |
sreddy47 | 0:d55363159a7b | 79 | Nav_Switch myNav( p26, p23, p24, p22, p25); //pin order on Sparkfun breakout |
sreddy47 | 0:d55363159a7b | 80 | |
sreddy47 | 0:d55363159a7b | 81 | |
sreddy47 | 0:d55363159a7b | 82 | uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin; |
sreddy47 | 0:d55363159a7b | 83 | int alphabet[26]; |
sreddy47 | 0:d55363159a7b | 84 | int x=0; |
sreddy47 | 0:d55363159a7b | 85 | int category; |
sreddy47 | 0:d55363159a7b | 86 | int word; |
sreddy47 | 0:d55363159a7b | 87 | string word1;//string of word |
sreddy47 | 0:d55363159a7b | 88 | string category1;//category |
sreddy47 | 0:d55363159a7b | 89 | string words; |
sreddy47 | 0:d55363159a7b | 90 | string words1; |
sreddy47 | 0:d55363159a7b | 91 | int numletters=0;//num letters in the phrase/word |
sreddy47 | 0:d55363159a7b | 92 | char letter; |
sreddy47 | 0:d55363159a7b | 93 | string chosenLetters;//string of chosen letters |
sreddy47 | 0:d55363159a7b | 94 | int lives=6;//you get 6 lives |
sreddy47 | 0:d55363159a7b | 95 | |
sreddy47 | 0:d55363159a7b | 96 | |
sreddy47 | 0:d55363159a7b | 97 | //device receive. this is so the device receives instructions |
sreddy47 | 0:d55363159a7b | 98 | void dev_recv() |
sreddy47 | 0:d55363159a7b | 99 | { |
sreddy47 | 0:d55363159a7b | 100 | |
sreddy47 | 0:d55363159a7b | 101 | if(x>0&&x<3){ |
sreddy47 | 0:d55363159a7b | 102 | |
sreddy47 | 0:d55363159a7b | 103 | |
sreddy47 | 0:d55363159a7b | 104 | if(x==1){//x ==1 refers to phase 1 where you get category |
sreddy47 | 0:d55363159a7b | 105 | |
sreddy47 | 0:d55363159a7b | 106 | category=dev.getc();//used to get category |
sreddy47 | 0:d55363159a7b | 107 | if(category==10)//this is to show end line |
sreddy47 | 0:d55363159a7b | 108 | { |
sreddy47 | 0:d55363159a7b | 109 | x=2;//move on to next phase |
sreddy47 | 0:d55363159a7b | 110 | } |
sreddy47 | 0:d55363159a7b | 111 | else{ |
sreddy47 | 0:d55363159a7b | 112 | category1=category1+char(category);//appends letter for category |
sreddy47 | 0:d55363159a7b | 113 | |
sreddy47 | 0:d55363159a7b | 114 | } |
sreddy47 | 0:d55363159a7b | 115 | |
sreddy47 | 0:d55363159a7b | 116 | } |
sreddy47 | 0:d55363159a7b | 117 | |
sreddy47 | 0:d55363159a7b | 118 | |
sreddy47 | 0:d55363159a7b | 119 | else//refers to phase 2 where you get the word/phase |
sreddy47 | 0:d55363159a7b | 120 | { |
sreddy47 | 0:d55363159a7b | 121 | |
sreddy47 | 0:d55363159a7b | 122 | |
sreddy47 | 0:d55363159a7b | 123 | word=dev.getc();//gets word/phrase from device |
sreddy47 | 0:d55363159a7b | 124 | if(word==10)//end line |
sreddy47 | 0:d55363159a7b | 125 | { |
sreddy47 | 0:d55363159a7b | 126 | x=3; |
sreddy47 | 0:d55363159a7b | 127 | } |
sreddy47 | 0:d55363159a7b | 128 | else{ |
sreddy47 | 0:d55363159a7b | 129 | word1=word1+char(word);//append characters |
sreddy47 | 0:d55363159a7b | 130 | |
sreddy47 | 0:d55363159a7b | 131 | } |
sreddy47 | 0:d55363159a7b | 132 | |
sreddy47 | 0:d55363159a7b | 133 | |
sreddy47 | 0:d55363159a7b | 134 | |
sreddy47 | 0:d55363159a7b | 135 | |
sreddy47 | 0:d55363159a7b | 136 | |
sreddy47 | 0:d55363159a7b | 137 | } |
sreddy47 | 0:d55363159a7b | 138 | |
sreddy47 | 0:d55363159a7b | 139 | } |
sreddy47 | 0:d55363159a7b | 140 | } |
sreddy47 | 0:d55363159a7b | 141 | //prints the sentence/word/phrase using _ |
sreddy47 | 0:d55363159a7b | 142 | void printSentence() |
sreddy47 | 0:d55363159a7b | 143 | { |
sreddy47 | 0:d55363159a7b | 144 | string space=" "; |
sreddy47 | 0:d55363159a7b | 145 | numletters=word1.length(); |
sreddy47 | 0:d55363159a7b | 146 | for(int i=0;i<word1.length();i++) |
sreddy47 | 0:d55363159a7b | 147 | { |
sreddy47 | 0:d55363159a7b | 148 | |
sreddy47 | 0:d55363159a7b | 149 | if(int(word1[i])!=32) |
sreddy47 | 0:d55363159a7b | 150 | { |
sreddy47 | 0:d55363159a7b | 151 | words=words+"_ "; |
sreddy47 | 0:d55363159a7b | 152 | words1=words1+word1[i]+" "; |
sreddy47 | 0:d55363159a7b | 153 | |
sreddy47 | 0:d55363159a7b | 154 | } |
sreddy47 | 0:d55363159a7b | 155 | else |
sreddy47 | 0:d55363159a7b | 156 | { |
sreddy47 | 0:d55363159a7b | 157 | words=words+"\n"; |
sreddy47 | 0:d55363159a7b | 158 | words1=words1+"\n"; |
sreddy47 | 0:d55363159a7b | 159 | numletters--;//if space, decrease num letters |
sreddy47 | 0:d55363159a7b | 160 | } |
sreddy47 | 0:d55363159a7b | 161 | |
sreddy47 | 0:d55363159a7b | 162 | //words1=words1+word1[i]+" "; |
sreddy47 | 0:d55363159a7b | 163 | } |
sreddy47 | 0:d55363159a7b | 164 | uLCD.locate(0,3); |
sreddy47 | 0:d55363159a7b | 165 | uLCD.printf("%s",words); |
sreddy47 | 0:d55363159a7b | 166 | |
sreddy47 | 0:d55363159a7b | 167 | } |
sreddy47 | 0:d55363159a7b | 168 | |
sreddy47 | 0:d55363159a7b | 169 | //this is if you win |
sreddy47 | 0:d55363159a7b | 170 | void youWon() |
sreddy47 | 0:d55363159a7b | 171 | { |
sreddy47 | 0:d55363159a7b | 172 | uLCD.cls(); |
sreddy47 | 0:d55363159a7b | 173 | uLCD.printf("You Win! \n"); |
sreddy47 | 0:d55363159a7b | 174 | uLCD.printf("The word/phrase \nwas:\n%s",word1); |
sreddy47 | 0:d55363159a7b | 175 | mkdir("/sd/mydir", 0777); |
sreddy47 | 0:d55363159a7b | 176 | |
sreddy47 | 0:d55363159a7b | 177 | FILE *fp = fopen("/sd/win.wav", "r"); |
sreddy47 | 0:d55363159a7b | 178 | if(fp == NULL) { |
sreddy47 | 0:d55363159a7b | 179 | error("Could not open file for write\n"); |
sreddy47 | 0:d55363159a7b | 180 | } |
sreddy47 | 0:d55363159a7b | 181 | //fprintf(fp, "Hello fun SD Card World!"); |
sreddy47 | 0:d55363159a7b | 182 | waver.play(fp); |
sreddy47 | 0:d55363159a7b | 183 | fclose(fp); |
sreddy47 | 0:d55363159a7b | 184 | while(1) |
sreddy47 | 0:d55363159a7b | 185 | { |
sreddy47 | 0:d55363159a7b | 186 | wait(.1); |
sreddy47 | 0:d55363159a7b | 187 | } |
sreddy47 | 0:d55363159a7b | 188 | } |
sreddy47 | 0:d55363159a7b | 189 | //this is if you lose |
sreddy47 | 0:d55363159a7b | 190 | void youLose() |
sreddy47 | 0:d55363159a7b | 191 | { |
sreddy47 | 0:d55363159a7b | 192 | uLCD.cls(); |
sreddy47 | 0:d55363159a7b | 193 | uLCD.printf("You Lose! \n"); |
sreddy47 | 0:d55363159a7b | 194 | uLCD.printf("The word/phrase \nwas:\n%s",word1); |
sreddy47 | 0:d55363159a7b | 195 | mkdir("/sd/mydir", 0777); |
sreddy47 | 0:d55363159a7b | 196 | |
sreddy47 | 0:d55363159a7b | 197 | FILE *fp = fopen("/sd/lose.wav", "r"); |
sreddy47 | 0:d55363159a7b | 198 | if(fp == NULL) { |
sreddy47 | 0:d55363159a7b | 199 | error("Could not open file for write\n"); |
sreddy47 | 0:d55363159a7b | 200 | } |
sreddy47 | 0:d55363159a7b | 201 | //fprintf(fp, "Hello fun SD Card World!"); |
sreddy47 | 0:d55363159a7b | 202 | waver.play(fp); |
sreddy47 | 0:d55363159a7b | 203 | fclose(fp); |
sreddy47 | 0:d55363159a7b | 204 | while(1) |
sreddy47 | 0:d55363159a7b | 205 | { |
sreddy47 | 0:d55363159a7b | 206 | wait(.1); |
sreddy47 | 0:d55363159a7b | 207 | } |
sreddy47 | 0:d55363159a7b | 208 | |
sreddy47 | 0:d55363159a7b | 209 | } |
sreddy47 | 0:d55363159a7b | 210 | |
sreddy47 | 0:d55363159a7b | 211 | //draws hangman. draws more parts depending on number lives left |
sreddy47 | 0:d55363159a7b | 212 | void drawHangman() |
sreddy47 | 0:d55363159a7b | 213 | { |
sreddy47 | 0:d55363159a7b | 214 | |
sreddy47 | 0:d55363159a7b | 215 | uLCD.line(93, 127, 127, 127, 0xFF0000); |
sreddy47 | 0:d55363159a7b | 216 | uLCD.line(103, 127, 103, 90, 0xFF0000); |
sreddy47 | 0:d55363159a7b | 217 | uLCD.line(103, 90, 115, 90, 0xFF0000); |
sreddy47 | 0:d55363159a7b | 218 | uLCD.line(115, 90, 115, 94, 0xFF0000); |
sreddy47 | 0:d55363159a7b | 219 | if(lives==5){ |
sreddy47 | 0:d55363159a7b | 220 | uLCD.circle(115, 99, 5, RED);uLCD.circle(115, 99, 5, RED);}//head |
sreddy47 | 0:d55363159a7b | 221 | else if(lives==4){ |
sreddy47 | 0:d55363159a7b | 222 | uLCD.line(115, 104, 115, 119, 0xFF0000);}//body |
sreddy47 | 0:d55363159a7b | 223 | else if(lives==3){ |
sreddy47 | 0:d55363159a7b | 224 | uLCD.line(107, 107, 115, 111, 0xFF0000);}//arm |
sreddy47 | 0:d55363159a7b | 225 | else if(lives==2){ |
sreddy47 | 0:d55363159a7b | 226 | uLCD.line(123, 107, 115, 111, 0xFF0000);}//arm2 |
sreddy47 | 0:d55363159a7b | 227 | else if(lives==1){ |
sreddy47 | 0:d55363159a7b | 228 | uLCD.line(107, 125, 115, 119, 0xFF0000);}//leg |
sreddy47 | 0:d55363159a7b | 229 | else if(lives==0){ |
sreddy47 | 0:d55363159a7b | 230 | uLCD.line(123, 125, 115, 119, 0xFF0000);//leg2 |
sreddy47 | 0:d55363159a7b | 231 | youLose();//calls youlose if you lost |
sreddy47 | 0:d55363159a7b | 232 | } |
sreddy47 | 0:d55363159a7b | 233 | } |
sreddy47 | 0:d55363159a7b | 234 | |
sreddy47 | 0:d55363159a7b | 235 | //this is when the person chooses a letter. |
sreddy47 | 0:d55363159a7b | 236 | void chooseLetter(char y) |
sreddy47 | 0:d55363159a7b | 237 | { //puts the letter in the alphabet array equal to a space so we know it has been used |
sreddy47 | 0:d55363159a7b | 238 | if(y1==11){ |
sreddy47 | 0:d55363159a7b | 239 | alphabet[(y1-11)*x1+x1]=32; |
sreddy47 | 0:d55363159a7b | 240 | } |
sreddy47 | 0:d55363159a7b | 241 | else{ |
sreddy47 | 0:d55363159a7b | 242 | alphabet[(y1-12)*x1+x1+13]=32; |
sreddy47 | 0:d55363159a7b | 243 | } |
sreddy47 | 0:d55363159a7b | 244 | |
sreddy47 | 0:d55363159a7b | 245 | |
sreddy47 | 0:d55363159a7b | 246 | bool isThere=false;//checks if the letter is there |
sreddy47 | 0:d55363159a7b | 247 | for(int i=0;i<words1.length();i++) |
sreddy47 | 0:d55363159a7b | 248 | { |
sreddy47 | 0:d55363159a7b | 249 | |
sreddy47 | 0:d55363159a7b | 250 | if(int(y)==tolower(int(words1[i])))//changes letters to lower case |
sreddy47 | 0:d55363159a7b | 251 | { |
sreddy47 | 0:d55363159a7b | 252 | isThere=true; |
sreddy47 | 0:d55363159a7b | 253 | numletters--; |
sreddy47 | 0:d55363159a7b | 254 | words[i]=words1[i]; |
sreddy47 | 0:d55363159a7b | 255 | |
sreddy47 | 0:d55363159a7b | 256 | } |
sreddy47 | 0:d55363159a7b | 257 | |
sreddy47 | 0:d55363159a7b | 258 | |
sreddy47 | 0:d55363159a7b | 259 | } |
sreddy47 | 0:d55363159a7b | 260 | uLCD.locate(0,3); |
sreddy47 | 0:d55363159a7b | 261 | uLCD.printf("%s",words);//prints _ for each letter now with filled in letters |
sreddy47 | 0:d55363159a7b | 262 | if(numletters==0) |
sreddy47 | 0:d55363159a7b | 263 | { |
sreddy47 | 0:d55363159a7b | 264 | youWon();//if no more letters, you win |
sreddy47 | 0:d55363159a7b | 265 | } |
sreddy47 | 0:d55363159a7b | 266 | chosenLetters= chosenLetters+y;//this is the list of letters you already chose |
sreddy47 | 0:d55363159a7b | 267 | //this is for setting up the already chosen list |
sreddy47 | 0:d55363159a7b | 268 | uLCD.locate(0,14); |
sreddy47 | 0:d55363159a7b | 269 | int yc=14; |
sreddy47 | 0:d55363159a7b | 270 | for(int i=0;i<chosenLetters.length();i++) |
sreddy47 | 0:d55363159a7b | 271 | { |
sreddy47 | 0:d55363159a7b | 272 | |
sreddy47 | 0:d55363159a7b | 273 | if(i>12) |
sreddy47 | 0:d55363159a7b | 274 | { |
sreddy47 | 0:d55363159a7b | 275 | yc=15; |
sreddy47 | 0:d55363159a7b | 276 | } |
sreddy47 | 0:d55363159a7b | 277 | |
sreddy47 | 0:d55363159a7b | 278 | uLCD.locate((i%13),yc); |
sreddy47 | 0:d55363159a7b | 279 | uLCD.printf("%c",chosenLetters[i]);//prints out letters you already chose |
sreddy47 | 0:d55363159a7b | 280 | |
sreddy47 | 0:d55363159a7b | 281 | } |
sreddy47 | 0:d55363159a7b | 282 | if(isThere==false)//if the letter isnt there, lose a life, redraw hangman |
sreddy47 | 0:d55363159a7b | 283 | {lives--; |
sreddy47 | 0:d55363159a7b | 284 | drawHangman(); |
sreddy47 | 0:d55363159a7b | 285 | |
sreddy47 | 0:d55363159a7b | 286 | } |
sreddy47 | 0:d55363159a7b | 287 | //this puts the white space on a different letter |
sreddy47 | 0:d55363159a7b | 288 | if(x1==12){ |
sreddy47 | 0:d55363159a7b | 289 | x1=0; |
sreddy47 | 0:d55363159a7b | 290 | if(y1==11){ |
sreddy47 | 0:d55363159a7b | 291 | y1=12;} |
sreddy47 | 0:d55363159a7b | 292 | else |
sreddy47 | 0:d55363159a7b | 293 | y1=11; |
sreddy47 | 0:d55363159a7b | 294 | } |
sreddy47 | 0:d55363159a7b | 295 | else { |
sreddy47 | 0:d55363159a7b | 296 | x1++;} |
sreddy47 | 0:d55363159a7b | 297 | |
sreddy47 | 0:d55363159a7b | 298 | |
sreddy47 | 0:d55363159a7b | 299 | |
sreddy47 | 0:d55363159a7b | 300 | } |
sreddy47 | 0:d55363159a7b | 301 | |
sreddy47 | 0:d55363159a7b | 302 | |
sreddy47 | 0:d55363159a7b | 303 | //this sets the joystick movement up |
sreddy47 | 0:d55363159a7b | 304 | void joystick() |
sreddy47 | 0:d55363159a7b | 305 | { |
sreddy47 | 0:d55363159a7b | 306 | int i; |
sreddy47 | 0:d55363159a7b | 307 | |
sreddy47 | 0:d55363159a7b | 308 | i = ~(myNav); //update leds with nav switch direction inputs |
sreddy47 | 0:d55363159a7b | 309 | i=i+32; |
sreddy47 | 0:d55363159a7b | 310 | |
sreddy47 | 0:d55363159a7b | 311 | //this makes the chosen letter up |
sreddy47 | 0:d55363159a7b | 312 | if(i==1) |
sreddy47 | 0:d55363159a7b | 313 | { |
sreddy47 | 0:d55363159a7b | 314 | if(y1==12) |
sreddy47 | 0:d55363159a7b | 315 | y1=11; |
sreddy47 | 0:d55363159a7b | 316 | else |
sreddy47 | 0:d55363159a7b | 317 | y1=12; |
sreddy47 | 0:d55363159a7b | 318 | |
sreddy47 | 0:d55363159a7b | 319 | } |
sreddy47 | 0:d55363159a7b | 320 | |
sreddy47 | 0:d55363159a7b | 321 | |
sreddy47 | 0:d55363159a7b | 322 | //goes down |
sreddy47 | 0:d55363159a7b | 323 | else if(i==2) |
sreddy47 | 0:d55363159a7b | 324 | { |
sreddy47 | 0:d55363159a7b | 325 | if(y1==11) |
sreddy47 | 0:d55363159a7b | 326 | y1=12; |
sreddy47 | 0:d55363159a7b | 327 | else |
sreddy47 | 0:d55363159a7b | 328 | y1=11; |
sreddy47 | 0:d55363159a7b | 329 | |
sreddy47 | 0:d55363159a7b | 330 | } |
sreddy47 | 0:d55363159a7b | 331 | //goes left |
sreddy47 | 0:d55363159a7b | 332 | else if(i==4) |
sreddy47 | 0:d55363159a7b | 333 | { |
sreddy47 | 0:d55363159a7b | 334 | if(x1==0){ |
sreddy47 | 0:d55363159a7b | 335 | x1=12; |
sreddy47 | 0:d55363159a7b | 336 | } |
sreddy47 | 0:d55363159a7b | 337 | else{ |
sreddy47 | 0:d55363159a7b | 338 | x1--; |
sreddy47 | 0:d55363159a7b | 339 | } |
sreddy47 | 0:d55363159a7b | 340 | |
sreddy47 | 0:d55363159a7b | 341 | |
sreddy47 | 0:d55363159a7b | 342 | } |
sreddy47 | 0:d55363159a7b | 343 | //goes right |
sreddy47 | 0:d55363159a7b | 344 | else if(i==8) |
sreddy47 | 0:d55363159a7b | 345 | { |
sreddy47 | 0:d55363159a7b | 346 | if(x1==12) |
sreddy47 | 0:d55363159a7b | 347 | x1=0; |
sreddy47 | 0:d55363159a7b | 348 | else |
sreddy47 | 0:d55363159a7b | 349 | x1++; |
sreddy47 | 0:d55363159a7b | 350 | |
sreddy47 | 0:d55363159a7b | 351 | } |
sreddy47 | 0:d55363159a7b | 352 | //select letter |
sreddy47 | 0:d55363159a7b | 353 | else if(i==16) |
sreddy47 | 0:d55363159a7b | 354 | { |
sreddy47 | 0:d55363159a7b | 355 | //following code basically to choose if you will check if the letter is there or not(if you already chose the letter before, you cant choose again) |
sreddy47 | 0:d55363159a7b | 356 | uLCD.locate(0,10); |
sreddy47 | 0:d55363159a7b | 357 | |
sreddy47 | 0:d55363159a7b | 358 | uLCD.color(WHITE); |
sreddy47 | 0:d55363159a7b | 359 | bool done=true; |
sreddy47 | 0:d55363159a7b | 360 | int choose; |
sreddy47 | 0:d55363159a7b | 361 | if(chosenLetters.length()>0){ |
sreddy47 | 0:d55363159a7b | 362 | for(int i=0;i<chosenLetters.length();i++){ |
sreddy47 | 0:d55363159a7b | 363 | if(y1==11){ |
sreddy47 | 0:d55363159a7b | 364 | choose=(y1-11)*x1+x1+97; |
sreddy47 | 0:d55363159a7b | 365 | if(char((y1-11)*x1+x1+97)==chosenLetters[i]) |
sreddy47 | 0:d55363159a7b | 366 | { |
sreddy47 | 0:d55363159a7b | 367 | done=false; |
sreddy47 | 0:d55363159a7b | 368 | } |
sreddy47 | 0:d55363159a7b | 369 | |
sreddy47 | 0:d55363159a7b | 370 | } |
sreddy47 | 0:d55363159a7b | 371 | else |
sreddy47 | 0:d55363159a7b | 372 | { |
sreddy47 | 0:d55363159a7b | 373 | choose=(y1-12)*x1+x1+97+13; |
sreddy47 | 0:d55363159a7b | 374 | if(char((y1-12)*x1+x1+97+13)==chosenLetters[i]) |
sreddy47 | 0:d55363159a7b | 375 | { |
sreddy47 | 0:d55363159a7b | 376 | done=false;} |
sreddy47 | 0:d55363159a7b | 377 | } |
sreddy47 | 0:d55363159a7b | 378 | } |
sreddy47 | 0:d55363159a7b | 379 | if(done) |
sreddy47 | 0:d55363159a7b | 380 | { |
sreddy47 | 0:d55363159a7b | 381 | chooseLetter(char(choose)); |
sreddy47 | 0:d55363159a7b | 382 | } |
sreddy47 | 0:d55363159a7b | 383 | |
sreddy47 | 0:d55363159a7b | 384 | } |
sreddy47 | 0:d55363159a7b | 385 | else |
sreddy47 | 0:d55363159a7b | 386 | { |
sreddy47 | 0:d55363159a7b | 387 | if(y1==11) |
sreddy47 | 0:d55363159a7b | 388 | chooseLetter(char((y1-11)*x1+x1+97)); |
sreddy47 | 0:d55363159a7b | 389 | else |
sreddy47 | 0:d55363159a7b | 390 | chooseLetter(char((y1-11)*x1+x1+97+13)); |
sreddy47 | 0:d55363159a7b | 391 | } |
sreddy47 | 0:d55363159a7b | 392 | } |
sreddy47 | 0:d55363159a7b | 393 | |
sreddy47 | 0:d55363159a7b | 394 | uLCD.locate(0,0); |
sreddy47 | 0:d55363159a7b | 395 | |
sreddy47 | 0:d55363159a7b | 396 | wait(0.05); |
sreddy47 | 0:d55363159a7b | 397 | |
sreddy47 | 0:d55363159a7b | 398 | } |
sreddy47 | 0:d55363159a7b | 399 | //this draws the letters that you can choose from and letters chosen |
sreddy47 | 0:d55363159a7b | 400 | void drawLetters() |
sreddy47 | 0:d55363159a7b | 401 | { |
sreddy47 | 0:d55363159a7b | 402 | //sets up location |
sreddy47 | 0:d55363159a7b | 403 | uLCD.locate(0,10); |
sreddy47 | 0:d55363159a7b | 404 | uLCD.printf("Choose one:"); |
sreddy47 | 0:d55363159a7b | 405 | uLCD.locate(0,13); |
sreddy47 | 0:d55363159a7b | 406 | uLCD.printf("Chosen:"); |
sreddy47 | 0:d55363159a7b | 407 | uLCD.locate(0,11); |
sreddy47 | 0:d55363159a7b | 408 | |
sreddy47 | 0:d55363159a7b | 409 | int ya=11; |
sreddy47 | 0:d55363159a7b | 410 | for(int i=0;i<26;i++) |
sreddy47 | 0:d55363159a7b | 411 | { |
sreddy47 | 0:d55363159a7b | 412 | |
sreddy47 | 0:d55363159a7b | 413 | if(i>12) |
sreddy47 | 0:d55363159a7b | 414 | { |
sreddy47 | 0:d55363159a7b | 415 | ya=12; |
sreddy47 | 0:d55363159a7b | 416 | } |
sreddy47 | 0:d55363159a7b | 417 | //makes background black and letter white if not chosen |
sreddy47 | 0:d55363159a7b | 418 | if(ya==y1&&((i%13)==x1)){ |
sreddy47 | 0:d55363159a7b | 419 | uLCD.textbackground_color(WHITE); |
sreddy47 | 0:d55363159a7b | 420 | uLCD.color(BLACK); |
sreddy47 | 0:d55363159a7b | 421 | } |
sreddy47 | 0:d55363159a7b | 422 | //makes background white and letter black if chosen |
sreddy47 | 0:d55363159a7b | 423 | else |
sreddy47 | 0:d55363159a7b | 424 | { |
sreddy47 | 0:d55363159a7b | 425 | uLCD.textbackground_color(BLACK); |
sreddy47 | 0:d55363159a7b | 426 | uLCD.color(WHITE); |
sreddy47 | 0:d55363159a7b | 427 | } |
sreddy47 | 0:d55363159a7b | 428 | //prints the alphabet |
sreddy47 | 0:d55363159a7b | 429 | uLCD.locate((i%13),ya); |
sreddy47 | 0:d55363159a7b | 430 | uLCD.printf("%c",alphabet[i]); |
sreddy47 | 0:d55363159a7b | 431 | uLCD.textbackground_color(BLACK); |
sreddy47 | 0:d55363159a7b | 432 | uLCD.color(WHITE); |
sreddy47 | 0:d55363159a7b | 433 | } |
sreddy47 | 0:d55363159a7b | 434 | |
sreddy47 | 0:d55363159a7b | 435 | } |
sreddy47 | 0:d55363159a7b | 436 | int main() |
sreddy47 | 0:d55363159a7b | 437 | { |
sreddy47 | 0:d55363159a7b | 438 | //clears screan |
sreddy47 | 0:d55363159a7b | 439 | uLCD.cls(); |
sreddy47 | 0:d55363159a7b | 440 | |
sreddy47 | 0:d55363159a7b | 441 | |
sreddy47 | 0:d55363159a7b | 442 | uLCD.color(WHITE); |
sreddy47 | 0:d55363159a7b | 443 | for(int i=0;i<26;i++) |
sreddy47 | 0:d55363159a7b | 444 | { |
sreddy47 | 0:d55363159a7b | 445 | alphabet[i]=i+97; |
sreddy47 | 0:d55363159a7b | 446 | } |
sreddy47 | 0:d55363159a7b | 447 | |
sreddy47 | 0:d55363159a7b | 448 | |
sreddy47 | 0:d55363159a7b | 449 | uLCD.baudrate(3000000); //jack up baud rate to max for fast display |
sreddy47 | 0:d55363159a7b | 450 | |
sreddy47 | 0:d55363159a7b | 451 | dev.baud(9600); |
sreddy47 | 0:d55363159a7b | 452 | dev.attach(&dev_recv, Serial::RxIrq); |
sreddy47 | 0:d55363159a7b | 453 | //tells player with mbed to start game |
sreddy47 | 0:d55363159a7b | 454 | uLCD.printf("You are now starting a game of Hangman. Your friend is choosing a category and phrase"); |
sreddy47 | 0:d55363159a7b | 455 | x=1; |
sreddy47 | 0:d55363159a7b | 456 | //tells player with device to start game |
sreddy47 | 0:d55363159a7b | 457 | dev.printf("You are now starting a game of Hangman with your friend \n"); |
sreddy47 | 0:d55363159a7b | 458 | wait(.1); |
sreddy47 | 0:d55363159a7b | 459 | //tells player with device to choose category |
sreddy47 | 0:d55363159a7b | 460 | dev.printf("Please enter a category and press enter"); |
sreddy47 | 0:d55363159a7b | 461 | |
sreddy47 | 0:d55363159a7b | 462 | //phase 1(choose category) waiting |
sreddy47 | 0:d55363159a7b | 463 | while((x==1)){ |
sreddy47 | 0:d55363159a7b | 464 | wait(.1); |
sreddy47 | 0:d55363159a7b | 465 | } |
sreddy47 | 0:d55363159a7b | 466 | |
sreddy47 | 0:d55363159a7b | 467 | //clear lcd |
sreddy47 | 0:d55363159a7b | 468 | uLCD.cls(); |
sreddy47 | 0:d55363159a7b | 469 | //draw hangman |
sreddy47 | 0:d55363159a7b | 470 | drawHangman(); |
sreddy47 | 0:d55363159a7b | 471 | uLCD.printf("Category/Hint:\n%s",category1); |
sreddy47 | 0:d55363159a7b | 472 | //tells player with device to choose word/phrase |
sreddy47 | 0:d55363159a7b | 473 | dev.printf("Please enter a word/phrase and press enter"); |
sreddy47 | 0:d55363159a7b | 474 | |
sreddy47 | 0:d55363159a7b | 475 | |
sreddy47 | 0:d55363159a7b | 476 | //phase 2(choose word) |
sreddy47 | 0:d55363159a7b | 477 | while(x==2) { |
sreddy47 | 0:d55363159a7b | 478 | wait(.1); |
sreddy47 | 0:d55363159a7b | 479 | } |
sreddy47 | 0:d55363159a7b | 480 | //print sentence |
sreddy47 | 0:d55363159a7b | 481 | printSentence(); |
sreddy47 | 0:d55363159a7b | 482 | //loop |
sreddy47 | 0:d55363159a7b | 483 | while(1){ |
sreddy47 | 0:d55363159a7b | 484 | |
sreddy47 | 0:d55363159a7b | 485 | //draws letters |
sreddy47 | 0:d55363159a7b | 486 | drawLetters(); |
sreddy47 | 0:d55363159a7b | 487 | //check joystick |
sreddy47 | 0:d55363159a7b | 488 | joystick(); |
sreddy47 | 0:d55363159a7b | 489 | } |
sreddy47 | 0:d55363159a7b | 490 | //chooseLetter('a'); |
sreddy47 | 0:d55363159a7b | 491 | //joystick(); |
sreddy47 | 0:d55363159a7b | 492 | |
sreddy47 | 0:d55363159a7b | 493 | |
sreddy47 | 0:d55363159a7b | 494 | } |