1、 目 录 绪论 . 错误 !未定义书签。 一、 背景与意义 . 错误 !未定义书签。 二 、设计原理与方案 . 错误 !未定义书签。 一)方案 . 错误 !未定义书签。 二)设计思路 . 错误 !未定义书签。 三 )系统分析 . 错误 !未定义书签。 四)程序概要设计 . 错误 !未定义书签。 五 )工作流程图 . 错误 !未定义书签。 六)程序框图 . 错误 !未定义书签。 七 )程序中所用类说明 . 错误 !未定义书签。 八 )程序运行效果及存在的问题 . 错误 !未定义书签。 三 、 项目实现 . 错误 !未定义书签。 一)程序用到的类库简介 . 错误 !未定义书签。 二) 游戏主程序设
2、计 . 错误 !未定义书签。 三)主界面 PigPanel 类 . 错误 !未定义书签。 四)具体实现 . 错误 !未定义书签。 四、 运行结果 . 错误 !未定义书签。 一 )结果截图 . 错误 !未定义书签。 二 )系统在调度中经常出现的问题 . 错误 !未定义书签。 五、心得 . 错误 !未定义书签。 六、总结语 . 错误 !未定义书签。 七 、 参考文献 . 19 1 绪论: 面向对象( OOP)的程序设计认为:现实世界是由一组彼此相关并互通信息的实体 对象( Object)组成的。不管是一所学校、一个班级;一辆汽车、一张桌子;还是一个窗体、一个按钮,都可视作对象。一个对象包含两部分内
3、容:描述对象状态的数据和 描述对象行为或功能(方法)的编码。数据和编码紧密结合,共同构成一个对象。面向对象的程序设计有三大特性:封装性、继承性和多态性。 计算机技术的应用正在朝着网络化的方向阔步前进,万维网成为世界上最大的信息中心。但目前外围网上的内容仍多为文本、图像、声音等静态信息, Java 为其提供了简便并且功能强大的编程接口,开发人员利用这些编程接口可以向 Web增加动态性、交互性内容,这使得 Web 页面翻开了新的一页。 Java 是一种跨平台的面向对象的语言,这就允许开发人员生成独立于平台的应用程序,用 Java 编写的程序可以在 许多硬件平台上运行而不需要重新编译。 Java 具
4、有很多优点:简单、面向对象、可移植、与硬件无关、强健安全、具有很高的性能,此外还对多线程、动态性提供了支持。 Java 采用面向对象技术,所有的 Java 程序都是对象,通过封装性实现了模块化和信息隐藏,通过继承性实现了代码的复用,使得用户可以根据自己的需要创建自己的类库。 Java 最强大的是网络方面的应用,本课程设计不涉及网络方面的应用。 2 一、背景与意义 游戏是全球最大的娱乐经济项目之一,已经被命名为“第九艺术”。而由“游戏”派 生出来的职业,除了软件开发外,游戏包装宣传推广、攻略指导、网络游戏管理员和职业游戏玩家等,已成为了一系列专门的岗位。虽然说中国的游戏行业开始逐步的迈入了正轨,
5、但是现今,游戏人才出现严重的瓶颈时期,高校的扩招、金融危机的侵袭直接影响着我们最关心的就业问题,但是另一方面游戏人才的缺乏又直接制约着行业的发展,这就更加严格了对社会培训机构的稳定性和正规性的要求。在我国,游戏人才培养体系还未健全,部分开设了相关专业的高校,游由于理论和实践的脱离无法完全满足网游公司对人才的需求。 所以,就中国目前的市场分析来看,加强 游戏产业必须在多渠道人才培养体系上加快突破,尽快建立起多渠道人才培养体系,来满足社会对游戏人才的需求。 通过 Java 程序设计的一些重要理论基础来实现“人机猜拳小游戏”的功能。通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算
6、、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果,逐步建立正确的全局观念。 通过本次程序设计 ,我掌握了 Java 语言的基本运用 ,提高了理论结合实际能力。 二 、 设计原理及方案 程序总体介绍和设计要求 程序使用 J2SE语言编写,使用标准 JDK平台编译和运行。程序使用已创建的 PairOfDice 类,设计并实现一个类来玩游戏。根据游戏规则玩家将和电脑进行比赛 。 创建小游戏,实现电脑与玩家之间互动猜拳这主要功能,通过按钮的方式,与电脑进行猜拳游戏,电脑随机出拳并能显示设置的图片,增加美观。 一)方案: 1)
7、界面的左侧是电脑或者玩家的名字,让界面看起来一目了然。 2)系统界面的中间是电脑或者玩家出拳的图片。图片可以生动形象得表示出电脑或者玩家出的拳,显示的图片在对话框中也相得益彰。在图片的下方会显示,人机猜拳以后 的输赢。 3)界面的右侧是三个剪刀石头布的按钮。玩家通过按钮出拳,电脑随机出拳,猜拳的输赢结果在下方显示。 3 二)设计思路: 在设计游戏时,我们要充分考虑到剪刀石头布游戏的特性,以及多种技术的实现: 构造创建服务器端和客户端 创建输入输出流 编写服务器端处理数据的线程方法 绘制游戏界面 绘制界面上的提示 采用此方法设计使程序简洁明了,使绘制游戏界面时简单化,更加易于游戏的实现,程序也更
8、易于读懂。 如 java 中得到输入输出流的方法: /调用客户端的 getInputStream()方法 Inputs=newBufferedReader(new InputStreamReader(client.getInputStream(); 通过调用此方法获取从服务器得到的数据 调用客户端的 getOutputStream()方法,通过此方法把客户端的数据传输给服务器。 三)系统分析 Java 程序编辑器是:图形界面、线程、流与文件等技术的综合应用。 图形界面的实现:考虑到简单、实用、高效等特点,就选择了 AWT 来完成实现,在选择组件上,文本编辑区就选用了 TaxtArea 作为主要
9、的部件。 线程实现 文件自动保存:在相关的参考书上查阅到在 Time 类中有一个schedule 方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了 Time 类中的 schedule 方法来实现文件自动保存及备份功能。 文件操作的实现:利用了字符文件流 FileReader 和 FileWriter 类来实现。 由于 Java 的特性,可能用任何一个编辑器来编辑,于是就将 Windows 中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。 在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一 个默认属性类作为程序的整体框架,所有
10、的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象4 的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。 四)程序概要设计 1)功能需求分析 一个剪刀石头布游戏,根据一般的常识,首先要有两个人,两个人同时出,然后,根据双方的出拳,决定谁是赢者,虽然想起来这个游戏很简单,但如何实现 ,还是有一定难度的。实现这个时针时涉及到几个技术问题: 1. 双方如何出拳 2. 如何同时出拳 3. 如何判断哪方赢了 4. 如何显示结果 剪刀石头布游戏,都是通过两个人同时出拳,然后根据双方出的拳,判定
11、哪方是赢家。 2)性能需求分析 准确性:在实现此的过程中,我们要考虑到,双方是否能同时地出拳,还要就是如何去判断,准确地知道哪方是赢家 . 简洁性:在实现此的过程中,我们要考虑到,怎样使游戏界面更简单,让人更容易明白它怎样去玩。 五)工作流程图 : 图 1 工作流程图 5 六)程序框图 游戏程序框图如图 2所示 图 2 游戏程序框图 七)程序中所用类说明: ( 1)用户自定义类 类名: SmallGame 作用:实例化对象 主要成员变量: Frame myFrm / 定义主窗体 TextArea myText / 定义文本编辑区 Button BfontOK, Bfind, Breplace,
12、 Bnext, Bcancel /定义和创建各按钮 Label Lf Lr, Ls /定义和创建各标签 MenuBar Mbbar /定义和创建主菜单 Menu Mfile,Medit,Mformation,Mhelp /定义和创建主菜单中的选项 Toolkit toolKit 6 Clipboard myCB /剪切板对象 FileDialog myFDlg /定义文件对话框 主要成员方法: public void init() /初始化各部件菜单的定义和事件的监听 public void displayEdit ()/显示窗体及调用 Time 中的 schedule 方法 public v
13、oid windowClosing () /关闭窗体 public void save /保存文件方法 .内部类类名: KeyEvents 作用:实现菜单的事件的响应功能 继承的父类: KeyAdapter 主要成员变量:无 成员方法: actionPerformed()、 keyPressed() ( 2)用户自定义类与 Java 类的继承关系图如下: 图 3 子类及其父类继承关系图 ( 3)类中成员及作用 Service 类成员: Thread Service getInputStream Start Run Random getOutputStream Readline 7 String
14、 data; /接 收数据 BufferedReader inputs;/ 读取数据 PrintStream outputs;/输出数据 Socket client;/定义套接字 Client 类成员: String data;/接收数据 Socket client = null;/定义套接字 BufferedReader inputs = null;/ 读取数据 BufferedReader key = null;/ 缓冲数据 PrintStream outputs = null;/输 出数据 八)程序运行效果及存在的问题 ( 1)运行效果图 剪刀石头布游戏效果如图 4 所示: 图 4 游戏
15、效果图 8 ( 2)存在的问题 此游戏界面简洁明了,但还是有许多问题的,比如说这个界面不是 GUI的,所以操作性不强,也不美观,而且处理数据的 random 函数也有问题,它可能 出现相同的结果,不能成为真正意义上的随机,所以这个小游戏还是有许多问题的,我会进一步的改进它。 三、项目实现 一) 程序用到的类库简介 (1)Java 的抽象窗口工具集 AWT(Abstract Window Toolkit)中包含了很多的类来支持 GUI 的设计,使得用户和程序可以非常方便地进行交互。 java.awt 包中包含 Component、 Panel、 Frame、 Applet、 Container、
16、 Button 等许多常用的类。 (2) Swing 类库提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些 组件在所有平台上的工作方式都相同。而 javax.swing.event 则供 Swing 组件触发的事件使用。 (3)此外,程序还用到了部分 applet、 net、 io、 util 类。 二)游戏主程序设计 主程序 PigPanel 用到两个类: Die 和 PairOfDice,均为已设计类。 Die 类主要实现出招过程, PairOfDice 过程主要返回游戏规定的得分情况,PigPanel 使用这两个类,并产生用户交互界面,由用户操作实现出招、得分、等步骤。 三)
17、主界面 PigPanel 类 1. 成员变量 restart Jbutton 对本次游戏数据进行清零 get JButton 模拟出招 pause Jbutton 获得当前得分的点数 pod 9 PairOfDice 声明类以获得分点数 2.成员变量 info String 储存读取的信息 ta JTextArea 显示文字 四)具体实现 首先建立一个 Test 类,如下: import java.awt.Color; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionLi
18、stener; import javax.swing.AbstractButton; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; public class Test extends JFrame JLabel jl,jl1; final JLabel jl2,jl3; JLabel jl4; public String person;