《Windows程序设计》信技01 柯学(1)

更新时间:2024-01-28 10:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

武汉工程大学 计算机科学与工程学院

项目报告

设计名称: 《Windows程序设计》综合项目 设计题目: 五子棋游戏的设计和实现 学生学号: 1205110109 专业班级: 二〇一二级信息技术01班 学生姓名: 柯学 学生成绩: 指导教师(职称): 张俊(副教授) 课题工作时间: 2014年4月

说明:

1、报告中的第一、二、三项由指导教师在综合设计开始前填写并发给每个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。 3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设计完成情况、报告的质量及答辩情况,给出客观、全面的评价。 4、所有学生必须参加综合设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。答辩小组成员应由2人及以上教师组成。

5、报告正文字数一般应不少于5000字,也可由指导教师根据本门综合设计的情况另行规定。

6、此表格式为武汉工程大学计算机科学与工程学院提供的基本格式(适用于学院各类综合设计),各教研室可根据本门综合设计的特点及内容做适当的调整,并上报学院批准。

成绩评定表

类别 平时表现 合计 各项分值 分值 10 10 评分标准 按时参加综合设计,无旷课、迟到、早退、违反实验室纪律等情况。 实际合计得分 得分 备注 完成情况 30 按设计任务书的要求完成了全部20 任务,能完整演示其设计内容,符合要求。 能对其设计内容进行详细、完整的10 介绍,并能就指导教师提出的问题进行正确的回答。 报告文字通顺,内容翔实,论述充分、完整,立论正确,结构严谨合10 理;报告字数符合相关要求,工整规范,整齐划一。 5 课题背景介绍清楚,综述分析充分。 设计方案合理、可行,论证严谨,逻辑性强,具有说服力。 符号统一;图表完备、符合规范要求。 能对整个设计过程进行全面的总结,得出有价值的结论或结果。 参考文献数量在3篇以上,格式符合要求,在正文中正确引用。 报告质量 35 5 5 5 5 答辩情况 25 在规定时间内能就所设计的内容10 进行阐述,言简意明,重点突出,论点正确,条理清晰。 15 在规定时间内能准确、完整、流利地回答教师所提出的问题。 总评成绩: 分 补充说明: 指导教师: (签字) 日 期: 年 月 日 答辩记录表

答辩地点: J411机房 答辩内容记录: 答辩成绩 合计 各项分值 分值 评分标准 实际得分 合计得分 备注 25 在规定时间内能就所设计的内容10 进行阐述,言简意明,重点突出,论点正确,条理清晰。 15 在规定时间内能准确、完整、流利地回答教师所提出的问题。 答辩小组成员(签字): 年 月 日 一、综合设计目的、条件、任务和内容要求: 1.设计目的 《Windows程序设计》是计算机科学与技术专业本科生的一门学科基础课程。Windows程序以图形用户界面(GUI)给用户提供各种功能,在各行各业有着广泛的应用。基于MFC的Windows程序设计是进行Win32程序设计的一种主流方法。 本课程主要介绍Windows程序设计的思想和方法,以及MFC的常见应用。本课程综合应用算法与程序设计、面向对象程序设计、数据结构、操作系统、数据库系统原理等课程的知识和方法,面向实际应用和开发,以培养、提高学生的程序设计能力和软件工程能力为目的。通过课程教学、上机实践、综合设计等教学环节,使学生逐步掌握Windows程序设计和MFC的常见应用,并能在实践中熟练应用所掌握的工具和方法解决实际问题。 2.实施方式 本课程重在训练学生的综合设计能力和项目开发应用能力,并强调学生的上机实践能力。按照常规考试方式,不能体现本课程“以理论为基础,侧重实践和应用”的特点,也不能考查学生理解本课程知识的程度以及所培养具备的MFC程序设计应用能力。 因此申请课程考试改革,拟采用项目开发和课程报告相结合的方式对课程进行考查。 实施方式:针对某一综合性较强的Windows应用程序项目,学生首先

进行上机设计,实现系统功能,然后根据设计内容撰写课程报告,并在规定时间递交程序和纸质报告、答辩,最后根据程序、报告和答辩等进行课程成绩评定。 分数比例:项目开发的系统功能和程序代码为60%,课程报告为40%。 3.任务和要求: 针对某一综合应用项目,完成如下任务: (1)简要的需求分析 (2)规划系统主要功能及其结构。 (3)完成各项系统功能的设计。 (4)形成项目文档和开发报告。 4.工具与环境: 设计工具:Visual Studio 指导教师签字: 张俊 2014 年 4 月 3 日

