五子棋课程设计实验报告课件
2024版五子棋课件公开课课件

棋盘与棋子
棋盘
五子棋棋盘为15×15的纵横交错的线 条构成,共有225个交叉点。
棋子
双方各执黑白两色棋子,黑方先行,轮 流在交叉点上落子。
基本规则与术语
基本规则
黑方先行,双方轮流落子,落子后不能移动。先连成五子(横、竖、斜方向连 续五个相同颜色的棋子)的一方获胜。
术语
包括活四(有两个点可以成五的四)、冲四(只有一个点可以成五的四)、活 三(有三个点可以成四的三)、眠三(有两个点可以成四的三)等。
五子棋课件公开课课件
• 五子棋基本知识与规则 • 五子棋基本技巧与策略 • 五子棋进阶技巧与战术 • 五子棋心理战术与竞技心态 • 五子棋文化与传承 • 五子棋实战演练与互动环节
01
五子棋基本知识与规则
五子棋的起源与发展
起源
五子棋,又称为连珠、连五等,起 源于中国的古代黑白棋种之一。
发展
五子棋在日本得到了广泛的发展, 并形成了现代的规则体系,成为了 一项国际性的竞技项目。
等,制造优势。
残局处理
判断形势
分析双方子力分布,判断胜负趋 势。
寻找胜机
发现并利用对方弱点,制造胜利 机会。
保持先手
保持先手优势,掌握主动权。
简化局面
通过兑子、弃子等手段,简化局 面,明确胜负。
实战案例分析
经典对局解析
选取具有代表性的经典对局,进行深入分析。
胜负关键解析
分析对局中决定胜负的关键因素。
高手对局赏析
经典对局讲解
欣赏与学习并重
选取五子棋历史上的经典对局进行讲 解,分析高手的战术和策略。
在欣赏高手对局的同时,引导学生学 习其中的技巧和战术,提升自身的五 子棋水平。
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个大的模块:输入模块,判断模块和输出模块。
各个模块的具体代码实现和功能描述在后面将详细的解释。
五子棋课程设计实验报告

C语言程序设计报告题目: 五子棋班级: 电气Q1041班人数: 3人小组成员: 周啸天、万广富、黄山奇指导老师:桂超时间: 2011.11.30目录第一章课程设计的目的和要求 (3)1.1 课程设计的目的 (3)1.2 课程设计的要求 (3)1.3 课程设计的实验环境 (3)第二章功能描述 (4)第三章总体设计 (5)3.1 功能模块设计 (5)3.1.1 任务执行流程图 (5)3.1.2 下棋函数流程图 (6)3.2 数据结构设计 (7)3.2.1 定义结构体 (7)3.2.2 定义数组 (7)3.2.3 全局变量 (7)3.3 函数功能描述 (7)第四章程序实现 (8)4.1源码分析 (8)4.2运行结果及界面介绍 (22)第五章后记 (27)第一章课程设计的目的和要求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语言实现了五子棋游戏,能进行基本的五子棋操作。
(最新版)五子棋毕业课程设计报告

上海海事大学程序设计课程设计报告课程题目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的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。
五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
五子棋游戏__课程设计报告(含源代码可以运行)

