这是突然看到才想起来发的,发到我常用的地址中:
http://groups.google.com/group/jiutianfile
那时候带着笔记本,台式机上的源码都发不了,直到现在才想起来:)
很多朋友发邮件或者在博客中问过我为什么没有继续对多鼠标这个东西研究下去,呵呵,在此一并答复了,本人实在是工作忙啊。。。。。。。再次说明一下什么叫 忙,每天工作12个小时以上,每周工作6天,再加上你看看我最近学的东西,lua,python,bash....实在没有时间了,呵呵
那个地方现在有两个五子棋的源码了,一个是单鼠标用左右键来玩的,一个是双鼠标都用左键来玩的。你可以对比一下,看看实现多鼠标需要添加些什么,呵呵,其实也不多,这个示例程序虽然简单,但是却实现了想要的基本功能。
图我也贴一个,不偷懒了。。。。呵呵,毕竟这也算是我以前研究比较久的成果。
展示一下:
class CMyApp : public CWinApp
{
public:
virtual BOOL
InitInstance();
};
class CMainWindow : public CMultiMouseWindow
{
protected:
enum gridState
{ Unputed, PutedWhite,
PutedBlack}; //enum格子的个状态
enum Turn
{blackTurn,whiteTurn}; //enum轮到谁下的状态
enum winnerLast
{NoOne,WhiteWin,BlackWin}; //enum有没有胜利者的状态
Turn m_nextTurn; //下轮执棋者
const static
int nClientSize
= 700; //客户区大小,可改变
const static
int nGridNum
= 20; //格数,可改变
int m_countStep; //目前所下步数
void DrawBoard(CDC &dc); //画棋盘
CRect m_rcGrid[nGridNum][nGridNum]; //棋盘的每个格子的矩形范围
gridState m_stateGrid[nGridNum][nGridNum]; //棋盘每个格子的状态
void DrawWhite(CDC &dc,int i,int j); //下White
void DrawBlack(CDC &dc,int i,int j); //下Black
void ResetGame(); //重新开始游戏
void CheckForGameOver(Turn thisTurn,int i,int j); //查找需不需要结束游戏
BOOL IsWinner(Turn thisTurn,int i,int j); //是否有胜利者
BOOL IsDraw(); //是否平局
public:
CMainWindow();
protected:
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT nFlags,CPoint point);
afx_msg void OnNcLButtonDblClk(UINT nHitTest,CPoint point);
DECLARE_MESSAGE_MAP()
};