UML五子棋设计
五子棋概要设计
五子棋概要设计2.1引言2.1.1 编写目的本阶段已在系统的需求分析的基础上,五子棋在线游戏系统做概要设计。
主要解决了实现该系统需求的程序模块设计问题。
包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及模块结构的设计等。
在以下的概要设计报告中将对在本阶段中对系统所做的所有概要设计进行详细的说明。
在下一阶段的详细设计中,程序设计员可参考此概要设计报告,在概要设计对五子棋在线游戏系统所做的模块结构设计的基础上,对系统进行详细设计。
在以后的软件测试以及软件维护阶段也可参考此说明书,以便于了解在概要设计过程中所完成的各模块设计结构,或在修改时找出在本阶段设计的不足或错误。
2.1.2背景1.该软件系统的名称:五子棋在线游戏系统;2.项目开发者:李恒昌(组长)、张昕、周肖肖、刘入滔、车娜;3.项目任务提出者:课程设计安排的需要;4.用户:所有玩家;5采用单击玩游戏。
2.1.3定义禁守:对局中禁止使用的战术或被判负的行棋手段。
长连:相同颜色相连的六子或六子以上(不过这种情况是不会出现的)。
服务器:创建游戏或加入游戏时需要连接主机IP2.1.4参考资料《软件工程及其应用》周苏、王文等天津科学技术出版社 1992/1 《软件工程》张海藩清华大学出版社 1990/112.2总体设计2.2.1需求规定五子棋在线游戏系统,要求有至少3个大的功能模块:通讯模块,交互界面,智能模块(计算机可以作为一方加入使得实际玩家人数不多的时候增加人气)其主要功能包括以下几点:棋盘采用19×19围棋棋盘本系统追求操作简单、高效、智能一方创建游戏,另外一方可以加入游戏修改玩家姓名能完成模式选择功能双人对战具有通讯功能选择界面颜色能判断胜负第三者可以进入游戏界面观战2.2.2运行环境硬件配置(推荐):CPU:P4—1GHZ或更高内存:128M或更多显示器分辨率:800x600或更高运行本软件的系统平台:Windows xpWindows 2000Windows 2000Windows7Windows 2003开发工具:Java2.2.3基本设计概念和处理流程1.界面以及落子处理1. 利用参数创建一个Socket的实例来完成和服务器之间的信息交换2.使用19×19围棋棋盘的状态,以1表示放黑子的位置,以-1表示放白子的位置;3.以鼠标的状态提示当前持子的一方;4.加载棋子资源(黑、白棋子),当鼠标在棋盘上点击的时候产生事件,处理鼠标的位置产生对应的棋盘坐标位置;5.判断落子出是否可以落子:不可以则不做任何处理,不改变鼠标的状态;可以落子,则打印对应的棋子图像,记录棋盘位置,并将位置传递给判定函数;6.交换持子方,重复落子过程,直到判定函数产生胜出结果7. 一方获胜时的对棋局的处理: 清除所有的棋子, 将保存所有黑棋和白棋的位置坐标的数组清空,为西一盘棋做准备, 如果黑棋获胜,计算双方获胜盘数,将双方的战绩比在状态文本框显示出来,白棋获胜,同上2.五子棋判胜本功能模块主要对游戏的胜负进行判定.1.由玩家输入棋子所在位置,由系统判定胜负,若胜,则游戏结束;否则,游戏继续.2.五子棋的判胜条件即为5个相同的棋子连在一条线上.如图,黑子在下一步吉黑子获胜:3.若棋盘下满,仍未有五子连线,则判和2.2.5功能需求与程序的关系2.2.6人工处理过程2.2.7尚未解决的问题2.3接口设计2.3.1用户接口2.3.2内部接口2.3.3外部接口2.4运行设计2.4.1运行模块组合2.4.2运行控制2.4.3运行时间2.5系统数据结构设计2.5.1逻辑结构设计要点2.5.2物理结构设计要点2.5.3数据结构与程序的关系2.6系统出错处理设计2.6.1出错信息2.6.2补救措施2.6.3系统维护设计。
程序设计课程设计五子棋实验报告(附代码)
程序设计课程设计报告书
1、引言
1.1 编写目的
学会 MFC 的一些基本操作,会使用其中的部分函数,编写一个五子连珠的小游戏, 游戏由两人对弈,用鼠标操作,执黑子者先下。
1.2 读者对象
计算机专业的学生或对编程感兴趣的学生
1.3 软件项目概述
项目名称:五子棋游戏 简称:五子棋 项目代号:无 软件项目的大致功能和性能要求
4、界面要求
人机界面要容易操作,有比较舒适的背景,遇到禁手、悔棋、保存、胜利 等可弹出对话框。人机交互和谐。
5、测试方案
1. 检验判断胜利:
6
程序设计课程设计报告书
若胜利,则弹出对话框,并显示是何种胜利 2. 检验禁手
7
程序设计课程设计报告书
以上仅列出六种禁手,当然还有跟多情况 3. 检验保存
当按下“保存”图标菜单时,会弹出对话框,可给棋局取个文件名,如“1” 然后单击“保存(S)” 4. 检验打开 重现打开游戏,按下“打开”图标菜单,现在打开“1” 会显示对话框,选择要打开的文件“1” 单击“打开”,则会复盘,显示上次未完成的游戏,继续对弈 5. 悔棋(有个撤销按钮,不便验收展示) 6. 综上,基本实现新局、保存棋局、打开棋局、悔棋、禁手、判断胜利
1.1 编写目的..............................................................................................................................4 1.2 读者对象..............................................................................................................................4 1.3 软件项目概述......................................................................................................................4 1.4 文档概述..............................................................................................................................4 1.5 定义......................................................................................................................................5 1.6 参考资料..............................................................................................................................5 2、任务概述....................................................................................................................................... 5 2.1 目标....................................................................................................................................... 5 2.2 软件的开发和运行环境.......................................................................................................5 2.3 用户特征..............................................................................................................................5 2.4 假设与约束..........................................................................................................................5 2.5 进度要求..............................................................................................................................5 2.6 验收要求...............................................................................................................................5 3、功能需求描述............................................................................................................................... 6 3.1 基本功能........................................................................................... 错误!未定义书签。 3.2 增加功能........................................................................................... 错误!未定义书签。 4、界面要求....................................................................................................................................... 6 5、测试方案....................................................................................................................................... 6 6、功能设计..................................................................................................................................... 10 6.1 类的关系描述.....................................................................................................................10 6.2 类的设计............................................................................................................................. 11 7、使用指南..................................................................................................................................... 11 8、维护接口..................................................................................................................................... 11 9、总结............................................................................................................................................. 12
人工智能课程设计报告-五子棋
目录1.五子棋简介——- —- - ——- - - - —- - - —- - ——- - —- ————————32.需求分析———- —- —- ——- —- ———- - —- - - ————- ——- —- - 33.主要名词说明- ——- - - - - - - ————- ———- ——- ——————- —- 34.主要算法———- - - - - - - —- - - —- - - - ————- ——- —- - —- —- - 45.程序运行界面展示- - ———- ——————- —- - - - - - ——-——- - ——- 76.不足说明——————- - - ——- - —- ——- —- —- —- —- - - —- —- - —- 87.心得体会- —- - - - - —- - ——- —- —- ——- - - - ——- —- -——- - —- 81、五子棋简介选择五子棋游戏作为本设计的课题,是因为该游戏的规则简单,所涉及的方向比较少。
这样才能将问题的重点放在人工智能解决上,而非规则的解决,有更多的精力放在高效算法的优化。
希望能通过本次系统的设计,整合所学的知识,实现从理论到实践上的升华。
五子棋是起源于中国古代的传统黑白棋种之一。
现代五子棋日文称之为“连珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠"、“五目"、“五目碰"、“五格"等多种称谓。
它不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快",又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
uml大作业五子棋的uml建模
2013——2014 学年第二学期软件学院《UML建模》综合设计实验五子棋的UML建模班级2013级.Net学号***********姓名张兵豪任课教师薛均晓一需求分析1.1 五子棋功能需求五子棋标准玩发。
该系统可进行人机对战,人人对战,联网对战,观战。
玩家可创建个人用户,查看编辑个人信息,查看对战信息,隐藏个人信息,隐藏个人战绩。
管理员查看用户信息,对用户进行封号,禁言处理。
大厅和游戏进行中进行聊天,观战玩家不在同一聊天频道。
➢玩家创建个人用户,编辑个人信息,查看个人信息➢玩家隐藏个人信息,隐藏个人战绩➢玩家选择对战模式➢玩家观战➢不同聊天频道聊天➢五子棋游戏规则,输赢判断,悔棋,和棋➢管理员登陆➢管理员查看个人信息➢管理员对玩家禁言封号根据以上分析,给出系统功能图1.1.1 参与者玩家,管理员1.1.2 用例的事件流描述部分主要事件流:①用例编号:001用例名:用户登录用例描述:用户根据自己的用户名和密码,登录到游戏参与者:玩家,管理员基本路径:1、玩家登陆游戏2、玩家输入用户名和密码3、玩家提交输入信息;4、系统对用户的账号和密码进行有效性检查;5、系统记录并显示当前登录用户;6、玩家进行权限范围内的相关操作;7、系统允许进行权限范围内的相关操作操作;扩展点:用户的账号或者密码错误1.系统弹出提示信息错误的窗口2. 用户离开或重新登陆②用例编号:002用例名:玩家编辑信息用例描述:玩家编辑个人信息,修改个人信息,隐藏个人信息参与者:玩家前置条件:系统正常运行时间基本路径:1、系统确认用户已登录;2、玩家编辑个人信息,修改个人信息,隐藏个人信息3、玩家确认,系统上传更新数据库4、退出系统或进行其他权限范围内的操作。
③用例编号:003用例名:五子棋用例描述:五子棋基本玩发,对战模式,观战参与者:玩家前置条件:五子棋系统正常运行时间基本路径:1、系统确认用户已登录2、玩家选择对战模式(人人对战,人机对战,联网对战)3、黑棋先落子,白棋后落子,交替进行4、玩家选择是否悔棋5、玩家选择是否请求和棋6、当有一方棋子先连成五子即为胜利7、系统记录成绩,更新个人战况(胜率,逃跑率,总局数,胜利局数,失败局数),上传数据库8、其他玩家和观战正在进行的棋局9、聊天窗口分为大厅频道,观战频道,对战频道,互相独立用例编号:004用例名:管理员管理玩家用户用例描述:管理员对玩家进行禁言封号处理参与者:管理员前置条件:系统正常运行后置条件:若管理员登陆成功,则管理员可以对玩家进行禁言封号处理;否则管理员不可执行该操作。
五子棋人机对战设计任务书
五子棋人机对战设计任务书目录1.系统需求分析 ............................................................................................................... 错误!未定义书签。
2.总体设计 ....................................................................................................................... 错误!未定义书签。
3.详细设计 ....................................................................................................................... 错误!未定义书签。
4.系统调试 ....................................................................................................................... 错误!未定义书签。
5.使用说明 ....................................................................................................................... 错误!未定义书签。
6.编程体会 ....................................................................................................................... 错误!未定义书签。
五子棋游戏程序的设计报告
计算机学院网络工程专业《程序设计综合课程设计》报告(2011/2012学年第一学期)学生姓名:学生班级:网络工程学生学号:指导教师:2011年12月30日双人五子棋目录第一章课程设计目的和要求 (1)1.1课程设计的目的 (1)1.2课程设计的要求 (1)第二章课程设计任务内容 (2)2.1课程设计的主要内容 (2)2.2系统设计原则 (2)第三章设计说明 (3)3.1游戏分析和介绍 (3)3.1.1游戏分析 (3)3.1.2游戏介绍 (3)3.2重点模块说明 (3)3.2.1棋盘界面Showboard() (3)3.2.2下棋Play() (4)3.2.3覆盖棋盘Recoverboard() (7)3.2.4游戏结束后初始化棋盘Unitboard() (7)3.2.5保存棋盘CopyB() (8)3.3函数清单 (8)3.4接口 (9)第四章软件使用说明 (10)4.1测试 (10)4.2限制条件 (13)第五章课程设计心得体会 (14)附录一程序流程图 (15)附录二程序代码 (16)附录三参考文献 (26)第一章课程设计目的和要求1.1课程设计的目1,学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。
2,全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计.3,掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。
4,运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。
1.2课程设计的要求1,与同学合作设计、编制、调试出一款双人五子棋游戏,并单独完成其中一定量的函数模块。
2,要求该游戏具有趣味性和可操作性,能够正常运行。
其中用到C++语言中的各种语句、结构。
(如其中需要注意全局变量和局部变量的申明,数组的使用等)3,双人五子棋要求能够进入欢迎界面,二人对弈,当有五颗同色棋子相连时,判断出输赢等一系列游戏流程。
软件工程课程设计面向对象(五子棋)
海南大学信息科学技术学院课程设计报告设计课程:软件工程设计课题:五子棋游戏开发*名:***专业:计算机科学与技术班级:08 级(1)班同组人员:向俊龙、罗秋兰、陈小燕、赵梦、辜武斌、全克杰、徐纯金指导教师:**目录问题概念 (3)序言 (4)选题背景 (4)开发目的娱乐 (5)销售 (6)可行性研究 (3)可行性研究前提 (5)可行性研究任务技术可行性 (5)经济可行性操作可行性社会因素系统开发打算 (4)系统要求 (4)实施打算支持条件用户需求 (5)模型分析 (6)模型设计 (7)代码 (7)界面设计 (8)测试 (9)总结 (9)基于JAVA五子棋一、问题概念序言随着运算机技术的飞速进展和物联网时期的开启,愈来愈多的人被吸引到了这股运算机风来。
在今天,运算机已经与人们的生活息息相关,尤其是由信息技术推动和基于因特网而兴起的电子游戏,已经成为大人小孩日常休闲的一种必不可少的方式,已经成为人们普遍同意的一种崭新的休闲娱乐方式。
面对现今猛烈的商业竞争,商业主纷至沓来,纷纷进入游戏那个缤纷的世界,伸展拳脚。
游戏公司也纷纷开启,在那个游戏大潮中大展身手。
游戏作为一种娱乐方式,古已有之,随着社会经济生活的日趋丰硕多彩,游戏自身也在发生各类转变,从手动游戏,到桌面游戏,以至此刻的电脑游戏,显得日趋兴隆,转变出迷人的色彩。
相信在不远的以后,随着电子技术的飞速进展,电脑游戏会迅猛进展,以一种更新更有趣的方式呈此刻咱们眼前。
选题背景随着运算机技术的飞速进展和物联网时期的开启,必然带动了游戏界的迅猛进展,电脑游戏在中国的显现和进展最先要追溯到上世纪80年代初,80年代初期,中国的一些儿童娱乐场和青年活动中心所第一显现了街机这种那时只是供青青年娱乐的大型电子玩具。
在那时,这种大型街机还很简陋,游戏画面相对而言是很一样,游戏种类也很少,不外乎也确实是任天堂公司的《超级玛利》、《大金刚》,还有《小蜜蜂》之类。
大约到了1986年左右,一种黑白液晶掌上游戏机在学校普及起来。
五子棋游戏程序设计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高级实用程序设计 王士元 清华大学出版社
❖菜单窗口和菜单项的生成
生成背景图象,在指定位置显示菜单项文字
❖光条的生成
光条的产生及光条在光标键的控制下而移动(保存与再现)
❖键识别
当按下菜单上的选项(如:功能键或光标移动键)时,根据键值 转入相应的功能处理
❖菜单的连接 ❖功能执行
屏幕文本移动与存取函数
五子棋游戏总体设计与实现
4。
系统总体设计与实现4.1 总体设计分析总体设计是软件开发过程中的另一个重要阶段,在这一阶段中将根据需求分析中提出的逻辑模型,科学合理地进行物理模型的设计。
这个阶段的主要目标是将反映用户信息需求的逻辑方案转换成物理方案,并为下一阶段提供必要的技术资料。
4.1。
1 总体设计原则(1)整体性:软件是作为统一整体而存在的.因此,在总体设计中要从整个软件的角度进行考虑。
(2)灵活性:为保持软件长久的生命力,要求该手机游戏软件具有很强的环境适应性.为此,游戏软件应具有较好的开放性和结构的可变性.(3)可靠性:可靠性是指软件抵御外界干扰的能力及受外界干扰时的恢复能力.(4)经济性:经济性是指在满足游戏软件需求的前提下,尽可能地减小游戏软件的开销。
4。
1。
2 软件模块总体设计软件中各模块之间的关系通常利用层次图来表示。
它是一种一系列多层次的用树形结构的矩形框描绘数据的层次结构框图.一个单独的矩形框作为树形结构的顶层,各个数据的子集由下面的各层矩形框代表,最底层的各个矩形框代表组成这个数据的实际数据元素(不能再分割的元素),它代表完整的数据结构。
这模式非常适合于需求分析阶段的需要,层次方框图对数据结构描绘随着结构精细化也越来越详细。
反复细化沿着图中每条路径,从对顶层信息的分类开始,直到确定了数据结构的全部细节为止。
图4-1 游戏功能结构本研究中将游戏软件分为三大模块,如图4-1所示,包括:游戏选项、游戏设置和帮助.按照在调研中搜集的资料对每个模块的功能进行编排制作。
依据上述功能的分析,本研究中,将游戏软件在三大模块的基础上又对每一大模块又分为几个子模块:游戏选项包括六个模块:开始游戏、重新游戏、悔棋、认输、背景音乐和退出游戏。
游戏设置包括三个模块:先后手设置、棋盘底纹颜色设置和棋盘大小设置。
帮助包括两个模块:游戏帮助和关于。
4。
2 游戏设计4。
2。
1 游戏前的准备本游戏在开发之前需要做一些前期准备工作,尤其是对于精通五子棋游戏的Java 游戏开发者来说。
软件工程基础-6面向对象技术与UML(参考)
委托分离 多重继承分离
基本原则之LoD
Law of Demeter (迪米特原则)又叫最少知识原则,不和陌 生人说话原则
一个软件实体应当尽可能少的与其他实体发生相互作用 在一个对象的方法中,只能给下述(熟人)对象发送消息
该对象自己 这个方法的一个参数 该对象的一个属性 该对象的一个属性集合中的一个元素 在该方法中创建的一个对象
创建者
尽可能少的建立对象之间的耦合和依赖关系 一般情况下,只在下列情况下才由类A来创建类B,即A是B
的创建者: 1.A是B的聚合 2.A是B的容器 3.A持有初始化B的信息(数据) 4.A记录B的实例 5.A频繁使用B
低耦合
低耦合降低了因一个类的变化而影响其他类的范围,而且让类 更简单,更容易理解
面向对象设计基本原则
SRP
CARP
OCP
ISP
DIP
LoD
LSP
基本原则之SRP
Single Responsibility Principle(单一职责) 每一个类应该专注于做一件事情 SRP是低耦合高内聚在面向对象原则上的引申 职责过多,可能引起它变化的原因就越多,将会导致职责依赖
,相互之间就会产生影响,从而影响内聚性和耦合度 OOD的实质就是合理分配类的职责
抽象性低
基本特性之多态
不同子类对同一消息做出的不同反应 多态允许将子类类型的指针赋值给父类类型的指针,亦即子类
重新定义父类的虚函数 多态是晚绑定(运行时确定子类的虚函数地址) 多态的主要目的是提升代码的可扩展性 适度使用多态可以简化程序流程,提升代码的可维护性 多态的滥用,会给程序添加不必要的复杂性,增大理解难度 应追求“中庸”
五子棋程序设计报告参考模板
五子棋程序设计报告班级:姓名:学号:指导老师:2012/1/07一、课程设计题目与要求题目:网络五子棋游戏。
功能要求:该软件应包括服务器端程序和客户端程序两个部分,要求实现的功能如下。
客户端功能要求:(1)友好的用户登录界面设计;(2)登录服务器后,请求用户列表;(3)相其他用户发出邀请,做游戏;(4)当用户加入或离开时,客户端接受服务器发送的成员列表,更新用户列表;(5)当用户开始游戏或游戏结束时,服务器通知客户端用户更新该用户状态,客户端接受该消息后,更新该用户状态;(6)根据五子棋的游戏规则实现五子棋的游戏功能,包括游戏判断、画图等。
服务器端功能要求:(1)服务器接受用户注册信息,服务器最多容纳64 个成员,成员信息包括:用户名、IP 地址、端口和状态,当服务器退出时,保存用户信息;(2)当用户加入或退出,服务器向所有用户发送成员列表,通知客户端更新成员列表;(3)当用户开始游戏或者结束游戏时,服务器通知其他用户更新该用户状态,通知客户端更新成员状态;(4)和客户端一起维护游戏的进行,发送游戏信息。
二、需求分析以及模型框架1. 五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。
而且我对五子棋有着独特的爱好,希望自己也可以编写出一款可以实现人机对战的五子棋游戏。
把自己的思想付给电脑,让自己有些成就感,给自己继续努力的动力。
借此次课程设计的机会,把想法变成现实。
而且五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。
它是中西文化的交流点,是古今哲理的结晶。
所以此次c++课程设计选择五子棋这个题目。
2.程序所实现的功能通过给电脑赋予人工智能,利用电脑运算速度快的特点,结合五子棋的游戏规则,给电脑设定固定的扫描方式,设定权值,使电脑能够选择最合适的落子点,然后调用加载已做好的棋盘棋子图像,最终实现简单的人机对弈。
基于UML的五子棋的分析与设计
的优 先走 步 的估 计 , 这个 估计 通过 对 博弈 树的 叶结 点用一种 估值 函数 的办 法来 实现 。
1 2 估 值函 数 .
博 弈树 将对 垒的初 始棋 局作为 根结 点 , 所有 把 由初 始棋 局 经过 合法 一 步得 到 的 新 棋 局作 为 其孩 子结 点 , 后 以新棋 局 为根 , 产 生 的棋 局 为 其孩 然 再 子结 点 , 依次 类 推 , 到 一棵 包 括 对 垒 中各 种 可 能 得 棋局变 化 的树 , 并通 过对这 棵 树遍历 分 析确定 计算 机的走步 。在 构造 一棵博 弈树 时 , 算机 的 目的是 计 寻 找一步 好棋 , 然后 走完这 一步 , 等待 对 方 回手 , 并 从这 个新 的位置 , 并再 次寻 求一步 好 棋 。 由于 时空 限 制 , 弈 树 的实 际深 度 不 可 能达 到 游戏 最 长 的、 博 有效 序列 的长 度 。 以设置 初级 、 级 、 级三 个档 可 中 高
Ke y wor : a -lyn o jc- re t d; ds g me- a ig; be to in e UM L mo eig p - dl n
1 算 法分 析
1 1 博弈树 .
次, 从而 减少博 弈 树搜索 深度 。在 对 垒过程 中计 算
机方 要战 胜对 方 , 它必 须有一 个为 它 获胜机 As n xa p e, Go ng a — l yi g a e m l ba g me p a n pr gr m wa s ud e . I t e l o ihm g me r e o a s t id n h a g r t a t e me ho s u e t d i s d.Th tma oc to fc e s e op i ll a i n o h s man mo e nti e r he u n nd mi max va u v me s s a c d by pr ni g a ni le
五子棋游戏软件工程课程设计
软件工程设计专业:班级:姓名:学号:指导老师:目录第一章需求分析 (1)1.1总体分析 (1)1.2初始化 (1)1.3主循环控制模块 (1)1.4玩家下子 (1)1.5盘面分析填写棋型表 (2)1.6对方下子 (2)1.7胜负判断 (2)第二章功能描述 (3)2.1功能模块图 (3)2.2功能说明 (3)第三章系统设计 (4)3.1流程图 (4)3.2流程图说明 (5)第四章运行结果 (6)第五章总结 (7)附录一源代码 (8)五子棋游戏第一章需求分析1.1 总体分析软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的关键一步。
对于任何一个软件而言,需求分析工作都是至关重要的一步。
只有通过软件需求分析,才能把软件的功能和性能由总体的概念性描述转化为具体的规格说明,进而建立软件开发的基础。
实践表明,需求分析工作进行得好坏,在很大程度上决定了软件开发的成败。
软件需求分析的任务是:让用户和开发者共同明确将要开发的是一个什么样的软件。
具体而言,就是通过对问题及其环境的理解、分析和综合,建立逻辑模型,完成新软件的逻辑方案设计。
基于本游戏,首先得为整个棋盘建立一张表格用以记录棋子信息,我们使用一个15*15的二维数组Table[15][15](15*15是五子棋棋盘的大小),数组的每一个元素对应棋盘上的一个交叉点,用‘0’表示空位、‘1’代表己方的子、‘2’代表对方的子;这张表也是今后分析的基础。
在此之后还要为两个玩家双方各建立一张棋型表Computer[15][15][4]和Player[15][15][4],用来存放棋型数据。
1.2 初始化首先,建立盘面数组Table[15][15]、对战双方的棋型表Computer[15][15][4]和Player[15][15][4]并将它们清零以备使用;然后初始化显示器、键盘、鼠等输入输出设备并在屏幕上画出棋盘(棋盘可以不显示)。
1.3 主循环控制模块控制下棋顺序,当轮到某方下子时,负责将程序转到相应的模块中去,主要担当一个调度者的角色。
软件工程课程设计--五子棋游戏
计算机工程系课程设计报告课程名称:软件工程课程设计题目:五子棋游戏班级 2013级计科(4)班姓名许婷娜学号 ***********2015年12月27日目录1. 引言 (1)1.1系统的开发背景(可行性分析) (1)1.2 系统简介 (2)1.2.1系统介绍 (2)1.2.2开发本系统所做的工作 (2)2. 需求分析 (3)2.1 需求的描述与分析 (3)2.2 需求定义 (3)2.2.1 功能需求 (3)2.2.2 性能需求 (4)3. 系统设计 (4)3.1总体设计 (4)3.1.1设计思想 (4)3.1.2五子棋游戏的功能的结构图 (5)3.2程序设计分析 (5)4. 五子棋游戏的详细设计 (6)4.1五子棋游戏的主窗口界面 (6)4.2五子棋游戏的核心模块的详细设计 (10)4.2.1五子棋游戏程序核心代码 (10)4.2.2五子棋游戏程序主面板与鼠标事件 (13)4.2.3五子棋游戏程序流程图 (17)4.3五子棋游戏的游戏功能模块的详细设计 (18)4.3.1五子棋游戏的开局功能模块 (18)4.3.2五子棋游戏的棋盘功能模块 (18)4.3.3五子棋游戏的模式功能模块 (19)4.3.4五子棋游戏的退出功能模块 (19)4.4五子棋游戏的外观功能模块的详细设计 (19)4.5五子棋游戏的版本功能模块的详细设计 (20)5. 五子棋游戏的测试 (20)5.1系统测试的类型 (20)5.2测试举例 (21)5.2.1测试用户的对弈结果 (21)5.2.2测试用户切换棋盘类型功能 (22)5.2.3测试用户切换模式类型功能 (23)5.2.4测试用户切换外观类型功能 (24)5.2.5测试版本功能 (26)小结 (27)致谢 (28)参考文献 (29)1. 引言1.1系统的开发背景(可行性分析)人工智能是一门正在迅速发展的、新兴的、综合性很强的交叉科学。
它与生物工程、空间技术一起被并列为二十一世纪三大尖端技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单机版五子棋
UML设计
郑州大学信息工程学院
1.需求分析
1.1项目背景
五子棋是一种两人对弈的纯策略型汉族棋类益智游戏,棋具与围棋通用,由中国汉族人发明,起源于中国上古时代的传统黑白棋种之一。
主要流行于华人和汉字文化圈的国家以及欧美一些地区。
规则为双方交替落子,直到有一方下出五子连续,五子连珠为赢。
容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。
1.2项目技术支撑
使用UML语言进行需求分析设计;在Visual Studio 2010集成开发环境下用C++语言及.NET架构编写软件。
1.2.1 UML简介
Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。
面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。
它不仅统一了Booch、Rumbaugh 和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。
Grady Booch的描述对象集合和它们之间的关系的方法。
James Rumbaugh的对象建模技术(OMT)。
Ivar Jacobson的包括用例方法的方式。
还有其他一些想法也对UML起到了作用,UML是Booch, Rumbaugh, Jacobson。
UML已经被对象管理组织(OMG)接受为标准,这个组织还制定了通用对象请求代理体系结构(CORBA),是分布式对象编程行业的领头羊。
计算机辅助软件工程(CASE)产品的供应商也支持UML,并且它基本上已经被所有的软件开发产品制造商所认可,这其中包括IBM和微软(用于它的VB环境)。
UML规范用来描述建模的概念有,类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。
1.2.2 C++简介
C++是一种安全的、稳定的、简单的、优雅的,面向对象的编程语言。
它在继
承C强大功能的同时去掉了一些它们的复杂特性。
C++综合了VB简单的可视化操作、高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
[1]
C++是面向对象的编程语言。
它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
2系统概要分析
2.1 基本设计概念
本软件采用面向对象的设计方案,通过把对弈接口组件化,来实现界面设计与算法设计的完全分离。
2.1.1类模块结构
表1 类模块列表
表2 各个类中的属性和操作列表
上面所列出的属性和操作仅为public的属性和操作,private的变量、属性和操作这里没有给出定义,它们将在接口设计和系统数据结构设计中进行讨论。
另外TGobangAI是一个组件类,其中定义了三个比较特殊的事件属性,通过这三个事件,可以使界面设计更加灵活方便,这三个事件的功能在下表中给出:
表3 TGobangAI组件中的事件定义列表
2.1.3 尚未解决的问题
因为博弈算法中搜索引擎的改进是影响整个游戏智能化程度的关键,但是搜索算法有很多,现在还不能确定哪种搜索算法更适合于本游戏,这些算法的测试将在详细设计和编码调试时再进行。
2.2 接口设计
2.2.1 用户接口
用户的所有操作全部通过鼠标或者热键来完成。
开始游戏、悔棋、认输和结束游戏这些操作通过点击按钮、右键菜单或使用热键来完成。
棋色和水平选择通过点击单选框或右键菜单来完成。
游戏中棋子状态将直接反映在棋盘上,其他反馈信息(比如棋盘当前局面、走棋时间、棋谱等信息)将在单独的反馈信息栏中显示。
2.2.2 外部接口
本程序与其他比赛程序通过裁判程序(有比赛裁判委员会给出)来进行相互通讯,棋盘上落子通过鼠标事件的触发来完成,裁判程序将模拟这一鼠标事件。
裁判程序对棋盘状态的获取将直接根据棋盘颜色变化来检测。
2.2.3 内部接口
TGobangAI组件定义了界面和算法的接口,TGobangAI中聚合了TSearchEngine类的实例FSearchEngine,而TSearchEngine中聚合了TEvaluator 的实例FEvaluator。
通过这种设计,提高了系统的松散耦合性。
2.3.流程图
2.3.1主模块图
2.3.2 界面及图形模块
2.4 UML设计
2.4.1系统用例图
2.4.2动态交互图
2.4.3静态类图
2.4.4包图
2.4.5流程图
3.详细设计
3.1基本操作
3.1.1界面以及落子处理
1.使用二维数组Chessboard[15,15]储存棋盘的状态,以0表示没有放子的位置,以1表示放黑子的位置,以2表示放白子的位置;
2.以鼠标的状态提示当前持子的一方;
3.将棋盘作为图片的形式贴处在程序界面上;
4.加载棋子资源(黑、白棋子),当鼠标在棋盘上点击的时候产生事件,处理鼠标的位置产生对应的棋盘坐标位置;
5.判断落子出是否可以落子:不可以则不做任何处理,不改变鼠标的状态;可以落子,则打印对应的棋子图像,记录棋盘位置,并将位置传递给判定函数;
6.交换持子方,重复落子过程,直到判定函数产生胜出结果;
图2系统界面
3.2五子棋判胜
本功能模块主要对游戏的胜负进行判定.
1.由玩家输入棋子所在位置,由系统判定胜负,若胜,则游戏结束;否则,游戏继续.
2.对胜负判定需先确定一个中心棋子位置.
3.由一个中心棋子可以引出四条线形成五子连一线.
4.判定过程中注意越界现象.
概要设计
1.五子棋的判胜条件即为5个相同的棋子连在一条线上.
2.以一个棋子为中心,有4条线可以形成五子连线.如图所示:(描红的为中心棋子)
3.中心棋子即为最后一步所下棋子.
4.以1线为例,从中心棋子出发(设为白子),先向左进行判断,若棋子为白子,则计数器加1(初始值为1),否则(为黑子或无子),则返回中心棋子,向右进行判断,进行相同操作.
5. 1线判定结束后,若计数器为5,则判白子胜,否则,计数器归1,再从2,3,4线按顺序进行判定.
6.棋盘的每个坐标有3个状态,分别为无子(标记为0),白子(标记为1),黑子(标记为2),对棋盘点进行判断时,只需判定其所在状态即可。
7.若棋盘下满,仍未有五子连线,则判和。
图3 五子棋判胜流程图
4.软件实现与测试
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。
执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
软件测试的目的:
(1)测试并不仅仅是为了找出错误。
通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;
(2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;
(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
5、运行结果
5.1 首先进入游戏界面,然后可以选择难度
玩家可以选择人人对战可和人机对战两个模式
玩家开始游戏
当白棋快赢的时候或手勿玩家想回步的时候可以选择悔棋(但只能悔棋一步)
悔棋后到上一步
6.总结
经过系统的设计与实现,一个能够实现人机对战和人人对战的局域网五子棋系统基本完成。
总结全文的工作,具体概括如下:
对游戏逻辑模块进行优化,进一步提高时间性能和可扩展性,以适应将来新的需求和变化。
此外电脑落棋算法也有待进一步改进,这里采用的是循环遍历算法。
7.附录7.1源代码。