《软件基础》大作业项目名称:五子棋游戏学号: 05姓名:校建林朱颖完成时间: 2011年11月28日指导教师:鲁可目录一需求分析 (1)1.1开发背景 (1)1.2项目目标五子棋与游戏开发成员和具体日期完成任务以及任务的具体分配. . . . . . . . . . . . . . . . . . . . 11.3运行环境...初始化. (3)1.4项目任务书主循环控制模块 (3)1.5玩家下子 (3)1.6盘面分析填写棋型表 (3)1.7对方下子 (4)1.8胜负判断 (4)二技术线路 (4)2.1采用的软件及开发平台是什么2.2项目的总体方案—包括模块及模块间的联系、信息流、数据流等2.3项目的详细设计—包括模块的功能、数据结构及算法等2.1技术线路模块图 (4)2.2技术线路说明 (5)三工程进度第三章系统设计 (5)3.1流程图 (6)3.2流程图说明 (6)四程序测试分析 (7)4.1阶段性测试4.2总体测试五个人总结 (9)附录源代码 (10)五子棋游戏第一章需求分析1.1开发背景软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的关键一步。
对于任何一个软件而言,需求分析工作都是至关重要的一步。
只有通过软件需求分析,才能把软件的功能和性能由总体的概念性描述转化为具体的规格说明,进而建立软件开发的基础。
实践表明,需求分析工作进行得好坏,在很大程度上决定了软件开发的成败。
软件需求分析的任务是:让用户和开发者共同明确将要开发的是一个什么样的软件。
具体而言,就是通过对问题及其环境的理解、分析和综合,建立逻辑模型,完成新软件的逻辑方案设计。
基于本游戏,首先得为整个棋盘建立一表格用以记录棋子信息,我们使用一个15*15的二维数组Table[15][15](15*15是五子棋棋盘的大小),数组的每一个元素对应棋盘上的一个交叉点,用‘0’表示空位、‘1’代表己方的子、‘2’代表对方的子;这表也是今后分析的基础。
五子棋系统实验报告

