//construction/destruction
public:
virtual ~IGame(){};
//public interface
public:
virtual void OnKey(long) = 0 ; //recieve key event
virtual void Start() = 0 ; //recieve start event
virtual bool IsOver()=0 ; //if the player die?
virtual void OnEraseLines(IGame* fromGame,long lines)=0; /* called by the game controller
when other player erase lines .*/
virtual void Draw()=0; // draw self
};
//draw inteface
class IDrawDrv
{
//construction/destruction
public:
virtual ~IDrawDrv(){};
//public interface
public:
virtual ShowBlocks(long x,long y,long xs,long ys)=0; //show blocks
virtual HideBlocks(long x,long y,long xs,long ys)=0; //hide blocks
};
//implement of IDrawDrv of Windows
class CDrawDrvWindowsImp :public IDrawDrv
{
//construction/destruction
public:
CDrawDrvWindowsImp(POINT,COLORREF,COLORREF,long,CDC*);
virtual ~CDrawDrvWindowsImp(){};
private:
CDrawDrvWindowsImp(const CDrawDrvWindowsImp&);
void operator=(const CDrawDrvWindowsImp&);
//public interface
public:
virtual ShowBlocks(long x,long y,long xs,long ys);
virtual HideBlocks(long x,long y,long xs,long ys);