五子棋课程设计实验报告
五子棋实验报告(含代码)

实验报告实验一五子棋游戏北方工业大学 2013级计算机技术米鹏一、实验原理及方法五子棋游戏开发借用Visual Studio 2012软件开发平台,选用C#语言进行编写。
整体程序主要分为三部分:界面操作部分、AI逻辑部分和棋子定点分析部分。
1、界面操作部分界面操作部分代码主要针对图像呈现、对应矩阵存储、下棋过程控制等可见的操作环节进编写。
同时负责整个程序的初始化工作。
图像呈现采用C#中Graphics进行绘制。
棋盘被划分为15行15列,每个划分出的小方格均为30*30的正方形,棋盘可操作的范围规定在(20,20)、(460,460)两点的确定的正方形区域内。
通过鼠标左击来确定下子地点。
程序会根据鼠标鼠标点击的位置进行计算,计算得到时对应矩阵的行列,之后再改变对应矩阵的内容后,在通过行列值乘以小方格边长计算得到在显示区域中的具体位置,再稍加变动后画到显示区域中。
以X点坐标为例,下面是计算X(Column)的流程图:在对应矩阵存储方面,后面AI逻辑和棋子分析所用到的矩阵都是来源这里。
同时AI 逻辑和棋子分析不能去修改对应矩阵内容。
图像呈现点的位置、重绘的根据都是来源这里。
在下棋过程控制方面采用信号亮的机制,当操作者下过后,根据信号AI会立即计算将要下点的位置同时改变信号亮变量。
当AI下过棋子后,由于信号亮的的限制就等待操作者去下棋,同时改变信号亮变量内容。
AI和操作者的所有下子、修改矩阵、显示棋子的过程都是统一的。
在每一盘游戏开始时程序会对一些重要的变量进行初始化这里包括矩阵、信号亮、第一步棋子颜色、呈现图像等内容进行初始化。
同时AI会在棋盘中央下第一子。
2、AI逻辑部分AI逻辑部分算是整个程序策略的灵魂。
其中的一些关键性判别的前后关系将影响AI 的下棋的结果。
同时加大和降低AI的难度也是这里。
下面是我设计的策略过程:从下棋者的考虑角度进行考虑,尽可能保证每一次下子都是有必要的、都是在情理当中的。
我所设计的策略并不是完整,漏洞在与没有考虑三棋子连续的情况。
课程设计报告--c++课程设计五子棋游戏

徐州师范大学物电学院课程设计报告课程名称:计算机程序设计实训题目:五子棋专业班级: 09物41学生姓名:高乐莲学生学号: xxxx ___________日期: 2011.12.24指导教师:赵纪平物电学院教务部印制说明:1、报告中的第一、二、三项由学生在课程设计开始前填写,由指导教师指导并确认签字。
2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩,并填写成绩评定表。
3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律按不及格处理。
答辩小组成员应由2人及以上教师组成。
答辩后学生根据答辩情况填写答辩记录表。
4、报告正文字数一般应不少于3000字,也可由指导教师根据本门课程设计的情况另行规定。
5、平时表现成绩低于6分的学生,取消答辩资格,其该课程设计成绩按不及格处理。
6、课程设计完成后,由指导教师根据完成情况写出总结。
7、此表格式为徐州师范大学物理与电子工程学院提供的基本格式,指导教师可根据本门课程设计的特点及内容做适当的调整。
指导教师签字:年月日目录摘要 (II)Abstract (II)1 绪论 (1)1.1 课题背景 (1)1.2 课程设计的目的 (1)2 设计方案简述 (2)2.1 可行性分析 (2)2.2 需求分析 (2)3 详细设计 (3)3.1窗体设计 (3)3.2游戏项目开发 (5)3.2.1棋牌设置 (5)3.2.2放置棋子功能的开发 (6)3.3.3游戏获胜决断的开发 (12)3.2.4游戏的调试与运行 (20)4 设计结果及分析 (22)4.1 程序的结果 (22)4.2结果分析 (23)5总结 (24)参考文献 (25)摘要网络游戏的出现代表了一种全新娱乐方式的诞生。
目前网络游戏正以其独特的魅力吸引着众多的玩家。
随着游戏产业的蓬勃发展,将需要越来越多的人加入到游戏开发中来。
本毕业设计所完成的五子棋游戏(网络版)是在Windows XP下使用Microsoft Visual C++6.0开发的C/S系统,可以实现网络间的双人对战,并且可以提供多媒体播放功能。
实验四 五子棋实验