二、进度安排: 第11周:系统功能总体设计。 第12~13周:实现系统功能,撰写设计报告,并按时递交。 第13周:答辩,评定成绩。 三、应收集资料及主要参考文献: [1] 任哲等编著. MFC Windows应用程序设计(第2版). 北京: 清华大学出版社, 2007.9. [2]丁展,汤倩等编著.Visual C++ 游戏开发技术与实例[M].北京:人民邮电出版社,2005 [3]张宏林著.Visual C++ 6.0程序设计与开发技术大全[M]. 北京:人民邮电出版社,2005 [4]汪翔,袁辉著.Visual C++ 实践与提高(网络编程篇)[M]. 北京:中国铁道出版社,2001 [5]黄维通著.Visual C++ 面向对象与可视化程序设计[M]. 北京:清华大学出版社,2003 [6]谢希任著.计算机网络(第4版)[M]. 北京:电子工业出版社,2005 [7]张静著.Windows多媒体编程基础[M].北京:清化大学出版社,2005 [8]刘振安著.Windows实用编程指南[M].北京:人民邮电出版社,1995 [9]刘长明,杨工明著.Visual C++ 实践与提高(多媒体篇)[M]. 北京:中国铁道出版社,2001 四、课程综合设计摘要(中文): 网络游戏的出现代表了一种全新娱乐方式的诞生。目前网络游戏正以其独特的魅力吸引着众多的玩家。随着游戏产业的蓬勃发展,将需要越来越多的人加入到游戏开发中来。 本毕业设计所完成的五子棋游戏(网络版)是在Windows XP下使用Microsoft Visual C++6.0开发的C/S系统,可以实现网络间的双人对战,并且可以提供多媒体播放功能。系统的多媒体播放功能可以播放MP3、WMA等主流格式的音乐。 本论文从基本网络套节字开始入手,介绍了一些本系统相关的理论知识,随后详细介绍了五子棋游戏(网络版)的开发过程。包括服务器端、客户端的socket编程,五子棋服务器和客户端通信的实现,五子棋判断算法的实现,主界面视图,多媒体播放以及定时器等附加功能的实现。最后对系统进行测试并对所做工作进行总结。 关键词 程序设计;Fivechess;MFC; 五、课程综合设计摘要(英文): Abstract On-line games bring to a new form of entertainment. Until now, on-line games is charming more and more players. As the development of game industry, there will be more and more developers join in the game development team. The on -line Black&White game was developed by Microsoft Visual C++6.0 on Windows XP platform. In this game, two people can play the game on line, and the game also provides multimedia player function. The thesis start with introduction of network socket programming, the development processing of the on -line Black&White game are introduced in detail as followed. The thesis have a full touch on server and client socket programming, the communication between server and client was implemented, the algorithm of the five-in-a-row game, the multimedia playback functions. Keywords : program; computer; MFC; Fivechess 武汉工程大学计算机科学与工程学院 综合设计报告

目 录

摘 要 ……………………………………………………………………………………… II Abstract …………………………………………………………………………………... II 第一章 概述……………………………………………………………………………..1 1.1 课题背景 …………………………………………………………………...1 1.2 课程设计目的 …. …………………………………..…………………………… 1 1.2 可行性分析 ………….……………………………..…………………………… 1 第二章 系统总体设计 ……………………………………………………….. .. .. 2 2.1 总体分析 ……………………………………………..……………………….…2 2.2 功能需求分析………..…………………………………..………………………….…2 2.3 设计方案简述…………..………………………………..………………………….…3 第三章 详细设计…………………………………………………..……………….. 4 3.1 窗体制作………………………………………………..………………………….…4 3.2 游戏流程分析……………………………………..………………………….…5 3.3 游戏项目开发 ……………………………..………………………….6 第四章 设计结果及分析………………………………………………..………………..11 4.1 下棋功能测试…………………………….………..………………………….11 4.2 游戏结束测试……… ……………....…..………………………….…13 第五章 总结……………………………………………………..……………….. 15 总 结 …………………………………………….………………………………..….15 致 谢 …….……………………………………………………..………………………….16 参考文献 …….………………..………………………………..………………………….17

- II -

武汉工程大学计算机科学与工程学院 综合设计报告

