Code for Player 1 of Rock Paper Scissors Game

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

Committer:
pkulkarni34
Date:
Fri Oct 23 02:51:31 2015 +0000
Revision:
3:154b62d481b7
Parent:
2:d6ccc8dae85b
Rock Paper Scissors - Player 1

Who changed what in which revision?

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