软件架构Word文档下载推荐.docx
《软件架构Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《软件架构Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
作为人智能研究的一个重要分支,计算机博弈是检验人工水平的一个重要方面。
它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影响。
五子棋人机对弈是计算机博弈中的一种。
研究其计算机算法,可以让我们看到人工智能的稚形,也有助于我们人脑的开发。
五子棋是我国发明的,研究它可以让更多的外国人了解五子棋,这有助于我国优秀文化的推广。
关键词:
人工智能;
计算人机对弈;
五子棋;
JSP
前言
随着计算机技术的不断发展,网络技术的普及范围越来越广,网络能够提供的服务多样、便捷,已经成为人们生产生活中不可缺少的重要组成部分。
如今网络休闲游戏发展迅速,它凭借健康、方便、互动性强、益智等诸多优点,成为大部分现代人休闲娱乐的首选。
一、五子棋对弈程序的可行性分析
可行性分析是通过对项目的主要内容和配套条件,如市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等,从技术、经济、工程等方面进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行预测,从而提出该项目是否值得投资和如何进行建设的咨询意见,为项目决策提供依据的一种综合性的系统分析方法。
(一)经济可行性分析
主要是对项目的经济效益进行评价,本系统开发费用对于学员在经济上是可以接受的,并且本系统实施后可以让用户很好的对五子棋进行更加深入的研究,有助于开发用户智力。
(二)技术上的可行性
技术上的可行性分析主要技术条件是否顺利完成开发工作,硬、软件是否满足开发者的需要等。
该系统采用的简单的二层结构,数据库选用MySQL,它相对于其他的数据库来说,安装简单,灵活性、安全性和易用性为数据库编程提供了良好的条件。
因此,系统的软件开发平台已成熟可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,棋硬件平台完全能满足此系统的需求。
(三)管理上的可行性
主要是管理人员是否支持,现有的管理制度和方法是否科学,规章制度是否齐全,原始数据是否正确等。
规章制度和管理方法为系统的建设提供了制度保障。
综上所述,此系统开发目标已明确,在技术和经济等方面都可行,并且投入少、见效快。
因此系统的开发是完全可行的。
二、JAVA五子棋对弈现的需求分析
(一)用户需求分析
根据老师提出的要求,我们把系统的用户分为两类:
普通用户、系统管理员用户,下面是我们对两种用户的需求进行的分析:
1.普通用户主要需要:
根据分析,普通用户具有的功能:
(1)用户登录:
用户根据自己的密码登录本系统。
(2)棋局回放:
用户根据自己的需求回放自己以前下过的棋局。
(3)玩五子棋:
用户在点击playgame后会进入游戏界面玩游戏。
(4)悔棋功能:
在下棋过程中,用户根据自己的需求,选择悔棋。
(5)更改密码:
用户可以根据自己的需求更改自己的密码。
2.系级管理员主要需要:
系统管理员是本系统的最高权限的管理员,他不仅具有普通用户的各种功能,还具有他独有的功能一下是系统管理员所具备的功能:
(1)用户登录:
(2)棋局回放:
(3)玩五子棋:
(4)悔棋功能:
(5)更改密码:
(6)管理普通用户:
可以对普通用户进行添加和删除。
3、五子棋对弈系统的数据流图
(一)系统用例图:
(二)五子棋对弈系统的数据流图
数据流图(DataFlowDiagram):
简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
(3)用户登录数据流图(DFD)
在用户登录过程当中,用户输入的信息经过加工处理后,通过对数据库的查询后返回给程序该用户的权限,数据流图如下:
(四)普通用户界面显示数据流图(DFD)
知道用户权限后,通过查询用户游戏信息,显示用户游戏信息。
数据流图如下:
(五)管理员用户界面显示数据流图(DFD)
知道用户权限后,通过查询用户游戏信息和所有普通用户信息,显示用户游戏信息。
数据流图如下
(六)用户棋局回放数据流图(DFD)
四、JAVA五子棋对弈系统分析与设计
此系统为智力游戏,适合于各类游戏爱好者。
由于其经典性及其游戏的简单性,各类人士都可以也都爱玩。
人们在与电脑对战享受娱乐的同时,也会体会到自己的智力也会有所提升。
该款五子棋游戏功能虽然简单,但实现了人机,所以从这个角度来说,该款游戏需要电脑能准确的计算棋局。
虽然系统不大,但要在满足玩家的基本要求的情况下,电脑有一定的智能,能给于新手一定的帮助。
(一)系统设计总体思想、目标
本系统在结构设计中采用java的MVC模式,根据不同的功能划分不同的模块,该款五子棋游戏功能虽然简单,但实现了人机,所以从这个角度来说,该款游戏需要电脑能准确的计算棋局。
(二)五子棋人机对弈系统的ER模型
经过对系统的分析,我们将系统划分出了用户信息、用户棋局信息、用户棋盘信息、用户下棋信息等几个实体,其各个实体的属性如下:
用户信息:
用户名、用户密码、用户权限
用户棋局信息:
用户名、棋局编号、棋局创建时间
用户棋盘信息:
棋局编号、X轴坐标、Y轴坐标、棋子状态
用户下棋信息:
棋局编号、用户X坐标、用户Y坐标、电脑X坐标、电脑Y坐标
本系统的具体ER模型如下:
用户棋局ER图
用户棋盘ER图
图3-1整体ER图
整体ER图
(三)JAVA五子棋对弈系统结构、功能设计
1.系统结构设计
本系统主要针对用户提出的要求业务开发的系统,其结构设计情况如图所示:
2.系统功能模块设计
该款游戏主要由一下几个模块组成:
用户登录注册:
在玩五子棋之前,用户要先登录游戏,未注册的用户应该先注册,如果登录成功会跳到用户管理页面,登录信息错误会提示密码用户名错误。
人机对弈模式:
选择该模式可以实现人与电脑之间的对弈,电脑会智能的选择该在哪处下子,并会在每次下棋结束后判断是否有哪方已经获胜,如果获胜则结束本局游戏,并提示玩家游戏结束。
悔棋功能:
这个功能也是根据游戏的实际需求而存在的,在现实生活中难免有失误下错了棋,那么就需要悔棋。
此功能提供了悔棋功能,使得下棋的灵活性有所提高。
玩家若想悔棋,则只需选择悔棋按钮便可以重新下过刚才的棋,但只能悔一步棋。
棋局回放功能:
这个功能是更加用户需求设计的,该功能可以回放用户以前下过的棋局只要点击要回放的棋局,进入棋局回放页面,点击下一步就可以回放该棋局,点一下只能回放一步棋。
3.设计思路
1.本程序要实现五子棋的游戏功能,必须先有一个棋盘,所以,通过html中的表格画的,棋盘是17*17,表格中是一个层,通过改变其背景图片来表示有无棋子,是白棋还是黑棋。
另外还有一个按钮:
悔棋按钮,用于提供悔棋功能,界面还显示系统时间,用户提示用户当前时间。
2.对于下棋的操作,通过对该层鼠标事件监听器onclick,每次当用户点击鼠标时,先取得点击的坐标值,然后换算成对应棋盘上(即棋盘数组)的位置(数组的下标)。
3.判断此处是否已经有棋子,如果有则用javascript提示玩家重新下子,否则通过ajax把点击的数组传递给后台,通过后台处理返回给前台数据来改变样式,在此处画上棋子。
4.判断该颜色棋子的上下左右是否满足连续五个,是的话提醒相应玩家获胜,不是的话,更换玩家下棋。
5.对于玩家的更换是程序自动的,每次用户点击鼠标后,若本局还未结束则会变换玩家,从而画出对应黑方白方的棋子,直到有一方获胜程序结束。
4.程序设计分析
1.在网站的首页是登录界面,有登录和注册两个功能。
2.在登录成功会跳到用户信息页面,在该页面的右下角会列出该用户在最近5次,玩游戏的信息记录,点击该记录可以回放对应的棋局。
在信息下方有开始游戏和更改密码两个按钮。
3.绘制棋盘,17*17的方框,在方框处下棋子(实心黑白圆形)。
4.棋盘处于鼠标监听状态,当鼠标在棋盘上有点击操作的时候,程序会获得鼠标点击的坐标然后换算成对应的棋盘的位置,再判断此处是否有棋子,假如没有,那么在此处画出对应颜色的实心棋子,假如已经有棋子了,则提示玩家此处已经有棋子请重新下棋。
5.当用户点击表格中的层下完棋后,轮到电脑下子时,电脑会通过算法计算每个没有棋子的位置的重要性来选择最重要的位置下子。
6.当任何一方有五个棋子沿着横,竖,斜连在一起时,系统自动判断赢棋,并显示黑方或白方胜利。
棋局结束后,会返回用户信息页面。
7.程序流程如下图:
5类的设计
1)由于要用到数据库,所以设计了一个用来连接数据库的类BaseDao,其中包括了两个方法和4个变量,类图如下:
2)下图是关于数据库中对应的表的类图关系:
3)虽然有了用户相关类,但是无法操作数据库中的用户信息,所以设计了操作用户表的类UserDishDaoImpl,该类继承BaseDao,并且实现IUserDao类,类图如下:
4)对于用户每次玩游戏的信息操作,用UserDishDaoImpl实现了各种操作。
类图如下:
5)对棋盘的各种信息保存操作,用类UserQipanDaoImpl来实现。
其中类图如下
6)对每局棋及每盘棋的各种保存操作,用UserStepDaoImpl来实现,其中类图如下:
7)由于程序是人机对弈,电脑下棋算法用Computer类来实现,其中有电脑下棋算法,还有电脑判断输赢算法,类图如下:
8)本程序的时序图如下:
6五子棋对弈系统的数据库设计
1系统用户表
名称
编码
数据类型
备注
用户名
userName
varchar(255)
用户输入,Notnull约束,是表的主键
用户密码
userPwd
用户输入,Notnull约束
用户权限
userFlag
Int(11)
系统分配,Notnull约束,用于判断用户权限
2用户棋局表
棋局编号
dishId
系统自动分配,是该表的主键,Notnull约束
创建时间
playDate
Date
系统分配,Notnull约束
3用户棋盘表
系统自动分配,是改变的主键,Notnull约束
X轴坐标
X
是棋盘的X坐标,Notnull约束
Y轴坐标
Y
是棋盘的Y坐标,Notnull约束
状态
F
表示棋子状态,Notnull约束
4用户下棋信息表
下棋编号
stepId
电脑X坐标
pcX
是电脑该步棋的X坐标,Notnull约束
电脑Y坐标
pcY
是电脑该步棋的Y坐标,Notnull约束
用户X坐标
psX
是电用户该步棋的X坐标,Notnull约束
用户Y坐标
psY
是该表的外键,Notnull约束
五、系统实现
(一)用户登陆流程
1.获取用户输入的数据。
2.将用户输入的数据与数据库中的数据进行比较
3.根据比较的结果做出相应的反应
下面是用户登录的流程图和用户登录界面图。
用户登陆流程
(二)用户进入游戏(初始化数据库棋盘)流程
在用户登录游戏过后,可以看见界面上有按钮playgame,点击按钮可以进入游戏界面,在这个过程中程序初始化了棋盘,既在数据库中初始化了棋盘上的所有棋子具体的流程如图。
初始化棋盘流程
(三)用户玩游戏流程
在用户进入游戏界面时,本款游戏已经开始,用户先下子,根据棋盘上方的提示进行就可以了,
只要鼠标点击方框即可下子,本游戏是事件驱动。
具体的流程如图。
用户玩游戏流程
(四)添加新用户
由于系统设计的比较简单,所以用户信息比较简约。
界面如图。
六、系统试运行结果与评价
经过几个月的系统设计和开发,教材管理系统基本开发完毕。
经测试和试运行,其功能基本都得到了实现,本系统使用MVC构架完成;
选用JAVA这一时下流行的语言;
数据使用MYSQl数据库;
严格按照MVC要求完成具有良好的可扩展性,是由于初期构架搭建时考虑不周导致程序内包结构比较紊乱,后期维护有一定的影响,且没有很好的加上注释。
七、结束语
经过本次的毕业设计,使我学习到了有关JAVA的知识和ORACLE数据库的知识,使我了java语言的强大,及应用JDBC驱动程序调用数据库。
在这次设计过程中,培养了我的自学能力,在遇到技术困难的时候,能够认真的对待,永不放弃,无论是查看各种书籍还是到商品馆中查找各种资料,想尽一切办法将这个问题解决。
我总结了很多的Java编程经验,这将在以后的学习生活中有很大的帮助。
参考文献
[1].张海藩编著《软件工程导论》(第五版)[M]清华大学出版社2008
[2]王小春编著《Pc游戏编程(人机博弈)》[M]重庆大学出版社2005
[3]李宁等编著《JavaWeb开发技术大全》[M]清华大学出版社2009
[4]贺松平编著《基于MVC模式的B/S架构的研究及应用》[M]武汉理工大学出版2004
[5]耿祥义,张跃平编著《JSP实用教程》[M]清华大学出版社2003
[6]吴其庆编著《Java程序设计实例教程》[M]冶金工业出版社,2006