基于-Java的猜拳小游戏设计_第1页
基于-Java的猜拳小游戏设计_第2页
基于-Java的猜拳小游戏设计_第3页
基于-Java的猜拳小游戏设计_第4页
基于-Java的猜拳小游戏设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 目 录绪论- 1-一、背景与意义- 2-二、设计原理与方案- 2-一)方案- 2-二)设计思路- 3-三)系统分析- 3-四)程序概要设计- 4- 五)工作流程图- 4-六)程序框图- 5-七)程序中所用类说明- 5-八)程序运行效果及存在的问题- 7-三、项目实现- 8-一)程序用到的类库简介- 8-二)游戏主程序设计- 8-三)主界面PigPanel类- 8-四)具体实现- 9-四、运行结果-14-一)结果截图-14-二)系统在调度中经常出现的问题-16-五、心得-17-六、总结语-18-七、参考文献-19-17 / 18绪论: 面向对象(OOP)的程序设计认为:现实世界是由一组彼此相关

2、并互通信息的实体对象(Object)组成的。不管是一所学校、一个班级;一辆汽车、一桌子;还是一个窗体、一个按钮,都可视作对象。一个对象包含两部分容:描述对象状态的数据和描述对象行为或功能(方法)的编码。数据和编码紧密结合,共同构成一个对象。面向对象的程序设计有三大特性:封装性、继承性和多态性。计算机技术的应用正在朝着网络化的方向阔步前进,万维网成为世界上最大的信息中心。但目前外围网上的容仍多为文本、图像、声音等静态信息,Java为其提供了简便并且功能强大的编程接口,开发人员利用这些编程接口可以向Web增加动态性、交互性容,这使得Web页面翻开了新的一页。 Java是一种跨平台的面向对象的语言,

3、这就允许开发人员生成独立于平台的应用程序,用Java编写的程序可以在许多硬件平台上运行而不需要重新编译。 Java具有很多优点:简单、面向对象、可移植、与硬件无关、强健安全、具有很高的性能,此外还对多线程、动态性提供了支持。 Java采用面向对象技术,所有的Java程序都是对象,通过封装性实现了模块化和信息隐藏,通过继承性实现了代码的复用,使得用户可以根据自己的需要创建自己的类库。 Java最强大的是网络方面的应用,本课程设计不涉及网络方面的应用。一、背景与意义 游戏是全球最大的娱乐经济项目之一,已经被命名为“第九艺术”。而由“游戏”派生出来的职业,除了软件开发外,游戏包装宣传推广、攻略指导、

4、网络游戏管理员和职业游戏玩家等,已成为了一系列专门的岗位。虽然说中国的游戏行业开始逐步的迈入了正轨,但是现今,游戏人才出现严重的瓶颈时期,高校的扩招、金融危机的侵袭直接影响着我们最关心的就业问题,但是另一方面游戏人才的缺乏又直接制约着行业的发展,这就更加严格了对社会培训机构的稳定性和正规性的要求。在我国,游戏人才培养体系还未健全,部分开设了相关专业的高校,游由于理论和实践的脱离无法完全满足网游公司对人才的需求。 所以,就中国目前的市场分析来看,加强游戏产业必须在多渠道人才培养体系上加快突破,尽快建立起多渠道人才培养体系,来满足社会对游戏人才的需求。通过Java程序设计的一些重要理论基础来实现“

5、人机猜拳小游戏”的功能。通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果,逐步建立正确的全局观念。通过本次程序设计,我掌握了Java语言的基本运用,提高了理论结合实际能力。二、设计原理及方案程序总体介绍和设计要求程序使用J2SE语言编写,使用标准JDK平台编译和运行。程序使用已创建的PairOfDice类,设计并实现一个类来玩游戏。根据游戏规则玩家将和电脑进行比赛。创建小游戏,实现电脑与玩家之间互动猜拳这主要功能,通过按钮的方式,与电脑进行猜拳游戏,

6、电脑随机出拳并能显示设置的图片,增加美观。一)方案: 1)界面的左侧是电脑或者玩家的名字,让界面看起来一目了然。2)系统界面的中间是电脑或者玩家出拳的图片。图片可以生动形象得表示出电脑或者玩家出的拳,显示的图片在对话框中也相得益彰。在图片的下方会显示,人机猜拳以后的输赢。3)界面的右侧是三个剪刀石头布的按钮。玩家通过按钮出拳,电脑随机出拳,猜拳的输赢结果在下方显示。二)设计思路: 在设计游戏时,我们要充分考虑到剪刀石头布游戏的特性,以及多种技术的实现:构造创建服务器端和客户端创建输入输出流编写服务器端处理数据的线程方法绘制游戏界面绘制界面上的提示采用此方法设计使程序简洁明了,使绘制游戏界面时简