人工智能基础(第2版)
实验四:博弈问题—五子棋实验
1.提交期限和方法
2.实验目的
熟悉和掌握博弈搜索算法的原理、实质和过程。
3.实验任务
1. 制作类似于如图所示五子棋系统实验程序。
2. 用你所熟悉的程序语言实现,可以B/S实现,也可以C/S实现。
4.提交要求
1、本次实验为个人任务,需独立完成,以纸质和电子档的形式把实验报告提交给学习
委员,再由学习委员在规定期限内提交给任课老师。
2、要求把所做的程序的演示图附加到实验报告上,代码不需要添加到实验报告上。
3、撰写实验报告
实验报告具体内容如下:
实验题目、实验目的、实验原理、实验条件、实验内容、实验步骤、程序代码、个人实验小结。
4、未按时提交实验报告者,每迟交一天扣1分,扣完为止。
经辅导员同意并签字的事病假时间不计入迟交范围。
凡被发现实验报告有抄袭者,本次成绩以零分记。
java课程设计实验报告---自娱自乐五子棋

Java课程设计说明书----五子棋小游戏院系; 管理学院专业班级: 信管151学生学号: 201500705009学生姓名: 雷晓指导教师: 伍良启日期2017.01.05成绩:指导老师签名:批改日期:目录 (1)课程设计的目的 (5)课程设计思路 (5)(1)棋盘界面设计 (5)(2)算法设计 (6)(3)五子棋规则 (6)程序流程图 (7)程序的设计方法 (8)程序中主要方法的说明 (8)程序中类及成员变量的说明 (9)主要成员变量(属性) (9)java源文件及其功能 (10)五子棋游戏中的注册监听 (10)游戏整体设计 (11)(1)五子棋的游戏主界面 (11)(2)机器人部分的设计 (11)(3)五子棋面板的设计 (12)设计结果与分析 (12)设计体会 (13)参考文献 (15)附录:程序源代码 (15)课程设计的目的学习任何知识得目的都是要将它运用到实践中去,所以我们要运用已有的知识,独立得将这个课程设计完成,只有这样,我们才能将知识变成本领,变成属于自己得东西,通过一个学习得学习,我们已经有可一定得Java基础,现在我们就要利用这些基础,来完成课程设计。
这次课程设计我主要研究了利用已学的Java知识编辑一个五子棋小游戏。
通过此次课程设计,来巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。
课程设计思路(1)棋盘界面设计在对棋盘界面设计方面要考虑简洁友好,符合游戏者需求。
棋子的设计方面系统中设置了两种棋子颜色,yellow或者red,游戏者可自行选择。
棋子怎样画出来,怎样使棋子按我们所想的方式来绘制出来是设计的主要难题。
运行时要求当每次点击鼠标的时候就在点击鼠标的地方画一个棋子,所以得定义一个棋子的类使点击鼠标时系统把棋子绘制出来。
这样主界面里的棋子就确定了,而且也确定了几个所需要的类。
可以先定义好这些类了。
五子棋程序设计课程设计报告书

