// Ansi Codes

#define CLEAR     "[40m[2J"
#define HOME      "[0;0H"
#define BLACK     "[30m"
#define RED       "[31m"
#define GREEN     "[32m"
#define YELLOW    "[33m"
#define BLUE      "[34m"
#define PURPLE    "[35m"
#define CYAN      "[36m"
#define WHITE     "[37m"
#define HI        "[1m"
#define RESET     "[0;37m"
#define BBLACK    "[40m"
#define BRED      "[41m"
#define BGREEN    "[42m"
#define BYELLOW   "[43m"
#define BBLUE     "[44m"
#define BPURPLE   "[45m"
#define BCYAN     "[46m"
#define BWHITE    "[47m"

// Grid Graphics

#define BOX01ROW1  "[1;1H%s%s%sÛ²±° %s%s°±%s"      // hi, c0, z4, c4, z4, z0
#define BOX01ROW2  "[2;1H%s%s%s²[2;7H%s%s²%s"     // hi, c0, z4, c4, z4, z0
#define BOX01ROW3  "[3;1H%s%s%s±[3;7H%s%sÛ%s"     // hi, c0, z4, c4, z4, z0
#define BOX01ROW4  "[4;1H%s%s%s°[4;7H%s%s²%s"     // hi, c0, z4, c5, z4, z0
#define BOX01ROW5  "[5;1H%s%s%s °±²Û²±%s"          // hi, c4, z4, z0

#define BOX02ROW1  "[1;8H%s%s%s²Û²±° %s%s°%s"      // hi, c4, z4, c0, z4, z0
#define BOX02ROW2  "[2;8H%s%s%s±[2;14H %s"        // hi, c4, z4. z0
#define BOX02ROW3  "[3;8H%s%s%s°[3;14H%s%s°%s"    // hi, c4, z4, c0, z4, z0
#define BOX02ROW4  "[4;8H%s%s%s±[4;14H%s%s±%s"    // hi, c4, z4, c0, z4, z0
#define BOX02ROW5  "[5;8H%s%s%s° %s%s°±²Û²%s"      // hi, c4, z4, c0, z4, z0

#define BOX03ROW1  "[1;15H%s%s%s±²° %s%s°²±%s"     // hi, c0, z4, c4, z4, z0
#define BOX03ROW2  "[2;15H%s%s%s²[2;21H%s%s²%s"   // hi, c0, z4, c4, z4, z0
#define BOX03ROW3  "[3;15H%s%sÛ[3;21H%sÛ"         // hi, c8, cc
#define BOX03ROW4  "[4;15H%s%s%s²[4;21H%s%s²%s"   // hi, c0, z4, c4, z4, z0
#define BOX03ROW5  "[5;15H%s%s%s±° %s%s° °±%s"     // hi, c0, z4, c4, z4, z0

#define BOX04ROW1  "[1;22H%s%s%s° %s%s°±²Û²%s"     // hi, c4, z4, c0, z4, z0
#define BOX04ROW2  "[2;22H%s%s%s [2;28H±%s"       // hi, c0, z4, z0
#define BOX04ROW3  "[3;22H%s%s%s°[3;28H%s%s°%s"   // hi, c4, z4, c0, z4, z0
#define BOX04ROW4  "[4;22H%s%s%s±[4;28H%s%s±%s"   // hi, c4, z4, c0, z4, z0
#define BOX04ROW5  "[5;22H%s%s%s²Û²±° %s%s°%s"     // hi, c4, z4, c0, z4, z0

#define BOX05ROW1  "[1;29H%s%s%s±° %s%s°±²Û%s"     // hi, c0, z4, cc, z4, z0
#define BOX05ROW2  "[2;29H%s%s%s²[2;35H%s%s²%s"   // hi, c0, z4, c4, z4, z0
#define BOX05ROW3  "[3;29H%s%s%sÛ[3;35H%s%s±%s"   // hi, c0, z4, c4, z4, z0
#define BOX05ROW4  "[4;29H%s%s%s²[4;35H%s%s°%s"   // hi, c0, z4, c4, z4, z0
#define BOX05ROW5  "[5;29H%s%s%s±²Û²±° %s"         // hi, c0, z4, z0

#define BOX06ROW1  "[5;1H%s%s%s °±²Û²±%s"          // hi, c4, z4, z0
#define BOX06ROW2  "[6;1H%s%s%s°[6;7H°%s"         // hi, c4, z4, z0
#define BOX06ROW3  "[7;1H%s%s%s±[7;7H %s"         // hi, c4, z4, z0
#define BOX06ROW4  "[8;1H%s%s%s²[8;7H%s%s°%s"     // hi, c4, z4, c0, z4, z0
#define BOX06ROW5  "[9;1H%s%s%sÛ²±° %s%s°±%s"      // hi, c4, z4, c0, z4, z0

#define BOX07ROW1  "[5;8H%s%s%s° %s%s°±²Û²%s"      // hi, c4, z4, c0, z4, z0
#define BOX07ROW2  "[6;8H%s%s%s [6;14H±%s"        // hi, c0, z4, z0
#define BOX07ROW3  "[7;8H%s%s%s°[7;14H°%s"        // hi, c0, z4, z0
#define BOX07ROW4  "[8;8H%s%s%s±[8;14H %s"        // hi, c0, z4, z0
#define BOX07ROW5  "[9;8H%s%s%s²±²Û²±°%s"          // hi, c0, z4, z0

#define BOX08ROW1  "[5;15H%s%s%s±° %s%s° °±%s"     // hi, c0, z4, c4, z4, z0
#define BOX08ROW2  "[6;15H%s%s%s²[6;21H%s%s²%s"   // hi, c0, z4, c4, z4, z0
#define BOX08ROW3  "[7;15H%s%s%s±[7;21H%s%s±%s"   // hi, c0, z4, c4, z4, z0
#define BOX08ROW4  "[8;15H%s%s%s°[8;21H%s%s°%s"   // hi, c0, z4, c4, z4, z0
#define BOX08ROW5  "[9;15H%s%s%s °±²Û²±° %s"       // hi, c4, z4, z0

#define BOX09ROW1  "[5;22H%s%s%s²Û²±° %s%s°%s"     // hi, c4, z4, c0, z4, z0
#define BOX09ROW2  "[6;22H%s%s%s±[6;28H %s"       // hi, c4, z4, z0
#define BOX09ROW3  "[7;22H%s%s%s°[7;28H°%s"       // hi, c4, z4, z0
#define BOX09ROW4  "[8;22H%s%s%s [8;28H±%s"       // hi, c4, z4, z0
#define BOX09ROW5  "[9;22H%s%s%s° %s%s° %s%s°Û²%s" // hi,c4,z4,c0,z4,c4,z4,z0

#define BOX10ROW1  "[5;29H%s%s%s±²Û²±° %s"         // hi, c0, z4, z0
#define BOX10ROW2  "[6;29H%s%s%s°[6;35H°%s"       // hi, c0, z4, z0
#define BOX10ROW3  "[7;29H%s%s%s [7;35H±%s"       // hi, c0, z4, z0
#define BOX10ROW4  "[8;29H%s%s%s°[8;35H²%s"       // h1, c0, z4, z0
#define BOX10ROW5  "[9;29H%s%s%s±° %s%s°±²Û%s"     // hi, c4, z4, c0, z4, z0

#define BOX11ROW1  "[9;1H%s%s%sÛ²±° %s%s°±%s"      // hi, c4, z4, c0, z4, z0
#define BOX11ROW2  "[10;1H%s%s%s°[10;7H%s%s°%s"   // hi, c4, z4, c0, c4, z0
#define BOX11ROW3  "[11;1H%s [11;7H %s"           // z4, z0
#define BOX11ROW4  "[12;1H%s%s%s°[12;7H%s%s°%s"   // hi, c0, z4, c4, z4, z0
#define BOX11ROW5  "[13;1H%s%s%sÛ²±° %s%s°±%s"     // hi, c0, z4, c4, z4, z0

#define BOX12ROW1  "[9;8H%s%s%s²±²Û²±°%s"          // hi, c0, z4, z0
#define BOX12ROW2  "[10;8H%s%s%s±[10;14H±%s"      // hi, c0, z4, z0
#define BOX12ROW3  "[11;8H%s%s%s°[11;14H²%s"      // hi, c0, z4, z0
#define BOX12ROW4  "[12;8H%s%s%s±[12;14H%s%s±%s"  // hi, c4, z4, c0, z4, z0
#define BOX12ROW5  "[13;8H%s%s%s²Û° %s%s° °%s"     // hi, c4, z4, c0, z4, z0

