enum{
Xpad = 10,
Ypad = 20,
Sht = 508,
Swid = 594
};
enum{
Dpad = 6,
Upad = 18,
Cwid = 72,
Cht = 99
};
enum{
Tdn = -1,
Bup = 1
};
enum{
Ace = 0,
King = 12
};
typedef struct Card Card;
struct Card{
int suit;
int rank;
int up;
Point p;
Image *img[2];
};
typedef struct Cardstack Cardstack;
struct Cardstack
{
int sz;
int n;
int upad;
int dpad;
Point p;
Card **c;
};
extern Cardstack *stock;
extern Cardstack *waste;
extern Cardstack *foundation[4];
extern Cardstack *tableau[7];
extern Image *bb, *bb2;
extern Image *cardback;
extern Mouse mouse;
/*card.c*/
Card* cardinit(int, int, int);
int turncard(Point);
int canturn(Cardstack*);
int candrop(Card*, Cardstack*);
int validmove(Card*, Cardstack*);
void putinfoundation(Point);
/*draw.c*/
void drawtable(Image*);
void translate(Card*[], Point);
Image* openimage(char*);
/*stack.c*/
Cardstack* stackinit(int, int, int, int);
void push(Cardstack*, Card*);
Card* pop(Cardstack*);
Card* top(Cardstack*);
/*math.c*/
void tablemath(void);
int stackinarray(Cardstack*, Cardstack*[], int);
Rectangle cardrect(Card*);
Rectangle stackrect(Cardstack*);
Cardstack* chosenstack(Point);
Cardstack* droptarget(Card*);
int movpilesize(Point, Cardstack*);
|