Hangman game

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed wave_player

Committer:
sreddy47
Date:
Tue Mar 15 21:53:35 2016 +0000
Revision:
0:d55363159a7b
Sneha add hangman;

Who changed what in which revision?

UserRevisionLine numberNew 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 }