摘 要

网络游戏的出现代表了一种全新娱乐方式的诞生。目前网络游戏正以其独特的魅力吸引着众多的玩家。随着游戏产业的蓬勃发展,将需要越来越多的人加入到游戏开发中来。 本毕业设计所完成的五子棋游戏(网络版)是在Windows XP下使用Microsoft Visual C++6.0开发的C/S系统,可以实现网络间的双人对战,并且可以提供多媒体播放功能。系统的多媒体播放功能可以播放MP3、WMA等主流格式的音乐。

本论文从基本网络套节字开始入手,介绍了一些本系统相关的理论知识,随后详细介绍了五子棋游戏(网络版)的开发过程。包括服务器端、客户端的socket编程,五子棋服务器和客户端通信的实现,五子棋判断算法的实现,主界面视图,多媒体播放以及定时器等附加功能的实现。最后对系统进行测试并对所做工作进行总结。

关键词 程序设计;Fivechess;MFC;

Abstract

On-line games bring to a new form of entertainment. Until now, on-line games is charming more and more players. As the development of game industry, there will be more and more developers join in the game development team.

The on -line Black&White game was developed by Microsoft Visual C++6.0 on Windows XP platform. In this game, two people can play the game on line, and the game also provides multimedia player function.

The thesis start with introduction of network socket programming, the development processing of the on -line Black&White game are introduced in detail as followed. The thesis have a full touch on server and client socket programming, the communication between server and client was implemented, the algorithm of the five-in-a-row game, the multimedia playback functions.

Keywords : program; computer; MFC; Fivechess

- II -

武汉工程大学计算机科学与工程学院 综合设计报告

第一章 概述

1.1 课题背景

娱乐是人类不可或缺的生活内容,目前市场上的游戏种类繁多,将所学的语言应用到实际,用学习的c++语言编程开发一个简易的计算机单机游戏,即五子棋游戏。 中国民族原创网络游戏为中国网络游戏产业所做出了巨大贡献,民族原创网络游戏已经成为产业发展的主导力量。同样在中国自主研发的民族原创网络游戏已经真正成为中国游戏市场的主导力量。

网络游戏是通过信息网络传播和实现的互动娱乐形式,是一种网络与文化相结合的产业。近年来,网络文化市场发展很快,随着互联网的迅速普及、宽带的接入社区和家庭,我国网络游戏市场发展迅速并进入了一个高速增长期,并已经创造了较大的产值,带动了相关产业的发展,对促进我国网络经济和娱乐业的发展、丰富互联网时代人民群众的文化娱乐生活起到了积极作用。

1.2 课程设计目的

在程序设计中,通过设计、编制、调试一个五子棋的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。在程序设计中,可以用两种方法解决问题:一是传统的结构化程序设计方法,二是更先进的面向对象程序设计方法。

而在面向对象程序设计中关键是如何将问题域中的实体(即日常所见的概念)抽取出来,作为C++程序中的类,而属性与行为作为类的两类要素通常是必不可少的,甚至还应考虑类必须满足的约束。

1.3可行性分析

游戏设计已经成为现在社会的一种热门行业。五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个简单的五子棋单机游戏。主要应用了Visual C++编程来完成这个游戏的设计的。本文主要介绍了本游戏开发环境Microsoft Visual C++ 6.0,使用当前优秀的开发工具VC++编程。包含了五子棋程序的棋盘初始化、游戏规则、胜负判断。思路简单明了,程序也较为简单。可以灵活运用一学过的c++ 知识来编写程序。

1

武汉工程大学计算机科学与工程学院 综合设计报告

第二章 系统总体设计

2.1 总体分析

软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的关键一步。对于任何一个软件而言,需求分析工作都是至关重要的一步。只有通过软件需求分析,才能把软件的功能和性能由总体的概念性描述转化为具体的规格说明,进而建立软件开发的基础。实践表明,需求分析工作进行得好坏,在很大程度上决定了软件开发的成败。

软件需求分析的任务是:让用户和开发者共同明确将要开发的是一个什么样的软件。具体而言,就是通过对问题及其环境的理解、分析和综合,建立逻辑模型,完成新软件的逻辑方案设计。

基于本游戏,首先得为整个棋盘建立一张表格用以记录棋子信息,我们使用一个19*19的二维数组wzq[19][19](19*19是五子棋棋盘的大小),数组的每一个元素对应棋盘上的一个交叉点,用‘0’表示空位、‘1’代表白方的子、‘-1’代表黑方的子;这张表也是今后分析的基础。

2.2功能需求分析

2.2.1 功能模块图

五子棋游戏判断棋盘是否已满判断是否出错并提示判断那方获胜交替循环双方下棋 图2.1 功能模块图

2

武汉工程大学计算机科学与工程学院 综合设计报告

2.2.2 功能说明

该五子棋程序基本上实现了五子棋的游戏功能,有双方下棋的界面及最终判定结果的界面。同时该游戏采用二维坐标实现,明了易懂,方便玩家在游戏过程中的基本操作,使游戏更加简便。在细节方面,该系统提供实时存储功能,随时记录为完成的游戏,使用户可以很好的处理意外中断的情况。该游戏基本实现了游戏的一些要求和特征。在游戏的源程序及文档方面,我们也严格遵守软件工程思想,立足实验要求,确定任务,需求分析,设计和编码,每个步骤力求清晰易懂。原代码注释详尽,各功能模块功能分明,可移植性强。当然该系统也有很多不足的地方,进行独立的课程设计,也有很多细节方面是考虑到的,这款游戏也是在不断的调试和修改中产生和完善的。

2.2.3 需求分析

近年来,随着网络的发展,游戏成为许多人关注的焦点。与传统的影音产业一样,游戏产业也是娱乐行业的一个重要组成部分,基于数字化的网络游戏更让人们找到了前所未有的感受,并已经成为全球互联产业的热点。五子棋,亦称“连五子”、“串珠”、“五目”、“五格”等等,日文称之为“连珠”,英文则称之为“Gobang”或“Renju”或“FIR(Five In a Row)”,是起源于中国古代的传统黑白棋种之一,是一种体现民族特色的休闲游戏,同时能较好的锻炼人的思维,具有广阔的开发前景。

2.3设计方案简述

开发一个五子棋游戏需要从两方面入手。一是游戏规则,二是技术。其实,任何软件开发都是这两大类。根据项目的特点,将不相关的功能分块份阶段进行。大致流程如下:1.画棋盘;2画棋子;3增加下棋制约条件;4.每下一步,判断输赢;5.调试运行。

3

武汉工程大学计算机科学与工程学院 综合设计报告

第三章 详细设计

3.1 窗体设计

利用MFC AppWinzard生成五子棋游戏应用程序框架具体步骤如下:

(1)执行VC程序,选择File|New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFC AppWizard(exe)选项,然后在Project name文本框中输入TacTic ,如图3.1 窗口设计界面1。Lacation文本框是指项目的本地路径。

图3.1 窗口设计界面1

(2)单击按钮,弹出MFC AppWinzard_Step1对话框。选中单文档按钮,如图3.1 窗口设计界面2。

图3.2 窗口设计界面2

4

武汉工程大学计算机科学与工程学院 综合设计报告

(3)因为五子棋的窗体不需要很多功能,为了达到简洁的目的,把初始的选项都勾除掉,如图3.1 窗口设计界面3。完成后运行程序就可以得到一个没有任何内容的窗体了。

图3.3 窗口设计界面3

(4)最后可以通过添加适当的代码修改MFC默认的窗体大小、风格、标题,在MFC中控制窗体的这些属性很简单,只需要在CMainFream类中的PreCreateWindow函数中添加以下代码:

cs.style = WS_OVERLAPPED|WS_MINIMIZEBOX|WS_SYSMENU; cs.lpszName = _T(\五子棋\cs.cx = 450; cs.cy = 500;

再运行程序后,窗口的大小会是450*500像素大小,标题为五子棋。

3.2 游戏流程分析

本程序定义了各种操作函数、各种状态判定,思想明确,思路清晰。各个判断选择了不同路径,因此继续进行或输出结果。程序中,“循环”的利用非常直接和清晰,双方交替下棋,因此循环往复。最终决出胜负或最终平局。分析时,也考虑了许多种情况,针对各个情况均作出了相对措施和解决方案。

程序采用循环进行双方交替下棋,并进行了很多判断。首先判断棋盘是否已满,若棋盘已满,则输出平局,结束游戏;若棋盘未满,则继续进行。如果白棋方下棋,然后判断白棋方是否胜出,若白棋方获胜,则输出白棋方获胜,结束游戏;若白棋方没有获胜,则继续进行,黑棋方下棋,再判断黑棋方是否获胜,若黑棋方获胜,则输出黑棋方获胜,结束游戏;若黑棋方没有获胜,则继续进行。再次判断,如此循环??

5

武汉工程大学计算机科学与工程学院 综合设计报告

根据游戏流程分析,作出如图3.4的游戏流程图。

开始棋盘已满是输出平局否“0”方选位置判断该位置是否有棋有另找位置无“0”方落子否判断“0”方是否获胜是输出“0”方获胜否棋盘已满是输出平局结束否“x”方选位置判断该位置是否有棋有另找位置无“x”方落子判断“x”方是否获胜是输出“x”方获胜 图3.4 游戏流程图

3.3 游戏项目开发

3.3.1 游戏初始准备

为了实现下棋功能并且能够判断游戏什么时候结束等功能,我们要添加一些变量和函数帮助实现,因此我们在CTicTacView类的头文件中添加下面的代码: void over(CPoint point);

6

武汉工程大学计算机科学与工程学院 综合设计报告

int wzq[19][19]; bool colorwhite; CBitmap myblack; CBitmap mywhite;

其中over()函数判断游戏是否结束,数组记录棋格上是否有棋子,colorwhite判断该下白棋还是黑棋,还有两个棋子的位图的变量。然后在类的源文件中的构造函数对这些变量进行初始化赋值,从而添加下面的代码:

mywhite.LoadBitmap(IDB_WHITE); myblack.LoadBitmap(IDB_BLACK);

for(int i=0;i<19;i++) for(int j=0;j<19;j++) wzq[i][j]=0; colorwhite=true;

3.3.2 棋盘设计

在应用程序框架的CTicTac类中的OnDraw()函数中实现画棋盘的功能,画棋盘包括画背景颜色和画五子棋的棋格,在OnDraw()函数中把CDC的指针pDC作为形参,具体添加代码如下: CBrush mybrush;

mybrush.CreateSolidBrush(RGB(130,64,0)); CRect rect(0,0,647,687);

pDC->FillRect(rect,&mybrush); 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); }

在上面的代码中,创建一个CBrush类的对象mybrush,通过调用类中的函数CreateSolidBrush()对这个刷子对象选择颜色,创建一个CRect类的对象rect,选择刷子的作用范围,然后调用CDC类中的FillRect()函数就可以把窗体的背景刷成RGB(130,64,0)的颜色:在画棋盘的部分,用一个for循环分别在x和y方向画19条线作为棋盘。

3.3.3 下棋功能开发

按照规划,棋子使用鼠标的左键来进行下棋操作,即是当用户单击左键时下棋子,但是五子棋是两个人的游戏,如何区别用户左键单击时是下白棋还是黑棋就是个问题,在程序中我们把用户下的第一个棋子规定为白棋,同时通过设置标记的方式实现白棋和黑棋交替,即白棋下棋后的下一步一定是黑棋。此时,必须为鼠标添加鼠标左键单击的

7

武汉工程大学计算机科学与工程学院 综合设计报告

鼠标消息处理函数,步骤如下:

1.在类向导中选择CTicTacView中的的WM_LBUTTONDOWN消息添加OnLButtonUp()消息响应函数,操作界面如图3.4

图3.5 添加消息响应函数

函数添加成功后在函数中写入具体下棋的代码,添加代码如下: CDC *pDC=GetDC();CDC Dc;

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

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; if(colorwhite&&wzq[px][py]==0) {Dc.SelectObject( mywhite);

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

pDC->BitBlt(px*20+32,py*20+32,160,160,&Dc,0,0,SRCCOPY); wzq[px][py]=-1; over(point); colorwhite=true; }}

分析上面的代码,如果鼠标点在棋盘内,并且这个地方没有任何棋子,那么就会在这个点最近的棋格上下一个棋子,通过加载棋子的位图实现下棋,同时修改棋子标记,当colorwhite为true时下白棋,当colorwhite为flase时下黑棋。分析上面的程序发现wzq[]数组,该数组用于记录棋格上是否有棋子,有棋子时为“1”,没有棋子为“0”。

2.位图的加载在下棋功能实现过程里可能会稍微复杂些,首先需要在资源中添加两个Bitmap类型的资源分别用来表示黑棋和白棋,修改它们的ID并记下来方便使用,用这两个位图初始化先前定义的位图变量,然后通过函数调用加载位图,具体调用形式为: Dc.SelectObject( myblack);

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