7、单化,更加易于游戏的实现,程序也更易于读懂。 如java中得到输入输出流的方法:/调用客户端的getInputStream()方法Inputs=newBufferedReader(new InputStreamReader(client.getInputStream();通过调用此方法获取从服务器得到的数据调用客户端的getOutputStream()方法,通过此方法把客户端的数据传输给服务器。三)系统分析 Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。 图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作

8、为主要的部件。线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和

9、实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。四)程序概要设计1)功能需求分析 一个剪刀石头布游戏,根据一般的常识,首先要有两个人,两个人同时出,然后,根据双方的出拳,决定谁是赢者,虽然想起来这个游戏很简单,但如何实现 ,还是有一定难度的。实现这个时针时涉及到几个技术问题:1. 双方如何出拳2. 如何同时出拳3. 如何判断哪方赢了4. 如何显示结果剪刀石头布游戏,都是通过两个人同时出拳,然后根据双方出的拳,判定哪方是赢家。2)性能需求分析准确性:在实现此的过程中,

10、我们要考虑到,双方是否能同时地出拳,还要就是如何去判断,准确地知道哪方是赢家.简洁性:在实现此的过程中,我们要考虑到,怎样使游戏界面更简单,让人更容易明白它怎样去玩。五)工作流程图: 图1 工作流程图六)程序框图游戏程序框图如图2所示 图2 游戏程序框图七)程序中所用类说明:(1)用户自定义类类名:SmallGame作用:实例化对象主要成员变量:Frame myFrm / 定义主窗体TextArea myText / 定义文本编辑区Button BfontOK, Bfind, Breplace, Bnext, Bcancel /定义和创建各按钮Label Lf Lr, Ls /定义和创建各标签

11、MenuBar Mbbar /定义和创建主菜单Menu Mfile,Medit,Mformation,Mhelp /定义和创建主菜单中的选项Toolkit toolKitClipboard myCB /剪切板对象FileDialog myFDlg /定义文件对话框主要成员方法:public void init() /初始化各部件菜单的定义和事件的监听public void displayEdit ()/显示窗体及调用Time中的schedule方法public void windowClosing () /关闭窗体public void save /保存文件方法.部类类名:KeyEvents作

12、用:实现菜单的事件的响应功能继承的父类:KeyAdapter主要成员变量:无成员方法:actionPerformed()、keyPressed() (2)用户自定义类与Java类的继承关系图如下: ThreadServicegetInputStreamStartRunRandomgetOutputStreamReadline 图3 子类及其父类继承关系图(3)类中成员及作用Service类成员:String data; /接收数据BufferedReader inputs;/读取数据PrintStream outputs;/输出数据Socket client;/定义套接字Client类成员:S

13、tring data;/接收数据Socket client = null;/定义套接字BufferedReader inputs = null;/读取数据BufferedReader key = null;/缓冲数据PrintStream outputs = null;/输出数据八)程序运行效果及存在的问题(1)运行效果图剪刀石头布游戏效果如图4所示: 图4游戏效果图(2)存在的问题此游戏界面简洁明了,但还是有许多问题的,比如说这个界面不是GUI的,所以操作性不强,也不美观,而且处理数据的random函数也有问题,它可能出现相同的结果,不能成为真正意义上的随机,所以这个小游戏还是有许多问题的,

14、我会进一步的改进它。三、项目实现一)  程序用到的类库简介(1)Java的抽象窗口工具集AWT(Abstract Window Toolkit)中包含了很多的类来支持GUI的设计,使得用户和程序可以非常方便地进行交互。java.awt包中包含ponent、Panel、Frame、Applet、Container、Button等许多常用的类。(2) Swing类库提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。而javax.swing.event则供 Swing 组件触发的事件使用。(3)此外,程序还用到了部分applet、net、io、u

15、til类。二)游戏主程序设计 主程序PigPanel用到两个类:Die和PairOfDice,均为已设计类。 Die类主要实现出招过程,PairOfDice过程主要返回游戏规定的得分情况,PigPanel使用这两个类,并产生用户交互界面,由用户操作实现出招、得分、等步骤。三)主界面PigPanel类1.  成员变量restart  utton 对本次游戏数据进行清零  get  utton 模拟出招pause  utton 获得当前得分的点数 pod PairOfDice  声明类以获得分点数2