目录1、引言 (3)1.1 编写目的 (3)1.2 读者对象 (3)1.3 软件项目概述 (3)1.4 文档概述 (4)1.5 定义 (4)1.6 参考资料 (4)2、任务概述............................................................... 错误!未定义书签。
2.1目标 (4)2.2软件的开发和运行环境 (5)2.3 用户特征 (5)2.4 假设与约束 (5)2.5 进度要求 (6)2.6验收要求 (6)3、功能需求描述与测试方案: (7)4、界面要求 (20)5、功能设计 (21)5.1类的关系描述 (21)5.2类的设计 (21)6、使用指南 (23)7、总结 (23)8、附录 (24)1、引言1.1 编写目的本文档为用户和软件设计者提供一个交流的平台。
在其中包含了用户所要求完成的功能,软件设计师实现的初步设想并最终实现的代码。
同时,为用户提供了使用的约束条件、使用手册,方便用户更好的使用本软件。
1.2 读者对象本文档的读者是最终验收者(教员和辅导员)。
1.3 软件项目概述●项目名称:五子棋游戏●简称:五子棋●项目代号:无●软件项目的大致功能和性能要求为:1)设计一个五子连珠类;2)记录游戏双方的游戏过程,允许悔棋;3)实现保存棋谱和根据棋谱复盘的功能;4)判断双方输赢,先走出五子连珠的一方胜;5)响应用户的鼠标消息,并显示棋盘信息;6)判断先下者落子时不允许走禁手。
1.4 文档概述本文档向用户和验收人员提供了一个很好的了解效果。
在文档中,有用户提出的需求(功能),有整个框架的具体描述,有每一个添加功能的具体实现代码以及测试结果。
最终具体描述了软件使用的说明。
1.5 定义五1.6 参考资料【1】《程序设计课程设计》国防科大印刷厂【2】《面向对象程序设计与Visual C++ 6.0教程》清华大学出版社【3】《Visual C++ 6.0 》人民邮电大学出版社【4】《Visual C++ 实用教程》电子工业出版社2、任务概述2.1目标用户提出需要设计出一个五子棋游戏,可以在任何的情况下都可以独立的运行。
五子棋人机博弈实验报告

