C++_五子棋人机对战游戏设计.doc
《C++_五子棋人机对战游戏设计.doc》由会员分享,可在线阅读,更多相关《C++_五子棋人机对战游戏设计.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 Visual C+ 期末考评 学院: 计算机工程学院 班 级: 11计算机科学2班 学生姓名: 吴晖 学 号: 2011404010221 设计地点(单位) A5-101 设计题目: 五子棋 完成日期: 2014年 6月 3日 指导教师评语: _成绩(五级记分制):_ 教师签名:_ 目 录1 引言-3 1.1游戏介绍-3 1.2目的-3 1.3主要问题 -32 需求分析-43 功能模块设计-4 3.1变量和函数-4 3.2框架的搭建-54 算法分析与设计-6 4.1.游戏界面的设计-6 4.2核心算法-75总结-19五子棋人机对战游戏摘要:本文用visual c+来设计与实现简单的五子棋人机
2、对战游戏的基本功能,玩家可以在游戏区域中适当的位置来放棋子,通过程序设计让电脑选择最佳的落棋点,来实现人机对战。文中对该游戏的算法进行了详细的介绍,其中核心内容包括界面的设计、最佳落棋位置的判断以及游戏胜利判断功能的实现。程序实现起来较简单,同时也比较实用。关键词: 五子棋 ,vc,人机对战游戏 1.引言1.1 游戏介绍五子棋是一种很受人们喜爱的智力游戏,它的规则简单,但玩法变化多端,富有趣味性,特别锻炼人的智力,适合人们消遣。1.2 目的网络小游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,通过游戏还可以认识更多的
3、朋友,也可以到达跨省、跨市,甚至跨国间人们互相娱乐的目的。 1.3 主要问题 开始制作游戏时,主要要解决的问题有以下几个方面:1. 如何设置整个游戏的界面;2 判断是否可以放下棋子;3. 如何让电脑选择最佳位置;4. 判断是黑棋胜还是白棋胜。2 需求分析关于五子棋游戏的功能描述如下:运行游戏并进行初始化工作,将整个游戏区域中纵线和横线相交的点坐标化,并且这些点是将来下棋的位置。玩家可以在任意没有放棋子的点放下棋子,直到一方有五个棋子连成一条线为胜方。 游戏的整体运行效果如图1.1。图1.13. 功能模块的设计3.1 变量和函数 在view类中添加变量函数如下:保存vscomputer时白棋位置
4、 CPoint vspoint;CPoint bpointcan4, /这个位置空,它旁边有四个黑棋wpointcan4, /这个位置空,它旁边有四个白棋bpointcan3, /这个位置空,它的旁边有三个黑棋wpointcan3, /这个位置空,它的旁边有三个白棋bpointcan2, /这个位置空,它的旁边有两个黑棋wpointcan2, /这个位置空,它的旁边有两个白棋bpointcan1; /不是以上情况,这个位置空 在得到最大值和方向上寻找落棋点,其中i、j表示搜索起点,n表示方向void searchcandown1(int i,int j,int n);void searchca
5、ndown2(int i,int j,int n);void searchcandown3(int i,int j,int n);void searchcandown4(int i,int j,int n);计算最大值及方向CPoint maxnum(int a,int b,int c,int d);最好落棋点void bestputdown(int i,int j);计算机下棋void computerdown();在位置point放下棋子void putdown(CPoint point);人对机菜单afx_msg void OnCpmputer();3.2.框架的搭建 新建工程,选择单文
6、档,在Step 4 of 6中先中Windows Sockets复选框4 算法分析与设计4.1游戏界面的设计由于游戏的棋盘大小是一定的,不能改变大小的,是应该符合要求的。用如下函数设置窗口大小:BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs) if( !CFrameWnd:PreCreateWindow(cs) ) return FALSE; / TODO: Modify the Window class or styles here by modifying / the CREATESTRUCT cs cs.dwExStyle=cs.dwEx
7、Style|WS_EX_TOPMOST; / 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_VA
8、LID(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;iMoveTo(40,40+i*20); pDC-LineTo(400,40+i*
9、20); pDC-MoveTo(40+i*20,40); pDC-LineTo(40+i*20,400); /重画时显示存在的棋子 CDC Dc; if(Dc.CreateCompatibleDC(pDC)=FALSE) AfxMessageBox(Cant create DC); for(int n=0;n19;n+) for(int m=0;mBitBlt(n*20+32,m*20+32,160,160,&Dc,0,0,SRCCOPY); else if(wzqnm=-1) /显示黑棋 Dc.SelectObject(m_bmblack); pDC-BitBlt(n*20+32,m*20+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 人机 游戏 设计
限制150内