16、.成员变量 info  String  储存读取的信息  ta JTextArea  显示文字四)具体实现首先建立一个Test类,如下:import java.awt.Color;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.AbstractButton;import javax.swing.ImageIcon;import javax.swing.utton;impo

17、rt 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;public String m;int j;int i;final String arr = new String3;public void Win(String person) arr0

18、= "石头"arr1 = "剪刀"arr2 = "布"person = arrj;i = (int) (Math.random() * 3);String c = arri;/判断输赢if (c.equals(person) jl4.setText("平手"); else if (c.equals("剪刀") && person.equals("石头") | c.equals("石头")&& person.equals(&q

19、uot;布") | c.equals("布") && person.equals("剪刀") jl4.setText("你赢了"); else jl4.setText("你输了");public Test() JFrame jf = new JFrame();this.setSize(400, 300);this.setTitle("猜拳游戏");this.setLayout(null);jl = new JLabel("电脑出的是:");jl.se

20、tBounds(50, 50, 100, 50);this.add(jl);jl1 = new JLabel("你出的是:");jl1.setBounds(50, 120, 100, 50);this.add(jl1);/ 电脑的出的拳标签jl2 = new JLabel();jl2.setBounds(150, 50, 100, 50);this.add(jl2);/我出的拳的标签jl3 = new JLabel();jl3.setBounds(150, 120, 100, 60);this.add(jl3);jl4 = new JLabel("");

21、jl4.setBounds(150, 200, 100, 50);this.add(jl4); / 按钮 final utton btn = new utton("石头");btn.setBounds(280, 50, 60, 40);this.add(btn); final utton btn1 = new utton("剪刀");btn1.setBounds(280, 105, 60, 40);this.add(btn1); final utton btn2 = new utton("布");btn2.setBounds(280,

22、 160, 60, 40);this.add(btn2);/按钮事件监听btn.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) /如果你鼠标点击的是石头按钮j = 0;String b = btn.getActionmand();jl3.setText(b);jl3.setIcon(new ImageIcon(MyImg.class.getResource(j+".jpg");Win(person);Test.this.jl2.setIcon(new I

23、mageIcon(MyImg.class.getResource (i+".jpg"); Test.this.jl2.setText(arri); System.out.println(arri););btn1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) j = 1;String b1 = btn1.getActionmand();jl3.setText(b1);jl3.setIcon(new ImageIcon(MyImg.class.getRes

24、ource(j+".jpg");Win(person);Test.this.jl2.setIcon(new ImageIcon(MyImg.class.getResource (i+".jpg");Test.this.jl2.setText(arri);System.out.println(arri);/ System.out.println(b););btn2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) j = 2;String

25、 b2 = btn2.getActionmand();jl3.setText(b2);jl3.setIcon(new ImageIcon(MyImg.class.getResource(j+".jpg");Win(person);Test.this.jl2.setText(arri);System.out.println(arri);Test.this.jl2.setIcon(new ImageIcon(MyImg.class.getResource (i+".jpg");/ System.out.println(b););this.setVisible

26、(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocationRelativeTo(null);this.setResizable(false);public static void main(String args) Test t = new Test();再建立一个名为MyImg的类,把下面几图片放到该类下图片名称自左向右依次为布、石头、剪刀。4、 运行结果1) 结果截图 图5 开始界面图6 游戏过程 图7 游戏过程图8 游戏过程2) 系统在调度中经常出现的问题(1)数据库的连接容易出错(2)各种数据写入数据库时容易

27、出错(3)在调度中经常出现数词不匹配五、心得个人分析:程序从最初的黑盒子运行到后来的可视化,经过了一段“设计的思考”:如何把游戏表现出来、如何让用户最快上手、如何完善游戏。这属于需求分析的畴。在设计中不断体会系统的需求分析需求满足的重要,才会做出好的程序。在程序实现的过程中,遇到的困难也不少。不提编写的小错误,有所学的知识不够用的尴尬,有用户界面的多媒体实现的难处,不一而足。于是我通过不断的学习和纠正错误,得到了最后的源程序。后来是课程设计,并且要做好各个环节的分析,用语言表达出来。这相当有难度。也许在此之前已经把程序脱个精光,但是要把各个环节拆开并且详细描述就仿佛要把程序继续脱。当然最终是“脱”出来了,也许还不尽如人意,但已能大致表达程序设计的思想了。虽然提交时间推延到了最后,但是我仍然感觉时间相对紧(思想紧?),所以难免出现不足之处,有可完善的,也有个人能力之外的。已知的列举如下:1出招过程未能表现;2没有开始菜单以及结束菜单;3不能由键盘控制;4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论