刘声传毕业设计初稿 联系客服

发布时间 : 星期日 文章刘声传毕业设计初稿更新完毕开始阅读e489b2060740be1e650e9a88

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, //这个位置空,它旁边有四