#define BOX13ROW1  "[9;15H%s%s%s °±²Û²±° %s"       // hi, c4, z4, z0
#define BOX13ROW2  "[10;15H%s%s%s°[10;21H%s%s°%s" // hi, c4, z4, c0, z4, z0
#define BOX13ROW3  "[11;15H%s%s%s±[11;21H%s%s±%s" // hi, c4, z4, c0, z4, z0
#define BOX13ROW4  "[12;15H%s%s%s°[12;21H%s%s°%s" // hi, c4, z4, c0, z4, z0
#define BOX13ROW5  "[13;15H%s%s%s °±²±° %s"        // hi, c0, z4, z0

#define BOX14ROW1  "[9;22H%s%s%s° %s%s° %s%s°Û²%s" // hi,c4,z4,c0,z4,c4,z4,z0
#define BOX14ROW2  "[10;22H%s%s%s±[10;28H±%s"     // hi, c4, z4, z0
#define BOX14ROW3  "[11;22H%s%s%s²[11;28H°%s"     // hi, c4, z4, z0
#define BOX14ROW4  "[12;22H%s%s%s±[12;28H%s%s±%s" // hi, c4, z4, c0, z4, z0
#define BOX14ROW5  "[13;22H%s%s%s°±° %s%s°Û²%s"    // hi, c4, z4, c0, z4, z0

#define BOX15ROW1  "[9;29H%s%s%s±° %s%s°±²Û%s"     // hi, c4, z4, c0, z4, z0
#define BOX15ROW2  "[10;29H%s%s%s°[10;35H%s%s°%s" // hi, c4, z4, c0, z4, z0
#define BOX15ROW3  "[11;29H%s [11;35H %s"         // z4, z0
#define BOX15ROW4  "[12;29H%s%s%s°[12;35H%s%s°%s" // hi, c0, z4, c4, z4, z0
#define BOX15ROW5  "[13;29H%s%s%s±° %s%s°±²Û%s"    // hi, c0, z4, c4, z4, z0

#define BOX16ROW1  "[13;1H%s%s%sÛ²±° %s%s°±%s"     // hi, c0, z4, c4, z4, z0
#define BOX16ROW2  "[14;1H%s%s%s²[14;7H°%s"       // hi, c0, z4, z0
#define BOX16ROW3  "[15;1H%s%s%s±[15;7H %s"       // hi, c0. z4, z0
#define BOX16ROW4  "[16;1H%s%s%s°[16;7H°%s"       // hi, c0, z4, z0
#define BOX16ROW5  "[17;1H%s%s%s °±²Û²±%s"         // hi, c0, z4, z0

#define BOX17ROW1  "[13;8H%s%s%s²Û° %s%s° °%s"     // hi, c4, z4, c0, z4, z0
#define BOX17ROW2  "[14;8H%s%s%s±[14;14H %s"      // hi, c4, z4, z0
#define BOX17ROW3  "[15;8H%s%s%s°[15;14H°%s"      // hi, c4, z4, z0
#define BOX17ROW4  "[16;8H%s%s%s [16;14H±%s"      // hi, c4, z4, z0
#define BOX17ROW5  "[17;8H%s%s%s° %s%s°±²Û²%s"     // hi, c0, z4, c4, z4, z0

#define BOX18ROW1  "[13;15H%s%s%s °±²±° %s"        // hi, c0, z4, z0
#define BOX18ROW2  "[14;15H%s%s%s°[14;21H%s%s°%s" // hi, c4, z4, c0, z4, z0
#define BOX18ROW3  "[15;15H%s%s%s±[15;21H%s%s±%s" // hi, c4, z4, c0, z4, z0
#define BOX18ROW4  "[16;15H%s%s%s²[16;21H%s%s²%s" // hi, c4, z4, c0, z4, z0
#define BOX18ROW5  "[17;15H%s%s%s±° %s%s° °±%s"    // hi, c4, z4, c0, z4, z0

#define BOX19ROW1  "[13;22H%s%s%s°±° %s%s°Û²%s"    // hi, c4, z4, c0, z4, z0
#define BOX19ROW2  "[14;22H%s%s%s [14;28H±%s"     // hi, c0, z4, z0
#define BOX19ROW3  "[15;22H%s%s%s°[15;28H°%s"     // hi, c0, z4, z0
#define BOX19ROW4  "[16;22H%s%s%s±[16;28H %s"     // hi, c0, z4, z0
#define BOX19ROW5  "[17;22H%s%s%s²Û²±° %s%s°%s"    // hi, c0, z4, c4, z4, z0

#define BOX20ROW1  "[13;29H%s%s%s±° %s%s°±²Û%s"    // hi, c0, z4, c4, z4, z0
#define BOX20ROW2  "[14;29H%s%s%s°[14;35H%s%s²%s" // hi, c0, z4, c4, z4, z0
#define BOX20ROW3  "[15;29H%s%s%s [15;35H±%s"     // hi, c4, z4, z0
#define BOX20ROW4  "[16;29H%s%s%s°[16;35H°%s"     // hi, c4, z4, z0
#define BOX20ROW5  "[17;29H%s%s%s±²Û²±° %s"        // hi, c4, z4, z0

#define BOX21ROW1  "[17;1H%s%s%s °±²Û²±%s"         // hi, c0, z4, z0
#define BOX21ROW2  "[18;1H%s%s%s°[18;7H%s%s²%s"   // hi, c4, z4, c0, z4, z0
#define BOX21ROW3  "[19;1H%s%s%s [19;7HÛ%s"       // hi, c0, z4, z0
#define BOX21ROW4  "[20;1H%s%s%s²[20;7H%s%s²%s"   // hi, c4, z4, c0, z4, z0
#define BOX21ROW5  "[21;1H%s%s%sÛ²±° %s%s°±%s"     // hi, c4, z4, c0, z4, z0

#define BOX22ROW1  "[17;8H%s%s%s° %s%s°±²Û²%s"     // hi, c0, z4, c4, z4, z0
#define BOX22ROW2  "[18;8H%s%s%s±[18;14H%s%s±%s"  // hi, c0, z4, c4, z4, z0
#define BOX22ROW3  "[19;8H%s%s%s°[19;14H%s%s°%s"  // hi, c0, z4, c4, z4, z0
#define BOX22ROW4  "[20;8H%s%s%s±[20;14H %s"      // hi, c0, z4, z0
#define BOX22ROW5  "[21;8H%s%s%s²Û²±° %s%s° %s"    // hi, c0, z4, c4, z4, z0

#define BOX23ROW1  "[17;15H%s%s%s±° %s%s° °±%s"    // hi, c4, z4, c0, z4, z0
#define BOX23ROW2  "[18;15H%s%s%s²[18;21H%s%s²%s" // hi, c4, z4, c0, z4, z0
#define BOX23ROW3  "[19;15H%s%sÛ[19;21H%sÛ"       // hi, c4, c0
#define BOX23ROW4  "[20;15H%s%s%s²[20;21H%s%s²%s" // hi, c4, z4, c0, z4, z0
#define BOX23ROW5  "[21;15H%s%s%s±²° %s%s°²±%s"    // hi, c4, z4, c0, z4, z0

#define BOX24ROW1  "[17;22H%s%s%s²Û²±° %s%s°%s"    // hi, c0, z4, c4, z4, z0
#define BOX24ROW2  "[18;22H%s%s%s±[18;28H%s%s±%s" // hi, c0, z4, c4, z4, z0
#define BOX24ROW3  "[19;22H%s%s%s°[19;28H%s%s°%s" // hi, c0, z4, c4, z4, z0
#define BOX24ROW4  "[20;22H%s%s%s [20;28H±%s"     // hi, c4, z4, z0
#define BOX24ROW5  "[21;22H%s%s%s° %s%s°±²Û²%s"    // hi, c0, z4, c4, z4, z0

#define BOX25ROW1  "[17;29H%s%s%s±²Û²±° %s"        // hi, c4, z4, z0
#define BOX25ROW2  "[18;29H%s%s%s²[18;35H%s%s°%s" // hi, c4, z4, c0, z4, z0
#define BOX25ROW3  "[19;29H%s%s%sÛ[19;35H%s%s±%s" // hi, c4, z4, c0, z4, z0
#define BOX25ROW4  "[20;29H%s%s%s²[20;35H%s%s²%s" // hi, c4, z4, c0, z4, z0
#define BOX25ROW5  "[21;29H%s%s%s±° %s%s°±²Û%s"    // hi, c4, z4, c0, z4, z0

// Highligher Graphics

