cs.style=WS_SYSMENU|WS_OVERLAPPED|WS_MINIMIZEBOX;//; //设置窗口大小:400*340 cs.cx=450; cs.cy=500; return TRUE; } 画棋盘:
在OnDraw(CDC* pDC)函数中画棋盘,由于在游戏过程中有可能重画棋盘,而那时棋盘上面有棋子,所以,我们在这个函数里面必须有画棋子的语句。在此用数组的做为1表示白棋,-1表示黑棋。
void CMy3_1View::OnDraw(CDC* pDC) {
CMy3_1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); //画背景 CBrush mybrush1;
mybrush1.CreateSolidBrush(RGB(192,192,192)); CRect myrect1(0,0,1200,800); pDC->FillRect(myrect1,&mybrush1); //画棋盘框线 CPen mypen; CPen*myoldPen;
mypen.CreatePen(PS_SOLID,1,RGB(0,0,0)); myoldPen=pDC->SelectObject(&mypen); for(int i=0;i<19;i++) {
pDC->MoveTo(40,40+i*20); pDC->LineTo(400,40+i*20); pDC->MoveTo(40+i*20,40); pDC->LineTo(40+i*20,400); }
//重画时显示存在的棋子 CDC Dc;
if(Dc.CreateCompatibleDC(pDC)==FALSE) AfxMessageBox(\
for(int n=0;n<19;n++) for(int m=0;m<19;m++) if(wzq[n][m]==1) { //显示白棋
Dc.SelectObject(m_bmwhite); pDC->BitBlt(n*20+32,m*20+32,160,160,&Dc,0,0,SRCCOPY); }
else if(wzq[n][m]==-1) { //显示黑棋
Dc.SelectObject(m_bmblack); pDC->BitBlt(n*20+32,m*20+32,160,160,&Dc,0,0,SRCCOPY); } }
棋盘的效果如图
5.核心算法
在完成界面设计后,就开始展开游戏核心的设计,该部分主要包括计算机搜索最佳落棋位置,游戏胜利判断的实现。 5.1 搜索最佳落棋位置
计算机是怎样下棋?这就是定位的问题了。即搜索棋盘,找出一个最佳点,放下黑棋。我们实现的方法是:全盘搜索,并把搜索到的位置,保存在变量。由于有多种情况,我们定义变量如下:
CPoint bpointcan4, //这个位置空,它旁边有四
相关推荐: