五子棋游戏

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

五子棋游戏

一、需求分析

本程序是五子棋对战系统,当用鼠标点击棋盘时依次在点击的位置放置黑白棋子。具有以下功能:系统自动判断胜负。可供用户选择棋子的颜色。棋谱保存功能。一局棋未下完时可以保存当前状态以待下次续下,或一局棋结束后保留棋谱以复盘。

二、总体设计

类名一:CGameView

用途:在这个类中实现自动判断胜负功能,棋谱保存功能。实现选择棋子颜色菜单的处理函数。

主要成员变量:int m_icury;

int m_icurx;

CBitmap m_bmwhite;

CBitmap m_bmblack;

CBitmap m_bmblank;

bool colorwhite;

int wzq[19][19];

HCURSOR hcursorblack;

HCURSOR hcursorwhite;

主要成员函数:

(1) void CGameView::OnDraw(CDC* pDC)

{

CGameDoc* pDoc = GetDocument();

ASSERT_V ALID(pDoc);

// TODO: add draw code for native data here

CBrush mybrush1;

mybrush1.CreateSolidBrush(RGB(250,250,250));

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("Can't create DC");

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);

}

}

函数功能:设置棋盘背景颜色,画棋盘

(2) void CGameView::OnLButtonUp(UINT nFlags, CPoint point)

{

// TODO: Add your message handler code here and/or call default

CDC *pDC=GetDC();

CDC Dc;

if(Dc.CreateCompatibleDC(pDC)==FALSE)

AfxMessageBox("Can't create DC");

if(point.x>30 && point.x<410 && point.y>30 && point.y<410)

{

int px=(point.x-30)/20;

int py=(point.y-30)/20;

m_icurx=px;

m_icury=py;

if(colorwhite&&wzq[px][py]==0)

{

Dc.SelectObject(m_bmwhite);

pDC->BitBlt(px*20+32,py*20+32,160,160,&Dc,0,0,SRCCOPY);

wzq[px][py]=1;

over(point);

colorwhite=false;

}

else if(wzq[px][py]==0)

{

Dc.SelectObject(m_bmblack);

pDC->BitBlt(px*20+32,py*20+32,160,160,&Dc,0,0,SRCCOPY);

wzq[px][py]=-1;

over(point);

colorwhite=true;

}

}

CView::OnLButtonUp(nFlags, point);

}

函数功能:实现下棋功能,即依次在点击的位置放置黑白棋子的功能(3)void CGameView::over( CPoint point)

{

int x=(point.x-30)/20;

int y=(point.y-30)/20;

int xx,yy;

if(x<4)

xx=0;

else

xx=x-4;

if(y<4)

yy=0;

else

yy=y-4;

相关文档
最新文档