#define SELECTROW1 "[%d;%dH%s%s%s±°±°±°±" //row,col,i1,c1,z5
#define SELECTROW2 "[%d;%dH°[%d;%dH°"    //row+1, col, row+1, col+6
#define SELECTROW3 "[%d;%dH±[%d;%dH±"    //row+2, col, row+2, col+6
#define SELECTROW4 "[%d;%dH°[%d;%dH°"    //row+3, col, row+3, col+6
#define SELECTROW5 "[%d;%dH±°±°±°±%s"     //row+4, col, z0

#define HGRADEROW1 "[%d;1H%s%s%s±°±°±°±°±°±°±°±°±°±°±°±°±°±°±°±°±°±" //row, i1, c1, z5
#define HGRADEROW2 "[%d;1H°[%d;7H%s±²[%d;14H²±[%d;21H±²[%d;28H²±[%d;35H%s°" // row+1, c0, row+1, row+1, row+1, row+1, row+1, c1
#define HGRADEROW3 "[%d;1H±[%d;7H%s²±[%d;14H±²[%d;21H²±[%d;28H±²[%d;35H%s±" // row+2, c0, row+2, row+2, row+2, row+2, row+2, c1
#define HGRADEROW4 "[%d;1H°[%d;7H%s±²[%d;14H²±[%d;21H±²[%d;28H²±[%d;35H%s°" // row+3, c0, row+3, row+3, row+3, row+3, row+3, c1
#define HGRADEROW5 "[%d;1H±°±°±°±°±°±°±°±°±°±°±°±°±°±°±°±°±°±%s"// row+4, z0

#define VGRADEROW1 "[1;%dH%s%s%s±°±°±°±"   // col, int, z5, c1
#define VGRADEROW2 "[2;%dH°[2;%dH°"         // col, col+6
#define VGRADEROW3 "[3;%dH±[3;%dH±"         // col, col+6
#define VGRADEROW4 "[4;%dH°[4;%dH°"         // col, col+6
#define VGRADEROW5 "[5;%dH±%s²±²±²%s±"       // col, c0, c1
#define VGRADEROW6 "[6;%dH°[6;%dH°"         // col, col+6
#define VGRADEROW7 "[7;%dH±[7;%dH±"         // col, col+6
#define VGRADEROW8 "[8;%dH°[8;%dH°"         // col, col+6
#define VGRADEROW9 "[9;%dH±%s±²±²±%s±"       // col, c0, c1
#define VGRADEROWA "[10;%dH°[10;%dH°"         // col, col+6
#define VGRADEROWB "[11;%dH±[11;%dH±"       // col, col+6
#define VGRADEROWC "[12;%dH°[12;%dH°"       // col, col+6
#define VGRADEROWD "[13;%dH±%s²±²±²%s±"      // col, c0, c1
#define VGRADEROWE "[14;%dH°[14;%dH°"       // col, col+6
#define VGRADEROWF "[15;%dH±[15;%dH±"       // col, col+6
#define VGRADEROWG "[16;%dH°[16;%dH°"       // col, col+6
#define VGRADEROWH "[17;%dH±%s±²±²±%s±"      // col, c0, c1
#define VGRADEROWI "[18;%dH°[18;%dH°"       // col, col+6
#define VGRADEROWJ "[19;%dH±[19;%dH±"       // col, col+6
#define VGRADEROWK "[20;%dH°[20;%dH°"       // col, col+6
#define VGRADEROWL "[21;%dH±°±°±°±%s"        // col, z0

// blah :P too much work leave me alone

#define BACK  "[%d;%dH%s%s%s²²²²²"
#define BLANK "[%d;%dH     "

// SUITS

#define HEART   3
#define DIAMOND 4
#define CLUB    5
#define SPADE   6

// Box Structure

struct box_type
       {
          char *box01[5];
          char *box02[5];
          char *box03[5];
          char *box04[5];
          char *box05[5];
          char *box06[5];
          char *box07[5];
          char *box08[5];
          char *box09[5];
          char *box10[5];
          char *box11[5];
          char *box12[5];
          char *box13[5];
          char *box14[5];
          char *box15[5];
          char *box16[5];
          char *box17[5];
          char *box18[5];
          char *box19[5];
          char *box20[5];
          char *box21[5];
          char *box22[5];
          char *box23[5];
          char *box24[5];
          char *box25[5];
       };

typedef struct box_type box;

struct grid_type
       {
          int x;
          int y;
          char card[2];
          int id;
       };
typedef struct grid_type grid_def;

#define SCORE_FILE "Doors:PokerSquares/PokerSquares_DATA"

#define VERSION "1.2"