|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
spider.cpp implements a patience card game
|
|
|
|
|
|
|
|
Copyright (C) 2003 Josh Metzler
|
|
|
|
|
|
|
|
* Permission to use, copy, modify, and distribute this software and its
|
|
|
|
* documentation for any purpose and without fee is hereby granted,
|
|
|
|
* provided that the above copyright notice appear in all copies and that
|
|
|
|
* both that copyright notice and this permission notice appear in
|
|
|
|
* supporting documentation.
|
|
|
|
*
|
|
|
|
* This file is provided AS IS with no warranties of any kind. The author
|
|
|
|
* shall have no liability with respect to the infringement of copyrights,
|
|
|
|
* trade secrets or any patents by this file or any part thereof. In no
|
|
|
|
* event will the author be liable for any lost revenue or profits or
|
|
|
|
* other special, indirect and consequential damages.
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
#ifndef _SPIDER_H_
|
|
|
|
#define _SPIDER_H_
|
|
|
|
|
|
|
|
#include "dealer.h"
|
|
|
|
|
|
|
|
class SpiderPile : public Pile
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
SpiderPile(int _index, Dealer* parent = 0) : Pile(_index, parent) {}
|
|
|
|
virtual void moveCards(CardList &c, Pile *to);
|
|
|
|
CardList getRun();
|
|
|
|
};
|
|
|
|
|
|
|
|
class Spider : public Dealer
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
Spider(int suits, TDEMainWindow *parent=0, const char *name=0);
|
|
|
|
void deal();
|
|
|
|
void dealRow();
|
|
|
|
void checkPileDeck(Pile *to);
|
|
|
|
virtual void restart();
|
|
|
|
virtual bool isGameLost() const;
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
void deckClicked(Card *c);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual bool checkRemove(int /*checkIndex*/, const Pile *p, const Card *c) const;
|
|
|
|
virtual bool checkAdd(int /*checkIndex*/, const Pile *c1, const CardList &c2) const;
|
|
|
|
virtual TQString getGameState() const;
|
|
|
|
virtual void setGameState(const TQString &stream);
|
|
|
|
virtual void getHints();
|
|
|
|
virtual MoveHint *chooseHint();
|
|
|
|
virtual Card *demoNewCards();
|
|
|
|
|
|
|
|
private:
|
|
|
|
CardList getRun(Card *c) const;
|
|
|
|
|
|
|
|
SpiderPile *stack[10];
|
|
|
|
Pile *legs[8];
|
|
|
|
int m_leg;
|
|
|
|
Pile *redeals[5];
|
|
|
|
int m_redeal;
|
|
|
|
Deck *deck;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//-------------------------------------------------------------------------//
|