Poker code for Secondary Mbed

Dependencies:   NokiaLCD mbed

main.cpp

Committer:
wjenkins7
Date:
2013-12-11
Revision:
0:1324145f6904

File content as of revision 0:1324145f6904:

#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);
            }
        }
    }
}