8

武汉工程大学计算机科学与工程学院 综合设计报告

3.3.4 游戏输赢判断的实现

有了棋盘和下棋功能后,程序就可以实现在棋盘上自由的下棋子了,但是游戏什么时候结束呢,所以需要有一个判断游戏结束判断输赢功能的函数,该功能是棋牌游戏中较难的功能。所以编写程序时要细心。根据五子棋的游戏规则,分析得到下面的设计思路:

如果某一方(黑棋或白棋)在同一行或同一列或同一斜线上具有5个同色的棋子,则该颜色的这一方就获胜。因此可以使用一个整形二维数组来记录当前的棋局情况,二维数组的值定义如下:

0:表示该位子没有棋子;

-1:表示该位置已经放了黑色棋子; 1:表示该位置已经放了白色棋子; 根据思路发现两个问题:

问题1:要在下完棋子,如何改变将数组中对应位置的数组元素值做改变,变为“1”或“-1”,这个只需要在鼠标消息处理函数中改变数组元素值即可。

问题2:下每个棋子后,判断在这个棋子同一行同一列或同一斜线上是否具有连续5个同色的棋子,若有,则宣判该方胜利,并退出游戏,如果没有,则继续游戏,轮到下一方下棋。

对于问题2则需要在下完一个棋子后分别对该棋子的横向、竖向和斜线方向进行判断。其中横向的具体实现的代码如下:

int x=(point.x-30)/20; int y=(point.y-30)/20; int xx,yy. i,j,a; if(x<4)xx=0; else xx=x-4; if(y<4)yy=0; else yy=y-4;

