/*****************************************************************************/ /* */ /* */ /* X patience version 2 -- module r_Gypsy.c */ /* */ /* Characteristics of the ``Gypsy'' rules */ /* written by Heiko Eissfeldt and Michael Bischoff */ /* see COPYRIGHT.xpat2 for Copyright details */ /* */ /* */ /*****************************************************************************/ #include "xpatgame.h" static int Gypsy_score(void) { Pileindex i; Cardindex j; int score; score = 5 * game.ind[rules.numstacks]; /* 2 points for each card on stack */ /* offset -4 to have 100 points total */ for (i = 0; i < rules.numstacks; ++i) if (CARDS_ON_PILE(i) == 13) score += 60; for (i = 0; i < rules.numslots; ++i) for (j = game.ind[XPATSLOT(i)]; j < INDEX_OF_LAST_CARD(XPATSLOT(i)); ++j) if (game.visible[j] && in_strong_sequence(game.cards[j+1], game.cards[j])) score += 2; return score >= 0 ? score : 0; } struct rules Gypsy_rules = { /* Heiko's & Michael's rules */ "Gypsy", /* shortname */ "Gypsy - Heiko's and Michael's patience",/* longname */ NULL, /* abbrev */ 0, /* layout_hints */ 0, /* variant */ CUSTOM_STD, /* customizable */ 0, /* customized */ 104, /* numcards */ 8, /* numstacks */ 8, /* numslots */ 0, /* numtmps */ 2, /* numdecks */ 13, /* cards_per_color */ 0, /* numjokers */ {0, 0, 0, 0},/* param[1], param[2], param[3] */ 2, /* facedown */ 1, /* faceup */ 0, /* newgame_bits */ NULL, /* new_game */ NULL, /* game_won */ NULL, /* new_cards */ ES_ALL|US_RA|MG_RA|DC_ALWAYS|ST_ONE|STACK_SOURCE, /* move_bits */ NULL, /* deal_cards */ NULL, /* undeal_cards */ NULL, /* stackable */ NULL, /* movevalid */ NULL, /* valid */ NULL, /* relaxed_valid */ std_good_hint,/* good_hint */ NULL, /* automove */ Gypsy_score,/* score */ 1000, /* maxscore */ {0, 0, 0, 0}, /* paramstring blocks */ 0, /* used */ NULL, /* initfunc */ NULL, /* local keyboard bindings */ };