湖南工业大学课程设计任务书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)最右边按扭,然后把鼠标移动到图像中你想设置为热点的地方,按下鼠标左键。
五子棋游戏程序设计PPT课件
图形程序的独立运行问题
为使图形方式的C源程序能够脱离TC环境下运行,应对 EGAVGA显示器的驱动程序.BGI转换成.OBJ文件:
C:\TC\BGIOBJ EGAVGA
然后,将EGAVGA.OBJ与GRAPHICS.LIB进行连接:
VGAMED
阵列) 2
640 480
16
VGAHI
使用图形方式时先进行图形系统初始化, 检测或设置指定的图形模式
图形系统的初始化
❖图形系统初始化函数
void initgraph(int *driver,int *mode,char *pathtodriver) 其中; driver——显示适配器驱动程序的枚举变量 mode——图形模式(模式号或模式标识符) pathtodriver——适配器驱动程序的寻找路径,“” 表示在当前目录下(*.BGI)
❖实习报告
语言简练,条理清楚,图表规范 程序设计组成框图、流程图 模块功能说明(如函数功能、入口及出口参数说明,函数
调用关系描述等)
调试与测试:调试方法,测试结果的分析与讨论,测试过 程中遇到的主要问题及采取的解决措施
源程序清单和执行结果(软盘):清单中应有足够的注释
参考书:C高级实用程序设计 王士元 清华大学出版社
❖菜单窗口和菜单项的生成
生成背景图象,在指定位置显示菜单项文字
❖光条的生成
光条的产生及光条在光标键的控制下而移动(保存与再现)
❖键识别
当按下菜单上的选项(如:功能键或光标移动键)时,根据键值 转入相应的功能处理
❖菜单的连接 ❖功能执行
屏幕文本移动与存取函数
五子棋-课程设计报告
石家庄铁道大学课程设计课程设计题目五子棋单位分院(系)专业学号学生姓名指导教师完成日期 2011 年 05 月日摘要五子棋的历史:五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。
发展于日本,流行于欧美。
容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。
有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。
在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。
”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。
这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子。
因而规则简单的五子棋也可能出自当时,并是用石子作棋子。
亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。
程序说明:本程序是一款棋类益智游戏程序,是用WIN-TC编写在WINDOWS 系统下运行的娱乐游戏。
本程序可以实现人人对战,操作采用键盘上的上下左右键控制棋子的上下左右移动,由空格键控制下棋,双方都可通过ESC键终止游戏。
游戏开始后,红、白双方轮流下棋,程序会根据双方下棋的先后顺序自动显示不同颜色的棋子,提示当前下棋的棋手,任何一方由五子连成一线时,游戏结束,结束时会显示对战双方胜负情况。
关键词:五子棋游戏应用程序,C语言,图形函数目录第1章选题的意义 (4)1.1 (4)1.2 (4)第2章系统功能需求分析 (4)2.1系统的基本要求 (4)2.2 (4)第3章系统设计 (6)第4章系统实现 (8)第5章总结………………………………………………………………………36第1章选题的意义1.1意义通过游戏过程增加编程的兴趣,提高编程水平。
五子棋课程设计实验报告
西南交通大学程序语言综合课程设计五子棋游戏课程《程序语言综合课程设计》学院信息科学与技术学专业软件工程姓名学号 20119050 日期 2016年月日目录第一章课程设计的目的和要求 (3)1.1 课程设计的目的 (3)1.2 课程设计的要求 (3)1.3 课程设计的实验环境 (3)第二章功能描述 (4)第三章总体设计 (5)3.1 功能模块设计 (5)3.1.1 任务执行流程图 (5)3.1.2 下棋函数流程图 (6)3.2 数据结构设计 (7)3.2.1 定义结构体 (7)3.2.2 定义数组 (7)3.2.3 全局变量 (7)3.3 函数功能描述 (7)第四章程序实现 (8)4.1源码分析 (8)4.2运行结果及界面介绍 (22)第五章后记 (27)第一章课程设计的目的和要求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语言实现了五子棋游戏,能进行基本的五子棋操作。
五子棋课件
五子棋课件一、教学内容本节课的教学内容选自小学数学教材第七册第五单元“五子棋”,本节课主要内容是让学生掌握五子棋的规则,提高学生的逻辑思维能力和策略运用能力。
二、教学目标1. 学生能够理解并掌握五子棋的规则,能够自主进行五子棋游戏。
2. 学生通过学习五子棋,能够提高观察能力、思考能力和解决问题的能力。
3. 学生在游戏中能够体会到数学的乐趣,增强对数学学科的兴趣。
三、教学难点与重点重点:五子棋的规则的理解和运用。
难点:学生在游戏中能够灵活运用策略,提高获胜的概率。
四、教具与学具准备教具:五子棋棋盘、棋子。
学具:五子棋棋盘、棋子、学习单。
五、教学过程1. 实践情景引入:教师出示一个五子棋棋盘,让学生观察并说出自己对五子棋的了解。
2. 自主学习:学生自主阅读教材,了解五子棋的规则。
3. 讲解示范:教师通过讲解和示范,让学生明确五子棋的规则。
4. 小组讨论:学生分小组进行讨论,交流自己对于五子棋的理解和策略。
5. 游戏实践:学生进行五子棋游戏,教师巡回指导。
7. 课后作业:学生完成学习单上的练习题,巩固所学知识。
六、板书设计五子棋规则:1. 双方轮流下棋,先将五个棋子连成一条线的玩家获胜。
2. 棋子只能放在空格上,不能放在已经有棋子的格子上。
3. 横、竖、斜方向都可以连成一条线。
七、作业设计1. 请用一句话描述五子棋的规则。
答案:五子棋是双方轮流在棋盘上下棋,先将五个棋子连成一条线的玩家获胜。
2. 请列举三种你认为可以提高获胜概率的策略。
答案:策略一:先占据棋盘中心位置;策略二:尽量避免让对方形成连线;策略三:寻找对手的弱点进行攻击。
八、课后反思及拓展延伸课后反思:本节课学生对于五子棋的规则掌握情况较好,但在实际游戏中,部分学生不能灵活运用策略,需要在今后的教学中进行针对性的指导。
拓展延伸:教师可以引导学生进行五子棋的变种游戏,如九子棋、十一子棋等,提高学生的逻辑思维能力和问题解决能力。
重点和难点解析一、教学内容本节课的教学内容选自小学数学教材第七册第五单元“五子棋”,主要内容包括五子棋的规则、棋盘的认识以及基本的策略。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西南交通大学程序语言综合课程设计五子棋游戏课程《程序语言综合课程设计》学院信息科学与技术学专业软件工程姓名学号 20119050日期 2016年月日目录第一章课程设计的目的和要求 (3)1.1 课程设计的目的 (3)1.2 课程设计的要求 (3)1.3 课程设计的实验环境 (3)第二章功能描述 (4)第三章总体设计 (5)3.1 功能模块设计 (5)3.1.1 任务执行流程图 (5)3.1.2 下棋函数流程图 (6)3.2 数据结构设计 (7)3.2.1 定义结构体 (7)3.2.2 定义数组 (7)3.2.3 全局变量 (7)3.3 函数功能描述 (7)第四章程序实现 (8)4.1源码分析 (8)4.2运行结果及界面介绍 (22)第五章后记 (27)第一章课程设计的目的和要求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语言实现了五子棋游戏,能进行基本的五子棋操作。
程序能实现界面的初始化功能、下棋功能、人机智能对战功能、胜负判断功能、悔棋功能、读档及存档功能,通过键盘操作控制下棋。
(1)显示欢迎界面。
在游戏开始时出现一个欢迎的界面同时介绍了游戏的规则;(2)初始化功能。
程序初始化屏幕和棋盘,默认玩家先行。
(3)下棋操作。
利用W、S、A、D及空格键实现下棋操作,在下棋过程中能随时按ESC键退出。
(4)人机智能对战功能。
电脑根据玩家的下棋对棋盘进行智能分析,然后下棋,实现人机对弈。
(5)悔棋功能。
玩家可以有三次悔棋机会。
(6)胜负判断功能。
程序能对下棋的结果进行判断,分出胜负。
并显示获胜方。
(7)读档、存档功能。
游戏中途退出会提示是否存档,如果存档,则下次开始的时候会提示是否读档继续上次的游戏。
第三章总体设计3.1 功能模块设计3.1.1 任务执行流程图3.1.2 下棋函数流程图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();第四章程序实现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();}3、输出棋盘void chessboard(){//清屏system("cls");//输出棋盘的上边缘printf(" 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 \n");printf(" ┏━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┳━┓\n");printf(" ┃│││││││││││││││┃\n");for(int i = 1; i <= 15; i ++){//输出列序号及相应的列元素printf("%02d┣─", i);for(int j = 1; j <= 15; j ++){switch (board[i - 1][j - 1]){//(由于在命令行模式下显示,所以,颜色是颠倒的)case ' ': printf("┼─"); break; //如果当前位置无子,则输出棋盘case 'h': printf("○─"); break; //如果是黑子,则输出黑子的符号case 'b': printf("●─"); break; //如果是白子,则输出白子的符号case 'g': printf("⊙─"); break; //显示光标}}//输出每列的最后一个制表符printf("┫%02d\n", i);printf(" ┃│││││││││││││││┃\n");}printf(" ┗━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┷━┛\n");printf(" 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 \n");}4、下棋void play(point &r){char key, c;do{while (! strchr("ADWSZ", key = toupper(getch()))){if(key == 27 || key == 32) break;putchar('\a');}switch(key){case 'A': //向左if(r.y <= 1) break;else r.y --;c = board[r.x - 1][r.y - 1]; //记录光标board[r.x - 1][r.y - 1] = 'g';chessboard();board[r.x - 1][r.y - 1] = c;break;case 'D': //向右if(r.y >= 15) break;else r.y ++;c = board[r.x - 1][r.y - 1];board[r.x - 1][r.y - 1] = 'g';chessboard();board[r.x - 1][r.y - 1] = c;break;case 'W': //向上if(r.x <= 1) break;else r.x --;c = board[r.x - 1][r.y - 1];board[r.x - 1][r.y - 1] = 'g';chessboard();board[r.x - 1][r.y - 1] = c;break;case 'S': //向下if(r.x >= 15) break;else r.x ++;c = board[r.x - 1][r.y - 1];board[r.x - 1][r.y - 1] = 'g';chessboard();board[r.x - 1][r.y - 1] = c;break;case 32: //SPACE空格if(board[r.x - 1][r.y - 1] != ' ') key = 0; //key的值修改为非32的数值else{board[r.x - 1][r.y - 1] = 'b';back[0] = r.x - 1; back[1] = r.y - 1; //记录当前位置,便于悔棋chessboard();}break;case 'Z': //悔棋BackStep(back);break;case 27: //ESC退出printf("Game Over!\n");printf("是否存档?(Y/N)\n");if((c = toupper(getch())) == 'Y' && SaveLoad())printf("存档成功!\n");exit(1);default:fflush(stdin);}}while(key != 32);}注:1、W、S、A、D分别表示上下左右键。