五子棋人机博弈实验报告目录一(课程设计目的............................................. 2 二(课程设计要求............................................. 2 三(课程设计内容............................................. 2 四(课程设计思想............................................. 2 五(系统实现 (2)设计平台 (2)数据结构设计 (3)程序流程图设计 (3)主要算法设计 (4)程序调试及运行结果.............................. 4 六(课程设计总结............................................. 5 七(参考资料................................................... 6 八(附录:五子棋博弈算法源代码 (7)1一( 课程设计目的通过上学期学习的《人工智能》学科,运用推理技术、搜索方法和决策规划和博弈树设计五子棋人机博弈系统,以此进一步深化对理论知识技术的了解,培养学生编程能力以及实践水平。
二(课程设计要求通过本次课程设计要求学生掌握以下内容:1.深入了解博弈树和alpha-beta剪枝算法。
2.设计出适合五子棋算法的启发式函数。
3.熟练掌握启发式的搜索方法。
三(课程设计内容本系统实现的是五子棋博弈算法,运用java语言实现了图形用户界面,方便用户使用。
算法采用了博弈算法和启发式函数进行搜索,人机对弈可自动判断输赢,结束后可重新开局。
四(课程设计思想本系统实现的是五子棋博弈算法,为了方便用户的使用,采用的是java图形用户界面技术。
为了记录棋盘的每一个下棋点,定义数组array[19][19]。
QT-五子棋游戏设计-课程设计报告
2013-2014学年秋季学期《Windows程序设计》课程设计报告学院:计算机与信息学院序号: 56姓名:周春雷学号: 2012112302指导教师:王安慧完成时间 2014 年 05月29日目录一、课程设计的目的 (1)二、课程设计的容及要求 (1)三、关键技术及相关原理介绍 (1)四、系统的总体设计 (2)五、设计思路及关键问题的解决方法 (3)六、设计模块分类 (4)1. 输入模块 (4)2. 输出模块 (6)3. 判断模块 (7)①判断输赢模块 (7)②判断命令模块 (11)七、运行结果截屏 (13)一、课程设计的目的通过所学的知识和技术,在老师的帮助下以及自己查询资料,完成对五子棋游戏的编程实现,使程序支持人人战,并且可以完成判断输赢,悔棋,从新开始等基本功能。
本次课程设计的课题简单,且娱乐性强。
在完成课题的过程中可以很好的复习学过的知识和技术,并且在完成设计编程后,可以很大程度上提高自信心和好学心,同时在做的过程中遇到难题能主动查阅资料、寻求帮助,对团队协作以及对网络资源的有效利用有了更深的体会。
二、课程设计的容及要求课程设计的容:本次设计将提供一个“五子棋”的游戏程序,可完成的功能有“人与人对战”、悔棋、开始新游戏。
课程设计的要求:使用QT软件开发,语言使用C++。
三、关键技术及相关原理介绍本系统主要分为输入模块、输出模块和判断模块这三大块。
各模块依据所属功能的不同来划分。
输入模块主要实现用户对数据的输入,输出模块则是完成对用户输入到系统的数据在棋盘上的显示,而判断模块这是系统的主要模块,完成对用户输赢的判断和对用户悔棋和从新开始等操作命令的响应。
本次采用了QT进行程序设计,对于图形界面有较好的处理方法和环境。
四、系统的总体设计图1:系统功能模块图图1是系统的总体模块图,依据系统的不同功能包含3个大的模块:输入模块,判断模块和输出模块。
各个模块的具体代码实现和功能描述在后面将详细的解释。
(最新版)五子棋毕业课程设计报告
上海海事大学程序设计课程设计报告课程题目FIVE CHESS GAME作者姓名学号联系方式指导教师学科(专业)所在学院提交日期目录1引言 (3)1.1五子棋介绍 (3)1.2选题背景和动机 (3)1.3系统所要解决的问题 (3)2 系统框架 (5)2.1棋盘类 (6)2.1.1 主要成员变量说明: (6)2.1.2清空棋盘——Clear (6)2.1.3绘制棋子——Draw (6)2.1.4左键消息——OnLButtonUp (7)2.1.5载入棋盘 (7)2.1.6对方落子完毕——Over (7)2.1.7设置游戏模式——SetGameMode (7)2.1.8胜负的判断——Win (7)2.2游戏模式类 (8)3关键技术 (9)3.1 棋盘对话框的制作 (9)3.1.1 对话框机制 (9)3.1.3 棋子 (10)3.2 人机对弈 (10)3.2.1 难度的选择 (10)3.2.2 机器的落子判断 (11)4运行结果 (15)4.1开发环境及运行环境 (15)4.1.1开发环境 (15)4.1.2运行环境 (15)4.2运行图示 (15)4.2.1 棋盘显示 (15)4.2.2 开始的选择对话框 (16)4.2.3 主界面中的游戏难度选项 (16)4.2.4 电脑的应对 (17)5调试分析 (19)6总结 (21)参考文献 (22)1引言1.1五子棋介绍五子棋是起源于中国古代的传统黑白棋种之一。
现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
五子棋系统实验报告
湖南工业大学课程设计任务书2015—2016学年第2 学期计算机与通信学院(系、部)计算机科学与技术专业计算机1502班级课程名称:面向对象程序设计设计题目:五子棋完成期限:自2016年6月13日至2016年6月19日共1周指导教师(签字):年月日系(教研室)主任(签字):年月日面向对象程序设计课程设计设计说明书五子棋起止日期: 2016年6月13日至 2016年6月18日学生姓名王回班级计算机1502学号15408100209成绩指导教师(签字)计算机与通信学院2016年 6 月 18日五子棋一、课题的介绍和课题的任务设计的课题名称:五子棋实现以下功能:功能1、模拟真实棋盘棋子功能2、模拟人与人对战下棋功能3、模拟实时胜负判断功能4、模拟棋局的存储与读取二、设计的要求具有动画功能(即图像能即时移动),能实现人与人进行简单的对玩,能实现简单的胜负判断三、系统的分析和系统中类的设计CWZQApp类作用:初始化应用程序及运行该程序的所需要的成员函数CWZQDoc类作用:存放应用程序的数据以及实现文件的保存,加载功能CMainFrame类作用:管理应用程序的窗口,显示标题栏,状态栏,工具栏等,同时处理针对窗口操作的信息CAboutDlg类作用:向导自动生成对话框类CWZQView类作用:管理视图窗口,在框架窗口中实现用户数据的显示和打印,存放添加的功能模块CWZQView类中的成员函数与数据成员:void Save(); //**** //保存文件void OnOpen() //打开文件void over(CPoint point);//**** //检查是否结束voidOnDraw(CDC* pDC) //画棋盘函数void OnLButtonUp(UINT nFlags, CPoint point)//模拟下棋函数HCURSOR hcursorwhite; //**** //两个鼠标HCURSOR hcursorblack; //****intwzq[19][19]; //**** //棋盘数组boolcolorwhite; //**** // colorwhite TRUE时白棋下,否则黑棋下CBitmapm_bmblack; //**** //棋子位图CBitmapm_bmwhite; //****void CWZQView::OnDraw(CDC* pDC) //构造棋盘,显示白棋以及黑棋GetDocument() //获取文档指针,在视图中显示文档内容CBrush //用于构造CBrush对象,然后传给需要画刷的CDC成员函数pDC->FillRect(myrect1,&mybrush1) // 画黑框线四、系统的实现及调试添加的功能:1.图标,光标以及位图的绘制程序运行开始鼠标在进入棋盘界面未放下棋子时变为类似棋子光标,此处需要描绘2种棋子光标:黑白鼠标Cursor以替换当前鼠标:IDC_CURSOR1 黑棋子IDC_CURSOR2 白棋子说明:由于下棋时我们必须把鼠标热点设置在中间,点击下图(图3-1-3)最右边按扭,然后把鼠标移动到图像中你想设置为热点的地方,按下鼠标左键。
java五子棋课程设计报告总结
java五子棋课程设计报告总结一、引言五子棋是一种古老的棋类游戏,它的规则简单易懂,但是却有很高的策略性和趣味性。
在计算机科学领域中,五子棋也是一个重要的研究对象。
本次课程设计旨在通过使用Java语言实现一个简单的五子棋游戏,并且了解一些基本的人工智能算法。
二、需求分析1. 功能需求(1)实现基本的五子棋游戏功能,包括落子、判断胜负等。
(2)实现人机对弈功能,即用户可以选择与计算机进行对弈。
(3)实现网络对战功能,即用户可以选择与其他玩家进行在线对弈。
2. 非功能需求(1)界面美观、易用性好。
(2)程序运行稳定、流畅。
三、设计方案1. 界面设计使用Java Swing库来实现程序界面。
主要包括菜单栏、工具栏和游戏主界面。
菜单栏包括文件菜单和帮助菜单;工具栏包括开始新游戏、悔棋和撤销悔棋等按钮;游戏主界面包括棋盘和落子动画等。
2. 程序设计(1)基本数据结构使用二维数组来存储棋盘的状态,其中0表示空位,1表示黑子,2表示白子。
使用栈来实现悔棋和撤销悔棋功能。
(2)游戏逻辑通过监听鼠标点击事件来实现用户落子。
每次落子后判断胜负,并且交换下一步落子的颜色。
在人机对弈模式下,计算机会根据当前局面使用基本的博弈树搜索算法来选择最优的落子位置。
(3)网络对战使用Socket编程实现网络对战功能。
用户可以选择创建游戏或加入游戏。
创建游戏后等待其他玩家加入,加入游戏后与对方进行对弈。
四、实现过程1. 界面实现使用Java Swing库中的各种组件来实现程序界面,并且通过布局管理器来控制组件的位置和大小。
2. 程序实现(1)基本数据结构和游戏逻辑的实现比较简单,主要是通过循环和条件语句来控制程序流程。
(2)人工智能算法的实现比较复杂。
我们采用了基本的博弈树搜索算法,在每次落子后生成当前局面下所有可能的落子位置,并且评估每个位置的得分,选择得分最高的位置作为计算机下一步的落子位置。
(3)网络对战功能的实现涉及到Socket编程和多线程编程等技术,需要仔细考虑各种异常情况和线程同步问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计报告 题目: 五子棋 班级: 电气Q1041班 人数: 3人 小组成员: 周啸天、万广富、黄山奇 C语言课程设计
第2页 共28页 2 指导老师: 桂超
时间: 2011.11.30 C语言课程设计
第3页 共28页 3 目录
第一章 课程设计的目的和要求 .............................................................. 4 1.1 课程设计的目的 ........................................................................... 4 1.2 课程设计的要求 ........................................................................... 4 1.3 课程设计的实验环境 ................................................................... 4 第二章 功能描述....................................................................................... 5 第三章 总体设计....................................................................................... 6 3.1 功能模块设计 ............................................................................... 6 3.1.1 任务执行流程图 .................................................................. 6 3.1.2 下棋函数流程图 .................................................................. 7 3.2 数据结构设计 ............................................................................... 8 3.2.1 定义结构体 .......................................................................... 8 3.2.2 定义数组 .............................................................................. 8 3.2.3 全局变量 .............................................................................. 8 3.3 函数功能描述 ............................................................................... 8 第四章 程序实现....................................................................................... 9 4.1源码分析......................................................................................... 9 4.2运行结果及界面介绍 .................................................................. 23 第五章 后记 ............................................................................................. 28 C语言课程设计
第4页 共28页 4 第一章 课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。
1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能
1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0 C语言课程设计
第5页 共28页 5 第二章 功能描述 本程序用C语言实现了五子棋游戏,能进行基本的五子棋操作。程序能实现界面的初始化功能、下棋功能、人机智能对战功能、胜负判断功能、悔棋功能、读档及存档功能,通过键盘操作控制下棋。 (1)显示欢迎界面。在游戏开始时出现一个欢迎的界面同时介绍了游戏的规则; (2)初始化功能。程序初始化屏幕和棋盘,默认玩家先行。 (3)下棋操作。利用W、S、A、D及空格键实现下棋操作,在下棋过程中能随时按ESC键退出。 (4)人机智能对战功能。电脑根据玩家的下棋对棋盘进行智能分析,然后下棋,实现人机对弈。 (5)悔棋功能。玩家可以有三次悔棋机会。 (6)胜负判断功能。程序能对下棋的结果进行判断,分出胜负。并显示获胜方。 (7)读档、存档功能。游戏中途退出会提示是否存档,如果存档,则下次开始的时候会提示是否读档继续上次的游戏。 C语言课程设计
第6页 共28页 6 第三章 总体设计 3.1 功能模块设计 3.1.1 任务执行流程图
否 是 否 是
初始化程序 开始 玩家行棋 玩家 获胜?
按Esc键 按Esc键
显示玩家 获胜信息 电脑行棋
电脑 获胜?
显示电脑 获胜信息
结束 C语言课程设计
第7页 共28页 7 3.1.2 下棋函数流程图
是 否 否 是 否 是 否 否
是 结束
向键值指示的方向移动一步
key=SPACE?
显示获胜信息 Key=ESC?
board[i][j]等于’ ’?
玩家 获胜?
下一步超
出边界?
交换行棋方
画棋子,显示运动轨迹
获取key值 board[i][j] 赋值为’b’
开始 C语言课程设计
第8页 共28页 8 3.2 数据结构设计
3.2.1 定义结构体 将棋盘上每个点的左边定义为一个结构体; typedef struct { int x, y; }point;
3.2.2 定义数组 定义数组board[15][15]表示棋盘,用来记录棋盘上每个棋子的状态; 3.2.3 全局变量
定义整形数组 back[4] 用来记录前两步双方下棋的状态,便于后面进行悔棋操作 定义整形 n = 3; 用来记录悔棋次数
3.3 函数功能描述 1、显示欢迎信息 bool welcome(); 2、初始化棋盘 void InitBoard(); 3、输出棋盘 void chessboard(); 4、判断胜负 int Win(char c); 5、下棋 void play(point &r); 6、显示获胜 void showsusscced(char c); 7、悔棋 bool BackStep(int back[]); 8、人机对战智能算法 void ComAlgo(point &r); 9、存盘函数 bool SaveLoad(); 10、读盘函数 bool DownLoad(); C语言课程设计 第9页 共28页 9 第四章 程序实现
4.1源码分析 1、显示欢迎信息 bool welcome() { char ch; printf("\n\n\n\n"); printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("┃ Welcome you to gobang World! ┃\n"); printf("┃1、You can use the A,D,W and S key to move the chessman; ┃\n"); printf("┃2、You can press Space key to enter after you move it; ┃\n"); printf("┃3、You can use Esc key to exit the game; ┃\n"); printf("┃4、Don't move the pieces out of the chessboard. ┃\n"); printf("┃ Do you want to continue?(Y/N) ┃\n"); printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); while (! strchr("YN", ch = toupper(getch()))) { putchar('\a'); } if(ch == 'N') return false; else return true; }
2、初始化棋盘 void InitBoard() { char ch; int i, j; printf("\n\n是否读档?(Y/N)\n"); if((ch = toupper(getch())) == 'Y' && DownLoad()) printf("读档成功!\n"); else { for(i = 0; i < 15; i ++) for(j = 0; j < 15; j ++) board[i][j] = ' '; } chessboard(); }