Code for Player 2 of Rock Paper Scissors

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

Committer:
pkulkarni34
Date:
Fri Oct 23 02:56:50 2015 +0000
Revision:
4:0be9cd917c17
Parent:
3:fb5a647123cb
Rock Paper Scissors - Player 2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pkulkarni34 0:75276caf1a37 1 //ECE 4180 Mini Project
pkulkarni34 0:75276caf1a37 2 //Prachi Kulkarni and Kendra Dodson
pkulkarni34 0:75276caf1a37 3
pkulkarni34 4:0be9cd917c17 4 //This code is for Player 2
pkulkarni34 4:0be9cd917c17 5
pkulkarni34 0:75276caf1a37 6 #include "mbed.h"
pkulkarni34 0:75276caf1a37 7 #include "uLCD_4DGL.h"
pkulkarni34 0:75276caf1a37 8 #include "SDFileSystem.h"
pkulkarni34 0:75276caf1a37 9 #include "wave_player.h"
pkulkarni34 2:54fafe349aa7 10
pkulkarni34 4:0be9cd917c17 11 //Leds to show status of sending and receiving messages
pkulkarni34 2:54fafe349aa7 12 DigitalOut myled(LED1);
pkulkarni34 2:54fafe349aa7 13 DigitalOut myled2(LED2);
pkulkarni34 3:fb5a647123cb 14 DigitalOut myled3(LED3);
pkulkarni34 3:fb5a647123cb 15
pkulkarni34 0:75276caf1a37 16 SDFileSystem sd(p5, p6, p7, p8, "sd");
pkulkarni34 0:75276caf1a37 17 AnalogOut DACout(p18);
pkulkarni34 0:75276caf1a37 18 wave_player waver(&DACout); // Wave Player
pkulkarni34 0:75276caf1a37 19
pkulkarni34 0:75276caf1a37 20 uLCD_4DGL lcd(p28, p27, p29); //uLCD
pkulkarni34 0:75276caf1a37 21 DigitalIn pb1(p17); //Pushbutton 1
pkulkarni34 0:75276caf1a37 22 DigitalIn pb2(p19); //Pushbutton 2
pkulkarni34 0:75276caf1a37 23 DigitalIn pb3(p20); //Pushbutton 3
pkulkarni34 0:75276caf1a37 24
pkulkarni34 4:0be9cd917c17 25 //Shiftbrite
pkulkarni34 0:75276caf1a37 26 DigitalOut latch(p15);
pkulkarni34 0:75276caf1a37 27 DigitalOut enable(p16);
pkulkarni34 0:75276caf1a37 28 SPI spi(p11, p12, p13);
pkulkarni34 0:75276caf1a37 29
pkulkarni34 0:75276caf1a37 30 //Choice
pkulkarni34 0:75276caf1a37 31 //Choice = 1 for rock
pkulkarni34 0:75276caf1a37 32 //Choice = 2 for paper
pkulkarni34 0:75276caf1a37 33 //Choice = 3 for scissors
pkulkarni34 2:54fafe349aa7 34 char choice1; //Player 1's choice
pkulkarni34 2:54fafe349aa7 35 char choice2; //Player 2's choice
pkulkarni34 0:75276caf1a37 36
pkulkarni34 0:75276caf1a37 37 //Points
pkulkarni34 1:5841ff349aae 38 int p1 = 0; //Player 1's points
pkulkarni34 1:5841ff349aae 39 int p2 = 0; //Player 2's points
pkulkarni34 0:75276caf1a37 40
pkulkarni34 1:5841ff349aae 41 //RGB function for Shiftbrite
pkulkarni34 0:75276caf1a37 42 void RGB_LED(int red, int green, int blue);
pkulkarni34 0:75276caf1a37 43 void RGB_LED(int red, int green, int blue)
pkulkarni34 0:75276caf1a37 44 {
pkulkarni34 0:75276caf1a37 45 unsigned int low_color=0;
pkulkarni34 0:75276caf1a37 46 unsigned int high_color=0;
pkulkarni34 0:75276caf1a37 47 high_color=(blue<<4)|((red&0x3C0)>>6);
pkulkarni34 0:75276caf1a37 48 low_color=(((red&0x3F)<<10)|(green));
pkulkarni34 0:75276caf1a37 49 spi.write(high_color);
pkulkarni34 0:75276caf1a37 50 spi.write(low_color);
pkulkarni34 0:75276caf1a37 51 latch=1;
pkulkarni34 0:75276caf1a37 52 latch=0;
pkulkarni34 0:75276caf1a37 53 }
pkulkarni34 0:75276caf1a37 54
pkulkarni34 3:fb5a647123cb 55 //Serial
pkulkarni34 3:fb5a647123cb 56 Serial player2(p9,p10);
pkulkarni34 2:54fafe349aa7 57
pkulkarni34 0:75276caf1a37 58 int main() {
pkulkarni34 3:fb5a647123cb 59
pkulkarni34 2:54fafe349aa7 60 //Serial
pkulkarni34 2:54fafe349aa7 61 player2.baud(9600);
pkulkarni34 3:fb5a647123cb 62
pkulkarni34 0:75276caf1a37 63 spi.format(16,0);
pkulkarni34 0:75276caf1a37 64 spi.frequency(500000);
pkulkarni34 0:75276caf1a37 65 enable=0;
pkulkarni34 0:75276caf1a37 66 latch=0;
pkulkarni34 0:75276caf1a37 67 pb1.mode(PullUp);
pkulkarni34 0:75276caf1a37 68 wait(0.001);
pkulkarni34 0:75276caf1a37 69 pb2.mode(PullUp);
pkulkarni34 0:75276caf1a37 70 wait(0.001);
pkulkarni34 0:75276caf1a37 71 pb3.mode(PullUp);
pkulkarni34 0:75276caf1a37 72 wait(0.001);
pkulkarni34 0:75276caf1a37 73
pkulkarni34 0:75276caf1a37 74 //Display
pkulkarni34 2:54fafe349aa7 75
pkulkarni34 2:54fafe349aa7 76 lcd.locate(1,2);
pkulkarni34 2:54fafe349aa7 77 //Screen 1 shows the name of the game
pkulkarni34 2:54fafe349aa7 78 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 2:54fafe349aa7 79 lcd.color(BLUE); //Set font color to blue
pkulkarni34 2:54fafe349aa7 80 lcd.text_bold(ON); //Bold the text
pkulkarni34 2:54fafe349aa7 81 lcd.text_width(2);
pkulkarni34 2:54fafe349aa7 82 lcd.text_height(2);
pkulkarni34 2:54fafe349aa7 83 lcd.printf(" Rock\n");
pkulkarni34 2:54fafe349aa7 84 lcd.printf(" Paper\n\n");
pkulkarni34 2:54fafe349aa7 85 lcd.printf(" Scissor\n\n");
pkulkarni34 2:54fafe349aa7 86 //DACout.beep(1000,0.5);
pkulkarni34 2:54fafe349aa7 87 wait(5);
pkulkarni34 2:54fafe349aa7 88
pkulkarni34 2:54fafe349aa7 89 //Screen 2 shows pushbutton options
pkulkarni34 2:54fafe349aa7 90 L1:
pkulkarni34 2:54fafe349aa7 91 lcd.cls();
pkulkarni34 2:54fafe349aa7 92 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 2:54fafe349aa7 93 lcd.color(GREEN); //Set font color to green
pkulkarni34 2:54fafe349aa7 94 lcd.locate(0,2);
pkulkarni34 2:54fafe349aa7 95 lcd.printf(" Button Options\n\n");
pkulkarni34 2:54fafe349aa7 96 lcd.locate(0,5);
pkulkarni34 2:54fafe349aa7 97 lcd.text_underline(OFF);
pkulkarni34 2:54fafe349aa7 98 lcd.printf(" 1 for Rocks");
pkulkarni34 2:54fafe349aa7 99 lcd.locate(0,7);
pkulkarni34 2:54fafe349aa7 100 lcd.printf(" 2 for Paper");
pkulkarni34 2:54fafe349aa7 101 lcd.locate(0,9);
pkulkarni34 2:54fafe349aa7 102 lcd.printf(" 3 for Scissors\n\n\n");
pkulkarni34 2:54fafe349aa7 103 lcd.text_bold(ON); //Bold the text
pkulkarni34 2:54fafe349aa7 104 lcd.printf(" Press 1 to start!");
pkulkarni34 2:54fafe349aa7 105 wait(1);
pkulkarni34 0:75276caf1a37 106
pkulkarni34 0:75276caf1a37 107 while(1){
pkulkarni34 1:5841ff349aae 108 //If push button 1 is pressed, start the game!
pkulkarni34 0:75276caf1a37 109 if(pb1 != 1){
pkulkarni34 3:fb5a647123cb 110
pkulkarni34 4:0be9cd917c17 111
pkulkarni34 4:0be9cd917c17 112 //Play button select
pkulkarni34 2:54fafe349aa7 113 FILE *wave_file;
pkulkarni34 2:54fafe349aa7 114 printf("\n\n\nHello, wave world!\n");
pkulkarni34 4:0be9cd917c17 115 wave_file=fopen("/sd/mydir/select.wav","r");
pkulkarni34 2:54fafe349aa7 116 waver.play(wave_file);
pkulkarni34 2:54fafe349aa7 117 wait(1);
pkulkarni34 2:54fafe349aa7 118 printf("ok!!");
pkulkarni34 2:54fafe349aa7 119 fclose(wave_file);
pkulkarni34 4:0be9cd917c17 120
pkulkarni34 3:fb5a647123cb 121
pkulkarni34 3:fb5a647123cb 122 L3:
pkulkarni34 0:75276caf1a37 123 lcd.cls(); //Clear screen
pkulkarni34 2:54fafe349aa7 124 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 1:5841ff349aae 125 //Tell player 1 that she/he has 5 seconds to chose between rock,paper and scissors
pkulkarni34 0:75276caf1a37 126 lcd.locate(0,4);
pkulkarni34 2:54fafe349aa7 127 lcd.color(BLUE); //Set font color to yellow
pkulkarni34 2:54fafe349aa7 128 lcd.printf(" Player 2 \n\n\n");
pkulkarni34 2:54fafe349aa7 129 lcd.locate(0,6);
pkulkarni34 2:54fafe349aa7 130 lcd.color(GREEN); //Set font color to green
pkulkarni34 0:75276caf1a37 131 lcd.printf("You have 5 seconds");
pkulkarni34 0:75276caf1a37 132 lcd.printf(" to choose\n");
pkulkarni34 0:75276caf1a37 133 lcd.printf(" an option!\n");
pkulkarni34 2:54fafe349aa7 134 wait(5);
pkulkarni34 0:75276caf1a37 135
pkulkarni34 0:75276caf1a37 136
pkulkarni34 1:5841ff349aae 137 //Start timer for 5 seconds
pkulkarni34 3:fb5a647123cb 138 int i = 5;;
pkulkarni34 0:75276caf1a37 139 int red = 1;
pkulkarni34 2:54fafe349aa7 140 //for(i = 5; i > -1 ; i--){
pkulkarni34 2:54fafe349aa7 141 while(i > -1){
pkulkarni34 2:54fafe349aa7 142
pkulkarni34 0:75276caf1a37 143 lcd.cls();
pkulkarni34 1:5841ff349aae 144 lcd.locate(4,4); //Place text in the center of the screen
pkulkarni34 1:5841ff349aae 145 lcd.text_width(8); //Set tet width
pkulkarni34 1:5841ff349aae 146 lcd.text_height(8); //Set text height
pkulkarni34 1:5841ff349aae 147 lcd.text_bold(ON); //Set text style to 'bold'
pkulkarni34 1:5841ff349aae 148 RGB_LED(red*25,0,0);//Increase intensity of light on shiftbrite as time decreases
pkulkarni34 0:75276caf1a37 149 red = red + 5;
pkulkarni34 1:5841ff349aae 150 lcd.printf("%d",i); //Display time left on LCD
pkulkarni34 0:75276caf1a37 151 wait(1);
pkulkarni34 1:5841ff349aae 152 //Press pushbutton 1 to choose rock
pkulkarni34 0:75276caf1a37 153 if(pb1 != 1) {
pkulkarni34 2:54fafe349aa7 154
pkulkarni34 0:75276caf1a37 155 lcd.cls();
pkulkarni34 2:54fafe349aa7 156 choice2 = 'R';
pkulkarni34 2:54fafe349aa7 157 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 2:54fafe349aa7 158 lcd.locate(0,1);
pkulkarni34 2:54fafe349aa7 159 lcd.printf(" You chose rock");
pkulkarni34 2:54fafe349aa7 160
pkulkarni34 2:54fafe349aa7 161 //Play button select
pkulkarni34 2:54fafe349aa7 162 FILE *wave_file;
pkulkarni34 2:54fafe349aa7 163 printf("\n\n\nHello, wave world!\n");
pkulkarni34 2:54fafe349aa7 164 wave_file=fopen("/sd/mydir/select.wav","r");
pkulkarni34 2:54fafe349aa7 165 waver.play(wave_file);
pkulkarni34 2:54fafe349aa7 166 wait(1);
pkulkarni34 2:54fafe349aa7 167 printf("ok!!");
pkulkarni34 2:54fafe349aa7 168 fclose(wave_file);
pkulkarni34 3:fb5a647123cb 169
pkulkarni34 0:75276caf1a37 170 lcd.circle(60, 60, 30,WHITE);
pkulkarni34 2:54fafe349aa7 171 wait(3);
pkulkarni34 0:75276caf1a37 172 lcd.cls();
pkulkarni34 0:75276caf1a37 173 break;
pkulkarni34 0:75276caf1a37 174 }
pkulkarni34 1:5841ff349aae 175 //Press pushbutton 2 to choose paper
pkulkarni34 2:54fafe349aa7 176 else if(pb2 != 1) {
pkulkarni34 0:75276caf1a37 177 lcd.cls();
pkulkarni34 2:54fafe349aa7 178 choice2 = 'P';
pkulkarni34 2:54fafe349aa7 179 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 2:54fafe349aa7 180
pkulkarni34 2:54fafe349aa7 181 lcd.locate(0,1);
pkulkarni34 2:54fafe349aa7 182 lcd.printf(" You chose paper");
pkulkarni34 2:54fafe349aa7 183
pkulkarni34 2:54fafe349aa7 184 //Play button select
pkulkarni34 2:54fafe349aa7 185 FILE *wave_file;
pkulkarni34 2:54fafe349aa7 186 printf("\n\n\nHello, wave world!\n");
pkulkarni34 2:54fafe349aa7 187 wave_file=fopen("/sd/mydir/select.wav","r");
pkulkarni34 2:54fafe349aa7 188 waver.play(wave_file);
pkulkarni34 2:54fafe349aa7 189
pkulkarni34 2:54fafe349aa7 190 printf("ok!!");
pkulkarni34 2:54fafe349aa7 191 fclose(wave_file);
pkulkarni34 2:54fafe349aa7 192
pkulkarni34 2:54fafe349aa7 193 lcd.filled_rectangle(50, 45, 80,90,WHITE);
pkulkarni34 2:54fafe349aa7 194 wait(3);
pkulkarni34 0:75276caf1a37 195 lcd.cls();
pkulkarni34 0:75276caf1a37 196 break;
pkulkarni34 0:75276caf1a37 197 }
pkulkarni34 1:5841ff349aae 198 //Press pushbutton 3 to choose scissor
pkulkarni34 2:54fafe349aa7 199 else if(pb3 != 1) {
pkulkarni34 0:75276caf1a37 200 lcd.cls();
pkulkarni34 2:54fafe349aa7 201 choice2 = 'S';
pkulkarni34 2:54fafe349aa7 202 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 2:54fafe349aa7 203 lcd.locate(0,1);
pkulkarni34 2:54fafe349aa7 204 lcd.printf("You chose scissors");
pkulkarni34 2:54fafe349aa7 205 //Play button select
pkulkarni34 2:54fafe349aa7 206 FILE *wave_file;
pkulkarni34 2:54fafe349aa7 207 printf("\n\n\nHello, wave world!\n");
pkulkarni34 2:54fafe349aa7 208 wave_file=fopen("/sd/mydir/select.wav","r");
pkulkarni34 2:54fafe349aa7 209 waver.play(wave_file);
pkulkarni34 2:54fafe349aa7 210 wait(1);
pkulkarni34 2:54fafe349aa7 211 printf("ok!!");
pkulkarni34 2:54fafe349aa7 212 fclose(wave_file);
pkulkarni34 0:75276caf1a37 213 lcd.circle(50, 60, 10,WHITE);
pkulkarni34 0:75276caf1a37 214 lcd.circle(50, 80, 10,WHITE);
pkulkarni34 0:75276caf1a37 215 lcd.line(62, 61, 90, 85, WHITE);
pkulkarni34 0:75276caf1a37 216 lcd.line(62, 81, 90, 55, WHITE);
pkulkarni34 2:54fafe349aa7 217 wait(3);
pkulkarni34 0:75276caf1a37 218 lcd.cls();
pkulkarni34 0:75276caf1a37 219 break;
pkulkarni34 0:75276caf1a37 220 }
pkulkarni34 2:54fafe349aa7 221 i--;
pkulkarni34 2:54fafe349aa7 222
pkulkarni34 0:75276caf1a37 223 }
pkulkarni34 1:5841ff349aae 224 RGB_LED(0,0,0); // Reset shitbrite color
pkulkarni34 2:54fafe349aa7 225
pkulkarni34 2:54fafe349aa7 226 //-------------------------------------------------------------------------------------------------------------------------------------
pkulkarni34 2:54fafe349aa7 227 // TIME-OUT
pkulkarni34 2:54fafe349aa7 228 //------------------------------------------------------------------------------------------------------------------------------------
pkulkarni34 1:5841ff349aae 229
pkulkarni34 1:5841ff349aae 230 //If user doesn't choose an option, show "Time Out" message and restart game
pkulkarni34 1:5841ff349aae 231 if(i == -1){
pkulkarni34 0:75276caf1a37 232 lcd.cls();
pkulkarni34 2:54fafe349aa7 233 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 2:54fafe349aa7 234 lcd.locate(0,5);
pkulkarni34 2:54fafe349aa7 235 lcd.color(RED);
pkulkarni34 2:54fafe349aa7 236 lcd.printf(" Your time is up!");
pkulkarni34 2:54fafe349aa7 237 lcd.color(GREEN);
pkulkarni34 2:54fafe349aa7 238 //Play time up tune
pkulkarni34 2:54fafe349aa7 239 FILE *wave_file;
pkulkarni34 2:54fafe349aa7 240 printf("\n\n\nHello, wave world!\n");
pkulkarni34 2:54fafe349aa7 241 wave_file=fopen("/sd/mydir/timeup.wav","r");
pkulkarni34 2:54fafe349aa7 242 waver.play(wave_file);
pkulkarni34 2:54fafe349aa7 243
pkulkarni34 2:54fafe349aa7 244 printf("ok!!");
pkulkarni34 2:54fafe349aa7 245 fclose(wave_file);
pkulkarni34 2:54fafe349aa7 246 wait(3);
pkulkarni34 1:5841ff349aae 247 goto L1; //Starts the game again
pkulkarni34 0:75276caf1a37 248 }
pkulkarni34 0:75276caf1a37 249
pkulkarni34 2:54fafe349aa7 250 //--------------------------------------------------------------------------------------------------------------------------------------
pkulkarni34 0:75276caf1a37 251
pkulkarni34 4:0be9cd917c17 252 //Send player 2's choice to player 1
pkulkarni34 3:fb5a647123cb 253 player2.printf("%c",choice2);
pkulkarni34 3:fb5a647123cb 254 myled2 = 1;
pkulkarni34 3:fb5a647123cb 255 wait(1);
pkulkarni34 3:fb5a647123cb 256
pkulkarni34 4:0be9cd917c17 257 //Receive Player 1's choice
pkulkarni34 3:fb5a647123cb 258 while(1){
pkulkarni34 4:0be9cd917c17 259 lcd.locate(1,4);
pkulkarni34 4:0be9cd917c17 260 lcd.printf(" Waiting for \n the other player");
pkulkarni34 3:fb5a647123cb 261 if(player2.readable()){
pkulkarni34 3:fb5a647123cb 262 choice1 = player2.getc();
pkulkarni34 3:fb5a647123cb 263 myled = 1;
pkulkarni34 3:fb5a647123cb 264 break;
pkulkarni34 3:fb5a647123cb 265 }
pkulkarni34 3:fb5a647123cb 266 }
pkulkarni34 3:fb5a647123cb 267
pkulkarni34 3:fb5a647123cb 268
pkulkarni34 2:54fafe349aa7 269 //-------------------------------------------------------------------------------------------------------------------------------------
pkulkarni34 1:5841ff349aae 270 //Check to see who won
pkulkarni34 3:fb5a647123cb 271 //--------------------------------------------------------------------------------------------------------------------------
pkulkarni34 1:5841ff349aae 272 //Case 1 : Both players choose same option
pkulkarni34 2:54fafe349aa7 273 if(choice1 == 'R' && choice2 == 'R' ||
pkulkarni34 3:fb5a647123cb 274 choice1== 'P' && choice2 == 'P' ||
pkulkarni34 2:54fafe349aa7 275 choice1 == 'S' && choice2 == 'S' ) {
pkulkarni34 0:75276caf1a37 276 lcd.cls();
pkulkarni34 2:54fafe349aa7 277 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 2:54fafe349aa7 278 lcd.locate(1,2);
pkulkarni34 2:54fafe349aa7 279 lcd.printf(" It's a draw!");
pkulkarni34 0:75276caf1a37 280 wait(4);
pkulkarni34 0:75276caf1a37 281 }
pkulkarni34 1:5841ff349aae 282 //Case 2:
pkulkarni34 1:5841ff349aae 283 //Player 1 : Rock
pkulkarni34 1:5841ff349aae 284 //Player 2 : Paper
pkulkarni34 2:54fafe349aa7 285 else if(choice1 == 'R' && choice2 == 'P'){
pkulkarni34 0:75276caf1a37 286
pkulkarni34 0:75276caf1a37 287 lcd.cls();
pkulkarni34 2:54fafe349aa7 288 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 0:75276caf1a37 289
pkulkarni34 2:54fafe349aa7 290 lcd.locate(1,2);
pkulkarni34 2:54fafe349aa7 291 lcd.printf(" P1 chose Rock\n");
pkulkarni34 2:54fafe349aa7 292 lcd.printf(" P2 chose Paper\n\n\n\n");
pkulkarni34 2:54fafe349aa7 293 lcd.locate(1,5);
pkulkarni34 2:54fafe349aa7 294 lcd.printf(" Player 2 wins!");
pkulkarni34 2:54fafe349aa7 295 lcd.filled_rectangle(50, 60, 80,90,WHITE);
pkulkarni34 0:75276caf1a37 296 p2++;
pkulkarni34 0:75276caf1a37 297 wait(4);
pkulkarni34 2:54fafe349aa7 298 }
pkulkarni34 1:5841ff349aae 299 //Case 3:
pkulkarni34 1:5841ff349aae 300 //Player 1 : Paper
pkulkarni34 1:5841ff349aae 301 //Player 2 : Rock
pkulkarni34 2:54fafe349aa7 302 else if(choice2== 'P' && choice1== 'R'){
pkulkarni34 0:75276caf1a37 303
pkulkarni34 0:75276caf1a37 304 lcd.cls();
pkulkarni34 2:54fafe349aa7 305 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 2:54fafe349aa7 306 lcd.locate(1,2);
pkulkarni34 0:75276caf1a37 307 lcd.printf("P1 chose Paper\n");
pkulkarni34 2:54fafe349aa7 308 lcd.printf(" P2 chose Rock\n\n");
pkulkarni34 2:54fafe349aa7 309 lcd.locate(1,5);
pkulkarni34 0:75276caf1a37 310 lcd.printf("P1 wins!");
pkulkarni34 2:54fafe349aa7 311 lcd.filled_rectangle(50, 60, 80,90,WHITE);
pkulkarni34 0:75276caf1a37 312 p1++;
pkulkarni34 0:75276caf1a37 313 wait(5);
pkulkarni34 0:75276caf1a37 314 }
pkulkarni34 0:75276caf1a37 315
pkulkarni34 1:5841ff349aae 316 //Case 4:
pkulkarni34 1:5841ff349aae 317 //Player 1 : Paper
pkulkarni34 1:5841ff349aae 318 //Player 2 : Scissor
pkulkarni34 0:75276caf1a37 319
pkulkarni34 2:54fafe349aa7 320 else if(choice1 == 'P' && choice2 == 'S'){
pkulkarni34 0:75276caf1a37 321
pkulkarni34 0:75276caf1a37 322 lcd.cls();
pkulkarni34 2:54fafe349aa7 323 lcd.locate(1,1);
pkulkarni34 0:75276caf1a37 324 lcd.printf("P1 chose Paper\n");
pkulkarni34 2:54fafe349aa7 325 lcd.printf(" P2 chose Scissors\n\n");
pkulkarni34 2:54fafe349aa7 326 lcd.locate(1,4);
pkulkarni34 2:54fafe349aa7 327 lcd.printf("P2 wins!");
pkulkarni34 0:75276caf1a37 328 p2++;
pkulkarni34 0:75276caf1a37 329 lcd.circle(50, 60, 10,WHITE);
pkulkarni34 0:75276caf1a37 330 lcd.circle(50, 80, 10,WHITE);
pkulkarni34 0:75276caf1a37 331 lcd.line(62, 61, 90, 85, WHITE);
pkulkarni34 0:75276caf1a37 332 lcd.line(62, 81, 90, 55, WHITE);
pkulkarni34 0:75276caf1a37 333 wait(5);
pkulkarni34 0:75276caf1a37 334
pkulkarni34 0:75276caf1a37 335 }
pkulkarni34 1:5841ff349aae 336 //Case 5:
pkulkarni34 1:5841ff349aae 337 //Player 1 : Scissor
pkulkarni34 1:5841ff349aae 338 //Player 2 : Paper
pkulkarni34 2:54fafe349aa7 339 else if(choice1 == 'S' && choice2 == 'P'){
pkulkarni34 0:75276caf1a37 340
pkulkarni34 0:75276caf1a37 341 lcd.cls();
pkulkarni34 2:54fafe349aa7 342 lcd.locate(1,1);
pkulkarni34 0:75276caf1a37 343 lcd.printf("P1 chose Scissors\n");
pkulkarni34 2:54fafe349aa7 344 lcd.printf(" P2 chose Paper\n\n");
pkulkarni34 2:54fafe349aa7 345 lcd.locate(1,4);
pkulkarni34 0:75276caf1a37 346 lcd.printf("P1 wins!");
pkulkarni34 0:75276caf1a37 347 p1++;
pkulkarni34 0:75276caf1a37 348 lcd.circle(50, 60, 10,WHITE);
pkulkarni34 0:75276caf1a37 349 lcd.circle(50, 80, 10,WHITE);
pkulkarni34 0:75276caf1a37 350 lcd.line(62, 61, 90, 85, WHITE);
pkulkarni34 0:75276caf1a37 351 lcd.line(62, 81, 90, 55, WHITE);
pkulkarni34 0:75276caf1a37 352 wait(5);
pkulkarni34 0:75276caf1a37 353
pkulkarni34 0:75276caf1a37 354 }
pkulkarni34 1:5841ff349aae 355 //Case 6:
pkulkarni34 1:5841ff349aae 356 //Player 1 : Rock
pkulkarni34 1:5841ff349aae 357 //Player 2 : Scissors
pkulkarni34 2:54fafe349aa7 358 else if(choice1 == 'R' && choice2 == 'S'){
pkulkarni34 0:75276caf1a37 359
pkulkarni34 0:75276caf1a37 360 lcd.cls();
pkulkarni34 2:54fafe349aa7 361 lcd.locate(1,1);
pkulkarni34 0:75276caf1a37 362 lcd.printf("P1 chose Rock\n");
pkulkarni34 2:54fafe349aa7 363 lcd.printf(" P2 chose Scissors\n\n");
pkulkarni34 2:54fafe349aa7 364 lcd.locate(1,3);
pkulkarni34 0:75276caf1a37 365 lcd.printf("P1 wins!");
pkulkarni34 0:75276caf1a37 366 p1++;
pkulkarni34 2:54fafe349aa7 367 lcd.circle(60, 70, 30,WHITE);
pkulkarni34 0:75276caf1a37 368 wait(5);
pkulkarni34 0:75276caf1a37 369 }
pkulkarni34 1:5841ff349aae 370 //Case 7:
pkulkarni34 1:5841ff349aae 371 //Player 1 : Scissors
pkulkarni34 1:5841ff349aae 372 //Player 2 : Rock
pkulkarni34 0:75276caf1a37 373
pkulkarni34 2:54fafe349aa7 374 else if(choice1 == 'S' && choice2 == 'R'){
pkulkarni34 0:75276caf1a37 375
pkulkarni34 0:75276caf1a37 376 lcd.cls();
pkulkarni34 2:54fafe349aa7 377 lcd.locate(1,1);
pkulkarni34 4:0be9cd917c17 378 lcd.printf("P1 chose Scissors ");
pkulkarni34 2:54fafe349aa7 379 lcd.printf(" P2 chose Rock\n\n");
pkulkarni34 2:54fafe349aa7 380 lcd.locate(1,3);
pkulkarni34 0:75276caf1a37 381 lcd.printf("P2 wins!");
pkulkarni34 0:75276caf1a37 382 p2++;
pkulkarni34 2:54fafe349aa7 383 lcd.circle(60, 70, 30,WHITE);
pkulkarni34 0:75276caf1a37 384 wait(5);
pkulkarni34 3:fb5a647123cb 385 }
pkulkarni34 3:fb5a647123cb 386
pkulkarni34 3:fb5a647123cb 387 lcd.cls();
pkulkarni34 3:fb5a647123cb 388 lcd.locate(1,4);
pkulkarni34 3:fb5a647123cb 389 lcd.rectangle(0,0,125,125,WHITE); //Draw white border
pkulkarni34 3:fb5a647123cb 390 lcd.printf(" P1 Score : %d\n",p1);
pkulkarni34 3:fb5a647123cb 391 lcd.printf(" P2 Score : %d\n\n\n\n",p2);
pkulkarni34 3:fb5a647123cb 392 lcd.printf(" 1 to continue\n\n");
pkulkarni34 3:fb5a647123cb 393 lcd.printf(" 2 to end\n\n");
pkulkarni34 3:fb5a647123cb 394
pkulkarni34 3:fb5a647123cb 395 char continue1 = 'N';
pkulkarni34 3:fb5a647123cb 396 char continue2 = 'N';
pkulkarni34 3:fb5a647123cb 397 //char cont;
pkulkarni34 3:fb5a647123cb 398
pkulkarni34 3:fb5a647123cb 399
pkulkarni34 3:fb5a647123cb 400 while(1){
pkulkarni34 3:fb5a647123cb 401 if(pb1 != 1) {
pkulkarni34 3:fb5a647123cb 402 lcd.cls();
pkulkarni34 3:fb5a647123cb 403 continue2 = 'Y';
pkulkarni34 3:fb5a647123cb 404 break;
pkulkarni34 3:fb5a647123cb 405 //goto L3;
pkulkarni34 3:fb5a647123cb 406 }
pkulkarni34 3:fb5a647123cb 407 else if(pb2 != 1) {
pkulkarni34 3:fb5a647123cb 408 lcd.cls();
pkulkarni34 3:fb5a647123cb 409 continue2 = 'N';
pkulkarni34 3:fb5a647123cb 410 break;
pkulkarni34 3:fb5a647123cb 411 }
pkulkarni34 0:75276caf1a37 412 }
pkulkarni34 3:fb5a647123cb 413
pkulkarni34 3:fb5a647123cb 414
pkulkarni34 3:fb5a647123cb 415 player2.printf("%c",continue2);
pkulkarni34 3:fb5a647123cb 416 myled3 = 1;
pkulkarni34 3:fb5a647123cb 417 wait(1);
pkulkarni34 3:fb5a647123cb 418
pkulkarni34 3:fb5a647123cb 419 while(1){
pkulkarni34 4:0be9cd917c17 420 lcd.locate(1,4);
pkulkarni34 4:0be9cd917c17 421 lcd.printf(" Waiting for \n the other player");
pkulkarni34 3:fb5a647123cb 422 if(player2.readable()){
pkulkarni34 3:fb5a647123cb 423 continue1 = player2.getc();
pkulkarni34 3:fb5a647123cb 424 myled = 1;
pkulkarni34 3:fb5a647123cb 425 break;
pkulkarni34 3:fb5a647123cb 426 }
pkulkarni34 3:fb5a647123cb 427 }
pkulkarni34 3:fb5a647123cb 428
pkulkarni34 3:fb5a647123cb 429 //If both say continue then you need to go back to L3
pkulkarni34 3:fb5a647123cb 430 if(continue1 == 'Y' && continue2 == 'Y') goto L3;
pkulkarni34 3:fb5a647123cb 431 else goto L2;
pkulkarni34 4:0be9cd917c17 432 } }
pkulkarni34 0:75276caf1a37 433
pkulkarni34 0:75276caf1a37 434
pkulkarni34 1:5841ff349aae 435 //If game ends :
pkulkarni34 0:75276caf1a37 436 L2:
pkulkarni34 2:54fafe349aa7 437 lcd.cls();
pkulkarni34 0:75276caf1a37 438 //Create animation of two bouncing balls
pkulkarni34 2:54fafe349aa7 439 float fx=50.0,fy=21.0,vx=5.0,vy=0.4,vx2=2,fx2=40.0;
pkulkarni34 0:75276caf1a37 440 int x=50,y=21,radius=4;
pkulkarni34 0:75276caf1a37 441 int x2 = 30, y2 = 10;
pkulkarni34 2:54fafe349aa7 442 //lcd.rectangle(0,0,125,125,GREEN); //Draw green border
pkulkarni34 0:75276caf1a37 443 //draw walls
pkulkarni34 0:75276caf1a37 444 wait(2);
pkulkarni34 1:5841ff349aae 445 //If Player 1's score is higher than Player 2's score
pkulkarni34 0:75276caf1a37 446 if(p1 > p2)
pkulkarni34 0:75276caf1a37 447 lcd.text_string("Player 1 Wins!", 2, 4, FONT_7X8, WHITE);
pkulkarni34 1:5841ff349aae 448 //If Player 1's score is equal to Player 2's score
pkulkarni34 4:0be9cd917c17 449 else if(p1 == p2)
pkulkarni34 0:75276caf1a37 450 lcd.text_string("It's a draw!", 2, 4, FONT_7X8, WHITE);
pkulkarni34 1:5841ff349aae 451 //If Player 2's score is higher than Player 1's score
pkulkarni34 0:75276caf1a37 452 else if(p2 > p1)
pkulkarni34 0:75276caf1a37 453 lcd.text_string("Player 2 Wins!", 2, 4, FONT_7X8, WHITE);
pkulkarni34 0:75276caf1a37 454
pkulkarni34 2:54fafe349aa7 455 // Play winning tune
pkulkarni34 2:54fafe349aa7 456 FILE *wave_file;
pkulkarni34 2:54fafe349aa7 457 printf("\n\n\nHello, wave world!\n");
pkulkarni34 2:54fafe349aa7 458 wave_file=fopen("/sd/mydir/win.wav","r");
pkulkarni34 2:54fafe349aa7 459 waver.play(wave_file);
pkulkarni34 2:54fafe349aa7 460
pkulkarni34 2:54fafe349aa7 461 printf("ok!!");
pkulkarni34 2:54fafe349aa7 462 fclose(wave_file);
pkulkarni34 0:75276caf1a37 463
pkulkarni34 0:75276caf1a37 464 for (int i=0; i<100; i++) {
pkulkarni34 0:75276caf1a37 465 //draw ball
pkulkarni34 0:75276caf1a37 466 //lcd.cls();
pkulkarni34 0:75276caf1a37 467 if(p1 > p2)
pkulkarni34 0:75276caf1a37 468 //lcd.printf("Player 1 wins!");
pkulkarni34 0:75276caf1a37 469 lcd.text_string("Player 1 Wins!", 2, 4, FONT_7X8, WHITE);
pkulkarni34 0:75276caf1a37 470
pkulkarni34 0:75276caf1a37 471 else if(p1 == p2)
pkulkarni34 0:75276caf1a37 472 //lcd.printf("It's a draw!");
pkulkarni34 0:75276caf1a37 473 lcd.text_string("It's a draw!", 2, 4, FONT_7X8, WHITE);
pkulkarni34 0:75276caf1a37 474
pkulkarni34 0:75276caf1a37 475 else if(p2 > p1)
pkulkarni34 0:75276caf1a37 476 //lcd.printf("Player 2 wins!");
pkulkarni34 0:75276caf1a37 477 lcd.text_string("Player 2 Wins!", 2, 4, FONT_7X8, WHITE);
pkulkarni34 0:75276caf1a37 478
pkulkarni34 0:75276caf1a37 479 lcd.filled_circle(x, y, radius, RED);
pkulkarni34 0:75276caf1a37 480 lcd.filled_circle(x2,y2,radius,BLUE);
pkulkarni34 0:75276caf1a37 481 RGB_LED(x,y,x);
pkulkarni34 0:75276caf1a37 482 //bounce off edge walls and slow down a bit
pkulkarni34 0:75276caf1a37 483 if ((x<=radius+1) || (x>=126-radius)) vx = -.90*vx;
pkulkarni34 0:75276caf1a37 484 if ((y<=radius+1) || (y>=126-radius)) vy = -.90*vy;
pkulkarni34 0:75276caf1a37 485 if ((x2<=radius+1) || (x2>=126-radius)) vx2 = -.90*vx2;
pkulkarni34 0:75276caf1a37 486 if ((y2<=radius+1) || (y2>=126-radius)) vy = -.90*vy;
pkulkarni34 0:75276caf1a37 487 //erase old ball location
pkulkarni34 0:75276caf1a37 488 lcd.filled_circle(x, y, radius, BLACK);
pkulkarni34 0:75276caf1a37 489 lcd.filled_circle(x2, y2, radius, BLACK);
pkulkarni34 0:75276caf1a37 490 //move ball
pkulkarni34 0:75276caf1a37 491 fx=fx+vx;
pkulkarni34 0:75276caf1a37 492 fx2=fx2+vx2;
pkulkarni34 0:75276caf1a37 493 fy=fy+vy;
pkulkarni34 0:75276caf1a37 494 x=(int)fx;
pkulkarni34 0:75276caf1a37 495 y=(int)fy;
pkulkarni34 0:75276caf1a37 496 x2=(int)fx2;
pkulkarni34 0:75276caf1a37 497 y2=(int)fy;
pkulkarni34 0:75276caf1a37 498 }
pkulkarni34 3:fb5a647123cb 499 lcd.cls();
pkulkarni34 2:54fafe349aa7 500
pkulkarni34 3:fb5a647123cb 501 }