william jenkins
/
Mbed_Poker_Secondary
Poker code for Secondary Mbed
Diff: main.cpp
- Revision:
- 0:1324145f6904
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Dec 11 07:07:19 2013 +0000 @@ -0,0 +1,606 @@ +#include "mbed.h" +#include <mpr121.h> +#include "NokiaLCD.h" + +Serial device(p13,p14); +Serial pc(USBTX, USBRX); + +//PwmOut IRLED(p21); +// Setup the i2c bus on pins 28 and 27 +I2C i2c1(p9, p10); +I2C i2c2(p28, p27); + +// Setup the Mpr121: +// constructor(i2c object, i2c address of the mpr121) +Mpr121 mpr1(&i2c1, Mpr121::ADD_VSS); +Mpr121 mpr2(&i2c2, Mpr121::ADD_VSS); + +NokiaLCD lcd2(p5, p7, p8, p15, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type +//NokiaLCD lcd3(p5, p7, p16, p17, NokiaLCD::LCD6610); +NokiaLCD lcd1(p5, p7, p18, p19, NokiaLCD::LCD6610); + +void print_on_lcd(int n, int suit, int card, int id) +{ + char x,y,w; + x = 0; + y = 0; + w = 0; + switch(id) { + case 0: + // lcd1.reset(); + lcd1.background(0x2b8135); + lcd1.foreground(0x000000); + // lcd1.cls(); + lcd1.locate(0,3); + /*if(n >= 0) { + lcd1.printf("Raise to %d",n); + } + if(n == -1) { + lcd1.printf("Fold"); + } + if(n == -2) { + lcd1.printf("Call"); + } + if(n == -4) { + lcd1.reset(); + lcd1.cls(); + lcd1.printf("Time up!"); + } + if (n==-3) { + lcd1.printf("Exceeds limit, enter new value"); + }*/ + + if(n == -6) { + lcd1.locate(5,6); + if((suit==1)||(suit==2))lcd1.foreground(0x000000); + if((suit==3)||(suit==4))lcd1.foreground(0xFF0000); + if(suit == 1) { + y = 'S'; + } else if(suit == 2) { + y = 'C'; + } else if(suit == 3) { + y = 'H'; + } else y = 'D'; + if(card==2) x = '2'; + else if(card == 3) x = '3'; + else if(card == 4) x = '4'; + else if(card == 5) x = '5'; + else if(card == 6) x = '6'; + else if(card == 7) x = '7'; + else if(card == 8) x = '8'; + else if(card == 9) x = '9'; + else if(card == 10) { + x = '1'; + w = '0'; + lcd1.printf(" %c %c%c", y, x, w); + } else if(card == 11) x = 'J'; + else if (card == 12) x = 'Q'; + else if (card == 13) x = 'K'; + else if (card == 1) x = 'A'; + if(card!=10)lcd1.printf(" %c %c", y, x); + } + if(n == -5) { + lcd1.locate(5,8); + if((suit==1)||(suit==2))lcd1.foreground(0x000000); + if((suit==3)||(suit==4))lcd1.foreground(0xFF0000); + if(suit == 1) { + y = 'S'; + } else if(suit == 2) { + y = 'C'; + } else if(suit == 3) { + y = 'H'; + } else y = 'D'; + if(card==2) x = '2'; + else if(card == 3) x = '3'; + else if(card == 4) x = '4'; + else if(card == 5) x = '5'; + else if(card == 6) x = '6'; + else if(card == 7) x = '7'; + else if(card == 8) x = '8'; + else if(card == 9) x = '9'; + else if(card == 0) { + x = '1'; + w = '0'; + lcd1.printf(" %c %c%c", y, x, w); + } else if(card == 11) x = 'J'; + else if (card == 12) x = 'Q'; + else if (card == 13) x = 'K'; + else if (card == 1) x = 'A'; + if(card!=10)lcd1.printf(" %c %c", y, x); + } + break; + case -9: + if(suit==0) { + lcd1.foreground(0x000000); + lcd1.locate(0, 1); + lcd1.printf("Current wallet:"); + lcd1.locate(6,3); + lcd1.printf("%d",n); + } else if(suit==1) { + lcd2.foreground(0x000000); + lcd2.locate(0, 1); + lcd2.printf("Current wallet:"); + lcd2.locate(6,3); + lcd2.printf("%d",n); + } + break; + case -8://(bet-Playerbet[ID],ID, 0, -8) + if(suit==0) { + lcd1.foreground(0x000000); + lcd1.locate(4, 10); + if(card==0)lcd1.printf("To Call: "); + if(card==1)lcd1.printf("To Raise:"); + lcd1.locate(6,12); + lcd1.printf("%d",n); + } else if(suit==1) { + lcd2.foreground(0x000000); + lcd2.locate(4, 10); + if(card==0)lcd2.printf("To Call:"); + if(card==1)lcd2.printf("To Raise:"); + lcd2.locate(6,12); + lcd2.printf("%d",n); + } + break; + case 1: + //lcd2.reset(); + lcd2.background(0x2b8135); + lcd2.foreground(0x000000); + //lcd2.cls(); + lcd2.locate(0,3); + /*if(n >= 0) { + lcd2.printf("Raise to %d",n); + } + if(n == -1) { + lcd2.printf("Fold"); + } + if(n == -2) { + lcd2.printf("Call"); + } + if(n == -4) { + lcd2.reset(); + lcd2.cls(); + lcd2.printf("Time up!"); + } + if (n == -3) { + lcd2.printf("Exceeds limit, enter new value"); + }*/ + + if(n == -6) { + lcd2.locate(5,6); + if((suit==1)||(suit==2))lcd2.foreground(0x000000); + if((suit==3)||(suit==4))lcd2.foreground(0xFF0000); + if(suit == 1) { + y = 'S'; + } else if(suit == 2) { + y = 'C'; + } else if(suit == 3) { + y = 'H'; + } else y = 'D'; + if(card==2) x = '2'; + else if(card == 3) x = '3'; + else if(card == 4) x = '4'; + else if(card == 5) x = '5'; + else if(card == 6) x = '6'; + else if(card == 7) x = '7'; + else if(card == 8) x = '8'; + else if(card == 9) x = '9'; + else if(card == 0) { + x = '1'; + w = '0'; + lcd2.printf(" %c %c%c", y, x, w); + } else if(card == 11) x = 'J'; + else if (card == 12) x = 'Q'; + else if (card == 13) x = 'K'; + else if (card == 1) x = 'A'; + if(card!=10)lcd2.printf(" %c %c", y, x); + } + + if(n == -5) { + lcd2.locate(5,8); + if((suit==1)||(suit==2))lcd2.foreground(0x000000); + if((suit==3)||(suit==4))lcd2.foreground(0xFF0000); + if(suit == 1) { + y = 'S'; + } else if(suit == 2) { + y = 'C'; + } else if(suit == 3) { + y = 'H'; + } else y = 'D'; + if(card==2) x = '2'; + else if(card == 3) x = '3'; + else if(card == 4) x = '4'; + else if(card == 5) x = '5'; + else if(card == 6) x = '6'; + else if(card == 7) x = '7'; + else if(card == 8) x = '8'; + else if(card == 9) x = '9'; + else if(card == 10) { + x = '1'; + w = '0'; + lcd2.printf(" %c %c%c", y, x, w); + } else if(card == 11) x = 'J'; + else if (card == 12) x = 'Q'; + else if (card == 13) x = 'K'; + else if (card == 1) x = 'A'; + if(card!=10)lcd2.printf(" %c %c", y, x); + } + break; + case 2: + lcd1.cls(); + break; + case 3: + lcd2.cls(); + break; + default: + lcd1.cls(); + lcd2.cls(); + x=1; + break; + + } + wait(rand()%1); +} + +int read_keypad(int n) +{ + + pc.printf("\nHello from the mbed & mpr121\n\r"); + + Timer t; + //float s; + //int turn; + unsigned char dataArray[2]; + unsigned int Amount[6]; + int max = 6; + unsigned int Total = 0; + int key = 0; + int count = 0; + //unsigned int card[2] = {3,12}; + //unsigned char suit[2] = {'S','H'}; + + t.reset(); + t.start(); + + while(1) { + //pc.printf("\n Entered value is:"); + if(t.read() == 60.0) { + print_on_lcd(-4, 0, 0, n); + t.stop(); + return 0; + } + if((n == 0)||(n == 1)) { + if(n == 0) { + dataArray[0] = mpr1.read(0x00); + dataArray[1] = mpr1.read(0x01); + } else if(n == 1) { + dataArray[0] = mpr2.read(0x00); + dataArray[1] = mpr2.read(0x01); + } + if(dataArray[0] != 0) { + switch(dataArray[0]) { + case 8: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 1); + //print_on_lcd(1); + Amount[count] = 1; + count++; + break; + case 128: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 2); + // print_on_lcd(2); + Amount[count] = 2; + count++; + break; + case 4: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 4); + // print_on_lcd(4); + Amount[count] = 4; + count++; + break; + case 64: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 5); + Amount[count] = 5; + // print_on_lcd(5); + count++; + break; + case 2: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 7); + Amount[count] = 7;//print_on_lcd(7); + count++; + break; + case 32: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 8);//print_on_lcd(8); + Amount[count] = 8; + count++; + break; + case 1: + + if(count != 0) { + while( count != 0) { + Total += Amount[key]*(pow( 10, (float) (count-1) )); + count--; + key++; + } + pc.printf("Total is: %d \r\n",Total); + //print_on_lcd(Total, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + t.stop(); + return Total; + } else { + pc.printf("MPR value: %s \r\n", "Call"); + print_on_lcd(-2, 0, 0, n); + t.stop(); + return -2; + } + case 16: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 0); + Amount[count] = 0; + count++; + break; + } + wait(0.5); + dataArray[0] = 0; + } else { + if(dataArray[1] != 0) { + switch(dataArray[1]) { + case 8: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 3); + Amount[count] = 3; + count++; + break; + case 4: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 6); + Amount[count] = 6; + count++; + break; + case 2: + if(count == max) { + pc.printf("Exceeds limit, enter new value \r\n"); + //print_on_lcd(-3, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + break; + } + pc.printf("MPR value: %d \r\n", 9); + Amount[count] = 9; + count++; + break; + case 1: + if(count != 0) { + while( count != 0) { + Total += Amount[key]*(pow( 10, (float) (count-1) )); + count--; + key++; + } + pc.printf("Total is: %d \r\n",Total); + //print_on_lcd(Total, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + t.stop(); + return Total; + } else { + pc.printf("MPR value: %s \r\n", "Fold"); + //print_on_lcd(-1, 0, 0, n); + for(int i=0; i<6; i++) { + Amount[i] = 0; + } + count = 0; + t.stop(); + return 0; + } + } + wait(0.5); + dataArray[1] = 0; + } + } + } else { + } + } +} + +int main() +{ + char temp = '0',index,tempc,temp_suit,temp_card, n=0; + int player = 0, Amount,Amount1,temp_int,temp_int1,i=0,arr[7],suit[2],card[2]; + //wait(3); + lcd1.reset(); + lcd1.foreground(0x000000); + lcd1.background(0x2b8135); + lcd1.fill(0, 0, 136, 136, 0x2b8135); + lcd1.locate(0,1); + + lcd2.reset(); + lcd2.foreground(0x000000); + lcd2.background(0x2b8135); + lcd2.fill(0, 0, 136, 136, 0x2b8135); + lcd2.locate(0,1); + n=0; + + while(1) { + pc.printf("\nPlayer id is:"); + temp = device.getc(); + if(n==2)n=0; + i=0; + pc.putc(temp); + + + if(temp == '3') player = 0; + if(temp == '4') player = 1; + if(temp == '6') { + print_on_lcd(2,0,0,player); + print_on_lcd(3,0,0,player); + //device.putc(temp); + } else { + //device.putc(temp); + + temp = device.getc(); + pc.printf("\noutside M"); + if(temp == 'M') { + //device.putc(temp); + pc.printf("\ninside M"); + tempc = device.getc(); + //pc.printf("\ntempc=%c",tempc); + //for(int i=0; i<6; i++) { + //index = device.getc(); + while(tempc != 'D') { + arr[i] =(tempc)-48; + pc.printf("\narr[i]=%d",arr[i]); + //if(i==5) tempc = device.getc(); + tempc = device.getc(); + //pc.printf("\ntempc=%c",tempc); + i++; + } + //Amount1=0; + //Amount1 = 1+arr[4]; + //pc.printf("\namount = %d",Amount1); + //Amount1 = (arr[1]*1) + (arr[2]*10) + (arr[3]*100) + (arr[4]*1000); + Amount1 = 0; + for(int j=0; j<6; j++) { + Amount1 = Amount1 + ((pow (10, (float) (j))) * arr[j]); + pc.printf("\nAmount = %d of player %d",Amount1,player); + } + //if(Amount1 == 500) Amount1 = Amount1*10; + pc.printf("\nAmount = %d of player %d",Amount1,player); + + print_on_lcd(Amount1, player, 0, -9); + Amount1=0; + Amount = read_keypad(player); + if(Amount == -2) device.putc('C'); + else if(Amount == 0) device.putc('F'); + else { + device.putc('R'); + temp_int = Amount1-Amount; + for(int i=0; i<7; i++) { + temp_int1 = temp_int% ((int)(pow(10, (float)1))); + temp_int = temp_int/10; + device.putc( (char) temp_int1); + } + print_on_lcd(Amount1-Amount, player, 0, -9); + device.putc('R'); + } + //print_on_lcd(Amount1-Amount, player, 0, -9); + } + + if(temp == 'I') { + temp_suit = device.getc(); + temp_card = device.getc(); + + if(temp_suit == 'S') { + suit[player] = 1; + } else if(temp_suit == 'C') { + suit[player] = 2; + } else if(temp_suit == 'H') { + suit[player] = 3; + } else suit[player] = 4; + if(temp_card=='2') card[player] = 2; + else if(temp_card == '3') card[player] = 3; + else if(temp_card == '4') card[player] = 4; + else if(temp_card == '5') card[player] = 5; + else if(temp_card == '6') card[player] = 6; + else if(temp_card == '7') card[player] = 7; + else if(temp_card == '8') card[player] = 8; + else if(temp_card == '9') card[player] = 9; + else if(temp_card == '0') card[player] = 10; + else if(temp_card == 'J') card[player] = 11; + else if (temp_card == 'Q') card[player] = 12; + else if (temp_card == 'K') card[player] = 13; + else if (temp_card == 'A') card[player] = 1; + print_on_lcd(n-6,suit[player],card[player],player); + pc.printf("\nPlayer:%d suit:%d face:%d n-6:%d", player, suit[player], card[player],n-6); + n++; + } + + if(temp == 'Z') { + if(player == 0) + print_on_lcd(0,0,0,2); + if(player == 1) + print_on_lcd(0,0,0,3); + } + } + } +} \ No newline at end of file