Java实现简单五子棋程序.doc

上传人:豆**** 文档编号:33559083 上传时间:2022-08-11 格式:DOC 页数:13 大小:136.50KB
返回 下载 相关 举报
Java实现简单五子棋程序.doc_第1页
第1页 / 共13页
Java实现简单五子棋程序.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《Java实现简单五子棋程序.doc》由会员分享,可在线阅读,更多相关《Java实现简单五子棋程序.doc(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、目录目录11 问题定义21.1 游戏需求及功能.22 可行性研究.22.1 项目概述22.2 可行性分析的前提22.2.1 项目的目标22.2.2 项目的环境32.3 可选的方案32.3.1 方案一32.3.2 方案二32.4.2 高层数据流图32.5 经济可行性32.6 技术可行性42.7 操作可行性43.1 需求概述43.2 需求模型43.2.1 数据模型43.2.2 功能模型53.2.3 行为模型54 总体设计64.1 系统体系结构64.2 模块详细说明65 详细设计75.1 人机界面设计75.2 过程设计76 测试156.1 白盒测试15图 6.1 五子棋流程图156.2 黑盒测试15

2、7 结论166.陈国君等编著.Java2程序设计基础.北京:清华大学出版社,2006161 问题定义1.1游戏需求及功能 近年来,随着网络的发展,游戏成为许多人关注的焦点。与传统的影音产业一样,游戏产业也是娱乐行业的一个重要组成部分,基于数字化的网络游戏更让人们找到了前所未有的感受,并已经成为全球互联产业的热点。五子棋,亦称“连五子”、“串珠”、“五目”、“五格”等等,日文称之为“连珠”,英文则称之为“Gobang”或“Renju”或“FIR(FiveInaRow)”,是起源于中国古代的传统黑白棋种之一,是一种体现民族特色的休闲游戏,同时能较好的锻炼人的思维。具有广阔的开发前景。 五子棋的玩法

3、想必大家都很熟悉了,想办法把自己的棋子在横、竖、斜任意一个方向上连续排满5个就算赢,本项目实现的五子棋的主要功能是实现不同的对战模式:人机对战和人人对战两种模式。 2 可行性研究2.1 项目概述 人工智能是一门正在迅速发展的新兴的,综合性很强的交叉科学。它与生物工程、空间技术一起被并列为二十一世界三大尖端技术。它的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作。目前各发达国家都把人工智能作为重点项目,列入本国的高科技发展计划当中,投入巨大的人力和物力。计算机人机对弈也是其中之一。作为人智能研究的一个重要分支,计算机博弈是检验人工水平的一个重要方面。它的研究为人工智能带来了很多

4、重要的方法和理论,产生了广泛的社会影响和学术影响。五子棋人机对弈是计算机博弈中的一种。研究其计算机算法,可以让我们看到人工智能的稚形,也有助于我们人脑的开发。五子棋是我国发明的,研究它可以让更多的外国人了解五子棋,这有助于我国优秀文化的推广2.2 可行性分析的前提2.2.1 项目的目标 此系统为智力游戏,适合于各类游戏爱好者。由于其经典性及其游戏的简单性,各类人士都可以也都爱玩。人们在与电脑对战享受娱乐的同时,也会体会到自己的智力也会有所提升。2.2.2 项目的环境编程语言:JAVA操作系统:Windows 系列开发工具:Myeclipse2.3 可选的方案2.3.1 方案一 对于五子棋游戏的

5、实现,可以将其分为面板类,棋子类,来实现五子棋游戏,二者之间通过棋子落在棋盘上的方法取得联系:2.3.2 方案二相比较方案一:方案二将其分为菜单类,鼠标响应事件类,面板类,实现类这四部分,我们采用的是第二方案2.4 所建议的系统2.4.1 系统说明设计一五子棋游戏软件,使之能提供以下功能: 1. 可以选择不同的棋盘2更改游戏的背景颜色3实现不同的游戏模式;人机对战和人人对战其中,最后五子棋的算法部分功能由我实现。2.4.2 高层数据流图1.1下棋1.2棋盘状态 玩 家1 玩 家2 图 2.1 数据流图2.5 经济可行性 本系统开发成本低,不需要过多人员、金钱和特殊要求。2.6 技术可行性系统现

6、阶段的发展过程中,利用现有人力和物力是完全具备的能力开发出来的,本系统的实现方法步骤简单容易,所以本系统的技术上是完全可行的。a. 在当前的限制条件下,该系统的功能目标能达到;b. 利用现有的技术,该系统的功能能实现;c. 对开发人员的数量和质量的要求并说明这些要求因该能满足;d. 在规定的期限内,本系统的开发能完成。2.7 操作可行性 游戏是由鼠标操作,简单 易上手。可操作性强。 3 需求分析3.1 需求概述(1) 人机对弈模式:选择该模式可以实现人与电脑之间的对弈,电脑会智能的选择该在哪处下子,并会在每次下棋结束后判断是否有哪方已经获胜,如果获胜则结束本局游戏,并提示玩家游戏结束。(2)

7、人人对弈模式:选择该模式可以实现人与人之间的对弈,系统会提示哪方先下,然后玩家之间交替的下棋,同样系统会在下完每次棋后判断是否有哪方已经获胜,如果获胜则结束本局游戏,并提示玩家游戏结束。(3) 更换棋盘背景:次功能可以根据玩家的爱好任意更换棋盘的背景颜色,由于每个人对颜色的喜好不一样,因此这个功能也是非常必需的。也行更换一种玩家所喜欢的颜色,玩家能发挥得更好。3.2 需求模型颜色黑色3.2.1 数据模型下 棋 棋 子 棋 盘 N 1 白色 大小 图3.1 实体之间的关系E-R图 3.2.2 功能模型(是对2.4.3中数据流图的细化,要有编号,与前图对应)3.2.3 行为模型 4 总体设计 五子

8、棋游戏4.1 系统体系结构 3.0算法实现模块 1.0面板模块 2.0菜单模块 图 4.1 五子棋系统结构图4.2 模块详细说明IPO表系统:五子棋游戏模块: 算法实现编号:3.0作者:李伟 日期:2014/03/06被调用:调用:输入: 输出: 处理:五子棋算法的实现模块局部数据元素:注释: 图4.2 五子棋IPO图5 详细设计5.1 人机界面设计 5.1 五子棋游戏界面5.2 过程设计package wuziqi;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionL

9、istener;import javax.swing.ButtonGroup;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JRadioButtonMenuItem;import javax.swing.SwingUtilities;import javax.swing.UIManager;/*类ChessFrame主要功能是创

10、建五子棋游戏主窗体和菜单*/class ChessFrame extends JFrame implements ActionListener private String strsize=20x15,30x20,40x30;private String strmode=人机对弈,人人对弈;public static boolean iscomputer=true,checkcomputer=true;private int width,height;private ChessModel cm;private MainPanel mp;/构造五子棋游戏的主窗体public ChessFrame

11、() this.setTitle(五子棋游戏); cm=new ChessModel(1); mp=new MainPanel(cm); Container con=this.getContentPane(); con.add(mp,Center); this.setResizable(false); this.addWindowListener(new ChessWindowEvent(); MapSize(20,15); JMenuBar mbar = new JMenuBar(); this.setJMenuBar(mbar); JMenu gameMenu = new JMenu(游戏

12、); mbar.add(makeMenu(gameMenu, new Object 开局, 棋盘,模式, null, 退出 , this); JMenu lookMenu =new JMenu(视图); mbar.add(makeMenu(lookMenu,new Object Metal,Motif,Windows ,this); JMenu helpMenu = new JMenu(帮助); mbar.add(makeMenu(helpMenu, new Object 关于 , this);/构造五子棋游戏的主菜单public JMenu makeMenu(Object parent, O

13、bject items, Object target) JMenu m = null; if(parent instanceof JMenu) m = (JMenu)parent; else if(parent instanceof String) m = new JMenu(String)parent); else return null; for(int i = 0; i items.length; i+) if(itemsi = null) m.addSeparator(); else if(itemsi = 棋盘) JMenu jm = new JMenu(棋盘); ButtonGro

14、up group=new ButtonGroup(); JRadioButtonMenuItem rmenu; for (int j=0;jstrsize.length;j+) rmenu=makeRadioButtonMenuItem(strsizej,target); if (j=0) rmenu.setSelected(true); jm.add(rmenu); group.add(rmenu); m.add(jm); else if(itemsi = 模式) JMenu jm = new JMenu(模式); ButtonGroup group=new ButtonGroup(); J

15、RadioButtonMenuItem rmenu; for (int h=0;hstrmode.length;h+) rmenu=makeRadioButtonMenuItem(strmodeh,target); if(h=0) rmenu.setSelected(true); jm.add(rmenu); group.add(rmenu); m.add(jm); else m.add(makeMenuItem(itemsi, target); return m;/构造五子棋游戏的菜单项public JMenuItem makeMenuItem(Object item, Object tar

16、get) JMenuItem r = null; if(item instanceof String) r = new JMenuItem(String)item); else if(item instanceof JMenuItem) r = (JMenuItem)item; else return null; if(target instanceof ActionListener) r.addActionListener(ActionListener)target); return r;/构造五子棋游戏的单选按钮式菜单项public JRadioButtonMenuItem makeRad

17、ioButtonMenuItem( Object item, Object target) JRadioButtonMenuItem r = null; if(item instanceof String) r = new JRadioButtonMenuItem(String)item); else if(item instanceof JRadioButtonMenuItem) r = (JRadioButtonMenuItem)item; else return null; if(target instanceof ActionListener) r.addActionListener(

18、ActionListener)target); return r; public void MapSize(int w,int h) setSize(w * 20+50 , h * 20+100 ); if(this.checkcomputer) this.iscomputer=true; else this.iscomputer=false; mp.setModel(cm); mp.repaint(); public boolean getiscomputer() return this.iscomputer; public void restart() int modeChess = cm

19、.getModeChess(); if(modeChess = 1) cm = new ChessModel(modeChess); MapSize(cm.getWidth(),cm.getHeight(); else System.out.println(u81EAu5B9Au4E49); public void actionPerformed(ActionEvent e) String arg=e.getActionCommand(); try if (arg.equals(Windows) UIManager.setLookAndFeel( com.sun.java.swing.plaf

20、.windows.WindowsLookAndFeel); else if(arg.equals(Motif) UIManager.setLookAndFeel( com.sun.java.swing.plaf.motif.MotifLookAndFeel); else UIManager.setLookAndFeel( javax.swing.plaf.metal.MetalLookAndFeel ); SwingUtilities.updateComponentTreeUI(this); catch(Exception ee) if(arg.equals(20x15) this.width

21、=20; this.height=15; cm=new ChessModel(1); MapSize(this.width,this.height); SwingUtilities.updateComponentTreeUI(this); if(arg.equals(30x20) this.width=30; this.height=20; cm=new ChessModel(2); MapSize(this.width,this.height); SwingUtilities.updateComponentTreeUI(this); if(arg.equals(40x30) this.wid

22、th=40; this.height=30; cm=new ChessModel(3); MapSize(this.width,this.height);y SwingUtilities.updateComponentTreeUI(this); if(arg.equals(人机对弈) this.checkcomputer=true; this.iscomputer=true; cm=new ChessModel(cm.getModeChess(); MapSize(cm.getWidth(),cm.getHeight(); SwingUtilities.updateComponentTreeU

23、I(this); if(arg.equals(人人对弈) this.checkcomputer=false; this.iscomputer=false; cm=new ChessModel(cm.getModeChess(); MapSize(cm.getWidth(),cm.getHeight(); SwingUtilities.updateComponentTreeUI(this); if(arg.equals(开局) restart(); if(arg.equals(关于) JOptionPane.showMessageDialog(this, 五子棋游戏测试版本, 关于, 0); i

24、f(arg.equals(退出) System.exit(0); 6 测试6.1 白盒测试 1.白盒测试:白盒测试的前提是可以把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否能按预定的要求正确工作。本次课程设计采用语句覆盖的方法: 图 6.1 五子棋流程图6.2 黑盒测试 1.黑盒测试:黑盒测试把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当的接受输入数据并产生正确的输出信息,程序运行过程中能

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

26、面是没考虑到的,这款游戏也是在不断的调试和修改中产生和完善的。希望老师能够指出不足,帮助我不断提高。设计中主要出现的问题是如何记录之前的棋盘结果,如何处理错误需求和如何判定获胜结局。在处理这些问题方面我咨询了老师和同学,最后问题终于得到解决,我感谢他们的热情帮助。系统终于实现了,我感受到软件工程是一个庞大的计算机学科,要把它学好还要投入更大的精力和更多的时间,希望在以后的不断的学习中能依照软件工程的思想增强自己规范设计软件系统的能力和习惯。总之,这次的软件工程课程设计在软件设计方面让我学习到很多,进步很大。 参考文献1. 张海藩. 软件工程导论-5版. 北京. 清华大学出版社,2008.22. 金敏,周翔. 高级软件开发过程. 北京. 清华大学出版社,20053. 张小艳,龚尚福. 数据结构与算法. 徐州. 中国矿业大学出版社,2006.124. 王育坚.Vc+面向对象编程教程. 北京. 清华大学出版社,2007.105.张孝祥. Java就业培训教程M. 北京:清华大学出版社,20036.陈国君等编著.Java2程序设计基础.北京:清华大学出版社,2006

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com