作者:京东瀚览家居官方旗舰店
一、头文件
//TicTac.h
#define EX 1
#define OH 2
class com
...{
public:
com(int i=0, int j=0):m(i),n(j)
...{
};
com& operator=(const com & rv)
...{
m=rv.m;
n=rv.n;
return *this;
};
int m;
int n;
}; //为了保存的棋子的坐标
class CMyApp : public CWinApp
...{
public:
virtual BOOL InitInstance ();
};
class CMainWindow : public CWnd
...{
protected:
CRect m_rcSquares[20][20]; // Grid coordinates
int m_nGameGrid[20][20]; // Grid contents
int m_nNextChar; // Next character (EX or OH)
com GetRectID (CPoint & point);
void DrawBoard (CDC* pDC);
void DrawX (CDC* pDC, com & nPos);
void DrawO (CDC* pDC, const com & nPos);
void ResetGame ();
void CheckForGameOver ();
int IsWinner ();
BOOL IsDraw ();
public:
CMainWindow ();
protected:
virtual void PostNcDestroy ();
afx_msg void OnPaint ();
afx_msg void OnLButtonDown (UINT nFlags, CPoint point);
afx_msg void OnLButtonDblClk (UINT nFlags, CPoint point);
afx_msg void OnRButtonDown (UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP ()
};
二、CPP文件
#include <afxwin.h>
#include "TicTac.h"
CMyApp myApp;
/**//
// CMyApp member functions
BOOL CMyApp::InitInstance ()
...{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow (m_nCmdShow);
m_pMainWnd->UpdateWindow ();
return TRUE;
}
/**//
// CMainWindow message map and member functions
BEGIN_MESSAGE_MAP (CMainWindow, CWnd)
ON_WM_PAINT ()
ON_WM_LBUTTONDOWN ()
ON_WM_LBUTTONDBLCLK ()
ON_WM_RBUTTONDOWN ()
END_MESSAGE_MAP ()
CMainWindow::CMainWindow ()
...{
//初始化棋子的位置
for(int i=0;i<20;i++)
...{
for(int j=0;j<20;j++)
...{
m_rcSquares[i][j]=CRect( j*50 , i*50 , (j+1)*50 , (i+1)*50 ) ;
}
}
m_nNextChar = EX;
for(int k=0;k<20;k