Code for Player 2 of Rock Paper Scissors
Dependencies: 4DGL-uLCD-SE PinDetect SDFileSystem mbed wave_player
main.cpp
- Committer:
- pkulkarni34
- Date:
- 2015-10-19
- Revision:
- 0:75276caf1a37
- Child:
- 1:5841ff349aae
File content as of revision 0:75276caf1a37:
//ECE 4180 Mini Project //Prachi Kulkarni and Kendra Dodson #include "mbed.h" #include "uLCD_4DGL.h" #include "SDFileSystem.h" #include "wave_player.h" SDFileSystem sd(p5, p6, p7, p8, "sd"); AnalogOut DACout(p18); wave_player waver(&DACout); // Wave Player //DigitalOut myled(LED1); uLCD_4DGL lcd(p28, p27, p29); //uLCD DigitalIn pb1(p17); //Pushbutton 1 DigitalIn pb2(p19); //Pushbutton 2 DigitalIn pb3(p20); //Pushbutton 3 PwmOut led1(p21); //led 1 PwmOut led2(p22); //led2 PwmOut led3(p23); //led3 //shiftbrite DigitalOut latch(p15); DigitalOut enable(p16); SPI spi(p11, p12, p13); //Choice //Choice = 1 for rock //Choice = 2 for paper //Choice = 3 for scissors int choice1 = 0; int choice2 = 0; //Points int p1 = 0; int p2 = 0; void RGB_LED(int red, int green, int blue); void RGB_LED(int red, int green, int blue) { unsigned int low_color=0; unsigned int high_color=0; high_color=(blue<<4)|((red&0x3C0)>>6); low_color=(((red&0x3F)<<10)|(green)); spi.write(high_color); spi.write(low_color); latch=1; latch=0; } int main() { L1: spi.format(16,0); spi.frequency(500000); enable=0; latch=0; pb1.mode(PullUp); wait(0.001); pb2.mode(PullUp); wait(0.001); pb3.mode(PullUp); wait(0.001); //Display lcd.locate(0,0); //lcd_mutex.lock(); lcd.printf("Rock Paper Scissor"); lcd.locate(0,4); lcd.printf("Button 1 for Rocks"); lcd.locate(0,6); lcd.printf("Button 2 for Paper"); lcd.locate(0,8); lcd.printf("Button 3 for Scissors\n\n"); lcd.printf("Press 1 to continue"); wait(2); while(1){ if(pb1 != 1){ L3: lcd.cls(); //Clear screen lcd.locate(0,4); lcd.printf(" Player 1 \n\n\n"); lcd.printf("You have 5 seconds"); lcd.printf(" to choose\n"); lcd.printf(" an option!\n"); wait(2); int i; int red = 1; for(i = 5; i > -1 ; i--){ lcd.cls(); lcd.locate(4,4); lcd.set_font(FONT_12X16); //lcd.color(BLUE); // Setting Font color //lcd.text_mode(TRANSPARENT); lcd.text_width(8); lcd.text_height(8); lcd.text_bold(ON); RGB_LED(red*25,0,0); red = red + 5; //green = green + 5; //blue = blue + 5; //wait(2); //red = red + 15; //RGB_LED(red, green,blue); lcd.printf("%d",i); wait(1); if(pb1 != 1) { lcd.cls(); choice1 = 1; lcd.printf("You chose rock!"); lcd.circle(60, 60, 30,WHITE); wait(2); lcd.cls(); break; } if(pb2 != 1) { lcd.cls(); choice1 = 2; lcd.printf("You chose paper!"); lcd.rectangle(40, 60, 80,100,WHITE); wait(2); lcd.cls(); break; } if(pb3 != 1) { lcd.cls(); choice1 = 3; lcd.printf("You chose scissors!"); lcd.circle(50, 60, 10,WHITE); lcd.circle(50, 80, 10,WHITE); lcd.line(62, 61, 90, 85, WHITE); lcd.line(62, 81, 90, 55, WHITE); wait(2); lcd.cls(); break; } } RGB_LED(0,0,0); if(i == -1){ lcd.cls(); lcd.printf("Your time is up"); wait(5); goto L1; } lcd.cls(); //Clear screen wait(2); lcd.printf("Press 1 if P2 is ready"); while(1){ if(pb1 != 1) break; } lcd.cls(); wait(1); lcd.locate(0,4); lcd.printf(" Player 2 \n\n\n"); lcd.printf("You have 5 seconds"); lcd.printf(" to choose\n"); lcd.printf(" an option!\n"); wait(5); int j; int blue = 1; for(j = 5; j > -1 ; j--){ lcd.cls(); lcd.locate(4,4); lcd.text_width(8); lcd.text_height(8); RGB_LED(0,0,blue*25); blue = blue + 5; lcd.printf("%d",j); wait(1); if(pb1 != 1) { lcd.cls(); choice2 = 1; lcd.printf("You chose rock!"); lcd.circle(60, 60, 30,WHITE); wait(2); lcd.cls(); break; } if(pb2 != 1) { lcd.cls(); choice2 = 2; lcd.printf("You chose paper!"); lcd.rectangle(40, 60, 80,100,WHITE); wait(2); lcd.cls(); break; } if(pb3 != 1) { lcd.cls(); choice2 = 3; lcd.printf("You chose scissors!"); lcd.circle(50, 60, 10,WHITE); lcd.circle(50, 80, 10,WHITE); lcd.line(62, 61, 90, 85, WHITE); lcd.line(62, 81, 90, 55, WHITE); wait(2); lcd.cls(); break; } } if(j == -1){ lcd.cls(); lcd.printf("Your time is up"); wait(5); goto L1; } RGB_LED(0,0,0); if(choice1 == 1 && choice2 == 1 || choice1== 2 && choice2 == 2 || choice1 == 3 && choice2 == 3 ) { lcd.cls(); lcd.printf("It's a draw!"); wait(4); lcd.cls(); lcd.printf("Press 1 to continue\n\n"); lcd.printf("Press 2 to end\n\n"); while(1){ if(pb1 != 1) { lcd.cls(); goto L3; } else if(pb2 != 1) goto L2; } } else if(choice1 == 1 && choice2 == 2){ lcd.cls(); lcd.printf("Player 1 chose Rock\n"); lcd.printf("Player 2 chose Paper\n\n"); lcd.printf("Player 2 wins!"); lcd.rectangle(40, 60, 80,100,WHITE); p2++; wait(4); lcd.cls(); lcd.printf("Press 1 to continue\n\n"); lcd.printf("Press 2 to end\n\n"); while(1){ if(pb1 != 1) { lcd.cls(); goto L3; } else if(pb2 != 1) goto L2; } } } else if(choice2== 1 && choice1== 2){ lcd.cls(); lcd.printf("P1 chose Paper\n"); lcd.printf("P2 chose Rock\n\n"); lcd.printf("P1 wins!"); lcd.rectangle(40, 60, 80,100,WHITE); p1++; wait(5); lcd.cls(); lcd.printf("P1 Score : %d\n",p1); lcd.printf("P2 Score : %d\n\n",p2); lcd.printf("Press 1 to continue\n\n"); lcd.printf("Press 2 to end\n\n"); while(1){ if(pb1 != 1) { lcd.cls(); goto L3; } else if(pb2 != 1) goto L2; } } else if(choice1 == 2 && choice2 == 3){ lcd.cls(); lcd.printf("P1 chose Paper\n"); lcd.printf("P2 chose Scissors\n\n"); lcd.printf("Player 2 wins!"); p2++; lcd.circle(50, 60, 10,WHITE); lcd.circle(50, 80, 10,WHITE); lcd.line(62, 61, 90, 85, WHITE); lcd.line(62, 81, 90, 55, WHITE); wait(5); lcd.cls(); lcd.printf("P1 Score : %d\n",p1); lcd.printf("P2 Score : %d\n\n",p2); lcd.printf("Press 1 to continue\n\n"); lcd.printf("Press 2 to end\n\n"); while(1){ if(pb1 != 1) { lcd.cls(); goto L3; } else if(pb2 != 1) goto L2; } } else if(choice1 == 3 && choice2 == 2){ lcd.cls(); lcd.printf("P1 chose Scissors\n"); lcd.printf("P2 chose Paper\n\n"); lcd.printf("P1 wins!"); p1++; lcd.circle(50, 60, 10,WHITE); lcd.circle(50, 80, 10,WHITE); lcd.line(62, 61, 90, 85, WHITE); lcd.line(62, 81, 90, 55, WHITE); wait(5); lcd.cls(); lcd.printf("P1 Score : %d\n",p1); lcd.printf("P2 Score : %d\n\n",p2); lcd.printf("Press 1 to continue\n\n"); lcd.printf("Press 2 to end\n\n"); while(1){ if(pb1 != 1) { lcd.cls(); goto L3; } else if(pb2 != 1) goto L2; } } else if(choice1 == 1 && choice2 == 3){ lcd.cls(); lcd.printf("P1 chose Rock\n"); lcd.printf("P2 chose Scissors\n\n"); lcd.printf("P1 wins!"); p1++; lcd.circle(60, 60, 30,WHITE); wait(5); lcd.cls(); lcd.printf("P1 Score : %d\n",p1); lcd.printf("P2 Score : %d\n\n",p2); lcd.printf("Press 1 to continue\n\n"); lcd.printf("Press 2 to end\n\n"); while(1){ if(pb1 != 1) { lcd.cls(); goto L3; } else if(pb2 != 1) goto L2; } } else if(choice1 == 3 && choice2 == 1){ lcd.cls(); lcd.printf("P1 chose Scissors\n"); lcd.printf("P2 chose Rock\n\n"); lcd.printf("P2 wins!"); p2++; lcd.circle(60, 60, 30,WHITE); wait(5); lcd.cls(); lcd.printf("P1 Score : %d\n",p1); lcd.printf("P2 Score : %d\n\n",p2); lcd.printf("Press 1 to continue\n\n"); lcd.printf("Press 2 to end\n\n"); while(1){ if(pb1 != 1) { lcd.cls(); goto L3; } else if(pb2 != 1) goto L2; } } } /* while(1) { myled = 1; wait(0.2); myled = 0; wait(0.2); } */ // Code to play a wave file /* FILE *wave_file; printf("\n\n\nHello, wave world!\n"); wave_file=fopen("/sd/mydir/HG.wav","r"); waver.play(wave_file); wait(5); printf("ok!!"); fclose(wave_file); */ //Code to use Shiftbrite /* for(int i=1; i <= 10; i++) { //if(lightSensor > 0.5) { RGB_LED(0, 0, i*10); wait(3); if(i%5){ RGB_LED(250, 253,8); wait(1); } */ L2: lcd.cls(); //Create animation of two bouncing balls float fx=50.0,fy=21.0,vx=5.0,vy=0.4,vx2=5,fx2=40.0; int x=50,y=21,radius=4; int x2 = 30, y2 = 10; //lcd.background_color(BLACK); //lcd.cls(); //uLCD.text_string("Highest Score!!", 2, 4, FONT_7X8, WHITE); // playSound("/sd/wavfiles/BUZZER.wav"); //draw walls wait(2); //lcd.text_width(2); //lcd.text_height(2); if(p1 > p2) //lcd.printf("Player 1 wins!"); lcd.text_string("Player 1 Wins!", 2, 4, FONT_7X8, WHITE); else if(p1 == p2) //lcd.printf("It's a draw!"); lcd.text_string("It's a draw!", 2, 4, FONT_7X8, WHITE); else if(p2 > p1) //lcd.printf("Player 2 wins!"); lcd.text_string("Player 2 Wins!", 2, 4, FONT_7X8, WHITE); for (int i=0; i<100; i++) { //draw ball //lcd.cls(); if(p1 > p2) //lcd.printf("Player 1 wins!"); lcd.text_string("Player 1 Wins!", 2, 4, FONT_7X8, WHITE); else if(p1 == p2) //lcd.printf("It's a draw!"); lcd.text_string("It's a draw!", 2, 4, FONT_7X8, WHITE); else if(p2 > p1) //lcd.printf("Player 2 wins!"); lcd.text_string("Player 2 Wins!", 2, 4, FONT_7X8, WHITE); lcd.filled_circle(x, y, radius, RED); lcd.filled_circle(x2,y2,radius,BLUE); RGB_LED(x,y,x); //bounce off edge walls and slow down a bit if ((x<=radius+1) || (x>=126-radius)) vx = -.90*vx; if ((y<=radius+1) || (y>=126-radius)) vy = -.90*vy; if ((x2<=radius+1) || (x2>=126-radius)) vx2 = -.90*vx2; if ((y2<=radius+1) || (y2>=126-radius)) vy = -.90*vy; //erase old ball location lcd.filled_circle(x, y, radius, BLACK); lcd.filled_circle(x2, y2, radius, BLACK); //move ball fx=fx+vx; fx2=fx2+vx2; fy=fy+vy; x=(int)fx; y=(int)fy; x2=(int)fx2; y2=(int)fy; } wait(3); lcd.cls(); lcd.printf("End!"); wait(3); lcd.cls(); }