/* freecell.c - some routines for doing MS style freecell games */ /* Jon Mayo - PUBLIC DOMAIN - October 24, 2006 */ /* information from: http://www.solitairelaboratory.com/mshuffle.txt */ /* example games: * :: game #11982 * -- -- -- -- -- -- -- -- * AH AS 4H AC 2D 6S TS JS * 3D 3H QS QC 8S 7H AD KS * KD 6H 5S 4D 9H JH 9S 3C * JC 5D 5C 8C 9D TD KH 7C * 6C 2C TH QH 6D TC 4S 7S * JD 7D 8H 9C 2H QD 4C 5H * KC 8D 2S 3S -- -- -- -- * * :: game #5 * -- -- -- -- -- -- -- -- * AH 8S 2D QS 4C 9H 2S 3D * 5C AS 9C KH 4D 2C 3C 4S * 3S 5D KC 3H KD 5H 6S 8D * TD 7S JD 7H 8H JH JC 7D * 5S QH 8C 9D KS QD 4H AC * 2H TC TH 6D 6H 6C QC JS * 9S AD 7C TS -- -- -- -- */ #include #include #include #define EMPTY 127 /* special value we use for empty cells */ #define ROWS 21 #define COLS 8 void get_card(unsigned n, char *suit, char *value) { if(n==EMPTY) { *value='-'; *suit='-'; } else { *value="A23456789TJQK"[n/4]; *suit="CDHS"[n%4]; } } unsigned max_row(unsigned char board[ROWS][COLS]) { int y, x; for(y=ROWS;--y;) { for(x=0;x1) { g=strtoul(argv[1], NULL, 0); } do_game(g); }