for(i=xx;i<15;i++) {a=0;

for(j=i;j

if(a==5) //五个都是白棋

{AfxMessageBox(\白棋胜!\}

if(a==-5) //五个都是黑棋

{AfxMessageBox(\黑棋胜!\}}}

在上面的代码中,通过计算获得需要的判断的位置,然后横向进行判断,定义一个记录连子情况的整形变量a,如果a等于5,则表示有五个白色的棋子横向相连,则可以输出白棋胜利:如果a等于-5,则表示有五个黑色的棋子相连,那么可以输出黑棋胜利,每次输出某一方胜利后重新开始新的一局游戏。

竖向和横向的原理基本上是一样的,所以这里就不再重复说明了,对于斜线方向的判断相对比横向要复杂,斜线方向包括右下斜线和左下斜线,这里我们只介绍右下斜线方向,右下斜线方向的判断的代码如下 if(x

{ if(xx==0)yy=y-x;

9

武汉工程大学计算机科学与工程学院 综合设计报告

}else

{ if(yy==0)xx=x-y; } int over=0; do{a=0;

for(i=0;i<5;i++)

{if((xx+i)<19||(yy+i)<19) {a=a+wzq[xx+i][yy+i]; if(a==5)

{AfxMessageBox(\白棋胜!\} if(a==-5)

{AfxMessageBox(\黑棋胜!\}

} else over=1; }xx+=1; yy+=1; }while(over==0);

基本的判断方法和横向的判断方法基本相同,在斜线方向判断时,定义一个over变量,代码中利用do-while循环控制判断的循环进行,当over为0是进行循环,当判断到达边界位置无法进行判断是将over赋值为1,控制循环停止。

10

武汉工程大学计算机科学与工程学院 综合设计报告

第四章 设计结果及分析

由于五子棋并不是很复杂的游戏,所以结果也不会很复杂,在测试程序时只要棋子能够正常显示,能够判断输赢就说明程序是成功的。

4.1下棋功能测试

4.1.1 任意棋格下棋

程序预期效果需要用户可以在棋盘任何没有棋子的地方下棋子,测试该功能得到如图4.1的测试结果:

图4.1 下棋功能测试

根据图4.1可以知道我们可以在棋盘的棋格内的任意棋格上下一个棋子,不能在已经下过棋子的地方下棋,说明该功能测试成功。

11

武汉工程大学计算机科学与工程学院 综合设计报告

4.1.1 黑白棋子交替下棋

按照预想的目的需要黑白棋子交替的下棋,测试该功能结果如图4.2、图4.3所示:

图4.2 黑白棋交替测试1

图4.3 黑白棋交替测试2

12

武汉工程大学计算机科学与工程学院 综合设计报告

根据图4.2和4.3显示所示,黑棋和白棋中是交替出现的,黑棋和白棋的数量要么相差一个要么相等,从而说明黑白棋交替出现功能成功实现。

4.2游戏结束测试

该游戏程序的结束只有两种情况,要么是白棋胜利要么是黑棋胜利,因此需要测试是否程序可以判断输赢,并输出游戏结果,开始下一局的游戏。

4.2.1 黑棋胜利结束游戏

当黑棋在横向、竖向或是斜线方向有五个相同的相连的棋子,则黑棋获得游戏胜利。测试该功能的结果如图4.4

图4.4 黑棋获胜

图4.4中在横向中有五个相连的黑色棋子,则游戏输出黑棋获胜,并开始新的游戏,由此可以说明游戏可以判断黑棋获得游戏胜利,黑棋获胜,游戏结束的功能成功实现。

13

武汉工程大学计算机科学与工程学院 综合设计报告

4.2.2 白棋胜利结束游戏

同样的,当白棋在横向、竖向或是斜线方向有五个相同的相连的棋子,则白棋获得游戏胜利。测试该功能的结果如图4.5

图4.5 白棋获胜

图4.5中在斜线方向中有五个相连的白色棋子,则游戏输出白棋获胜,并开始新的游戏,由此可以说明游戏可以判断白棋获得游戏胜利,白棋获胜,游戏结束的功能成功实现。

14

武汉工程大学计算机科学与工程学院 综合设计报告

第五章 总 结

本毕业设计是一款休闲五子棋游戏,离真正意义上的广域网网络游戏还要差距。在设计中确实遇到了不少的困难,但是通过调试已经解决了绝大多数问题。游戏设计已经成为现在社会的一种热门行业。五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。这里设计和实现了一个双人对下的五子棋单机游戏。主要应用了Visual C++编程来完成这个游戏的设计的。本文主要介绍了本游戏开发环境Microsoft Visual C++ 6.0,使用当前优秀的开发工具VC++编程。包含了五子棋程序的棋盘初始化、游戏规则、胜负判断方法。

但是仍有一些不足之处:游戏只是局限于两个人之间; 并且局限于一个电脑的鼠

标;没有定时功能及提醒功能。

这款游戏可以继续完善菜单功能也可以通过扩展实现成一款围棋游戏,总之它可以继续发展成一个比较成熟的休闲类小游戏。还有很多需要完善和改进的地方。

15

武汉工程大学计算机科学与工程学院 综合设计报告

致 谢

在本次课程设计过程中,感谢我的学校,给了我学习的机会,在学习中,老师给予我们足够的宽松,让我们可以自由发挥,选取自己感兴趣的方面,同时在论文框架到细节修改,也给予了细致的指导,提出了很多宝贵的意见与建议,老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风对我产生重要影响。他渊博的知识、开阔的视野和对项目认真态度给了我深深的启迪。这份报告是在老师的精心指导和支持下才完成的

感谢授我以业的老师,没有老师教授给我的知识,我没有这么大的动力和信心完成这个项目并完成这份报告。感恩之余,诚恳地请师对我的报告批评指正,使我及时完善报告的不足之处。

16

武汉工程大学计算机科学与工程学院 综合设计报告

参考文献

[1] 任哲等编著. MFC Windows应用程序设计(第2版). 北京: 清华大学出版

社, 2007.9.

[2]丁展,汤倩等编著.Visual C++ 游戏开发技术与实例[M].北京:人民邮电出版社,2005

[3]张宏林著.Visual C++ 6.0程序设计与开发技术大全[M]. 北京:人民邮电出版社,2005

[4]汪翔,袁辉著.Visual C++ 实践与提高(网络编程篇)[M]. 北京:中国铁道出版社,2001

[5]黄维通著.Visual C++ 面向对象与可视化程序设计[M]. 北京:清华大学出版社,2003

[6]谢希任著.计算机网络(第4版)[M]. 北京:电子工业出版社,2005 [7]张静著.Windows多媒体编程基础[M].北京:清化大学出版社,2005 [8]刘振安著.Windows实用编程指南[M].北京:人民邮电出版社,1995 [9]刘长明,杨工明著.Visual C++ 实践与提高(多媒体篇)[M]. 北京:中国铁道出版社,2001

[10]刘长明,杨工明著.Visual C++ 实践与提高(多媒体篇)[M]. 北京:中国铁道出版社,2001

17

本文来源:https://www.bwwdw.com/article/milw.html

Top