基于java开发的蜘蛛纸牌程序设计(共28页).doc

上传人:飞****2 文档编号:13490822 上传时间:2022-04-29 格式:DOC 页数:28 大小:721.50KB
返回 下载 相关 举报
基于java开发的蜘蛛纸牌程序设计(共28页).doc_第1页
第1页 / 共28页
基于java开发的蜘蛛纸牌程序设计(共28页).doc_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《基于java开发的蜘蛛纸牌程序设计(共28页).doc》由会员分享,可在线阅读,更多相关《基于java开发的蜘蛛纸牌程序设计(共28页).doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上 编号: 本科毕业论文(设计)题目: 学 院 专 业 学 号 姓名 指导教师 职称: 完成日期 诚 信 承 诺我谨在此承诺:本人所写的毕业论文均系本人独立完成,没有抄袭行为,凡涉及其他作者的观点和材料,均作了注释,若有不实,后果由本人承担。 承诺人(签名): 年 月 日 基于java开发的蜘蛛纸牌程序设计姓名:关俊生 学号:3指导老师:李林国摘要:java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。Java是面向对象的语言。蜘蛛纸牌是一款受人喜欢的休闲游戏,微软的每一代操作系统中都装有

2、这种纸牌游戏,很多人都玩过蜘蛛纸牌,都熟悉蜘蛛纸牌游戏所需要的功能。本人做的蜘蛛纸牌游戏开发理念是基于WINDOWS XP操作系统中自带蜘蛛纸牌游戏。利用java语言实现了蜘蛛纸牌游戏的主要功能如纸牌的移动、放置、回收、重发。利用javax.swing包的类实现纸牌游戏的用户界面,通为各个菜单组件添加监视器来实现鼠标单击事件所触发的接口方法,使得用户可以单击菜单项来实现具体的功能。通过设置纸牌的等级来初始化纸牌随机分配纸牌,为用户玩纸牌游戏提供相应的等级。意义:通过自己对蜘蛛纸牌游戏的开发,使我更加热爱java语言,让我懂得和洗去了更多程序开发的知识及经验,为以后进入编程工作提供条件。关键字:

3、java语言、游戏背景、功能实现Spider solitaire program based on java developmentName: Guan Junsheng Student ID: 200 829 010 213 Instructor: Li LinguoAbstract: java is the Java programming language from Sun Microsystems, Inc. in May 1995 (hereinafter referred to as the general term of the Java language) and Java p

4、latforms. Java is object-oriented languages. Spider Solitaire is a people like casual games, each generation of Microsofts operating system are equipped with this card game, many people have played Spider Solitaire are all familiar with the functionality required by the spider card game. I do spider

5、 solitaire game development philosophy is based on the WINDOWS XP operating system comes with the spider solitaire game. Java language to achieve the main function of the spider solitaire game, such as movement of the playing cards, place, recycling, re-issued. The use of the javax.swing package cla

6、ss that implements the user interface of the card game pass for each menu component to add a monitor to the mouse click event triggered by the interface method, the user can click the menu items to achieve a specific function. To initialize the cards by the level of the set of cards randomly assigne

7、d to cards, to provide the appropriate level for users playing solitaire. Meaning: the spider solitaire game development, so that I more love the java language, so I know how to wash away the more knowledge and experience of program development, and provide conditions for the future to enter the pro

8、gramming work.Keywords: Java language, the background of the game functions目录1.绪论1.1 游戏开发的背景知识.1.2 需要做的准备工作.2. 开发工具介绍.2.1 java语言概述.2.2 java语言的特点.2.3 Eclipse开发平台介绍.3. 总体设计.3.1代码功能模块的设计.3.2 程序总体设计流程图.3.3模块一的详细介绍.3.3.1 主要的类.3.3.2 主要的变量.3.3.3主要的方法.3.4 模块二的详细介绍.3.4.1主要的类.3.4.2 主要的变量.3.4.3主要的方法.3.5 模块三的详细

9、介绍.3.5.1主要的类.3.5.2主要的变量. 3.5.3 主要的方法. 3.6模块四的详细.3.6.1主要的类.3.6.2主要的变量. 3.6.3 主要的方法.4. 功能设计.4.1 需要实现的主要功能.4.2 功能设计流程图.4.3 主要功能的代码实现.4.3.1 游戏菜单栏内游戏菜单及帮助菜单功能展示.4.3.2 主界面的设计. 4.3.3 纸牌的初始化以及发牌操作.4.3.4 纸牌的移动以及放置. 4.3.5显示当前纸牌可行的操作.4.3.6 回收纸牌.5. 程序的运行及发布. 5.1 运行程序. 5.2 发布程序.6. 工作总结.参考文献.1.绪论1.1 游戏开发的背景知识相信很多

10、人都玩过蜘蛛纸牌这款休闲游戏,现在随着生活水平的提高,人们拥有充分的时间来享受休闲游戏带来的快乐,越来越多的人亲睐蜘蛛纸牌游戏。谈起这款游戏,大家并不陌生。从WINDOWS2000系统开始,就嵌入了蜘蛛纸牌游戏,可是随着微软系统的不段升级,蜘蛛纸牌游戏的功能业变得越来越强大,游戏的界面也更加美观。用户的体验感受也更加美好。所以,蜘蛛纸牌游戏的开发对于人类的生活娱乐更加有意义。了解蜘蛛纸牌的开发过程也是作为一名学习计算机专业大学生所应该尝试的过程。游戏的目标是以最少的移动次数将牌面中的十叠牌以及待发的五组,共计八副牌整理移除。当所有牌被移除整理到界面的左下方,游戏获胜。1.2 需要做的准备工作需

11、要做的工作有学习掌握开发程序的方法,开了解发工具,进行需求分析,根据得到的需求规格说明书设计具体的程序流程图,编写程序,修改程序,运行程序,系统调试程序、测试程序,发布程序。2.开发工具介绍2.1 java语言概述:java是由Sun Microsystems公司于1995年5月推出的java程序设计语言和java平台的总称。用java实现的浏览器显示它的魅力:跨平台的特点使得它越来越受到许多程序员的亲睐。java除了可以开发动态的Web页还可以开发各种系统软件。现在常用的浏览器比如说360浏览器,IE浏览器中均配备有java applet。java平台由java虚拟机和各种java应用编程接

12、口(简称API)构成。java应用编程接口为java提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在操作系统上安装一个java平台就可以运行任何一个java程序啦。现在java平台已经几乎嵌入到所有的操作系统党章。这样java程序就可以只编译一次,就可以在各种系统当中运行啦。java目前最新的版本是java1.7版本的。2.2 java语言的特点:java语言是一种简单的、面向对象的、分布式的、健壮的、安全的、与平台无关的、多线程、高性能的、动态程序设计语言。1.java语言简单易学的。 java语言的语法与C语言和C+语言很接近,使得多数程序员很容易学习和使用java。另一方

13、面,java丢弃了C+中很少使用的,很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地。java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。2.平台无关性 平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。 3.安全性 Java的编程类似C+,学习过C

14、+的读者将很快掌握Java的精髓。Java舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。 4.面向对象 Java吸取了C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。

15、Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。 5.分布式 Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。 6.健壮性 Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、

16、异常出口、Byte code校验等功能。 7.解释型 我们知道C,C+等语言,都是针对CPU芯片进行编译,生成机器代码,该代码的运行就和特定的CPU有关。Java不像C或C+,它不针对CPU芯片进行编译,而是把程序编译成称为自字节码的一种“中间代码”。字节码是很接近机器码的文件,可以在提供了java虚拟机(JVM)的任何系统上被解释执行。 8.动态 java程序的基本组成单元就是类,有些类是自己编写的,有些是从类库中引入的,而类又是运行时动态装载的,这就使得Java可以在分部环境中动态的维护程序及分类,而不像C+那样,没档期类库升级以后,如果想让程序具有新类库提供的功能,就需要修改程序,重新编

17、译。9.多线程Java是支持多线程的语言。多线程是一种应用程序设计方法。线程是一大进程里分出来的,小的、独立的进程,使得在一个程序里可同时执行多个小任务。多线程带来的好处是具有更好的交互性能和实时控制性能。但采用传统的程序设计语言(如:C/C+)实现多线程程序并非易事。Java实现了多线程技术,提供了简便的实现多线程的方法,并拥有一组高复杂性的同步机制。10.可以移植的。这种可移植性来源于体系结构中立性,另外,java还严格规定了各个基本数据类型的长度。java系统本身也具有很强的可移植性,java编译器是用java实现的,java运行环境是用ANSIC实现的。2.3 Eclipse开发平台简

18、介:Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Ecl

19、ipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。这种平等和一致性并不仅限于 Java 开发工具。尽管 Eclipse 是使用 Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如 C/C+ 和 COBOL 等编程语言的插件已经可用,或预计将会推出。Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。基于 Eclipse 的应用程序的一个突出例子是 IBM® Rational® So

20、ftware Architect,它构成了 IBM Java 开发工具系列的基础。Eclipse IDE for Java EE Developers443.总体设计:3.1代码功能功能模块设计:蜘蛛纸牌游戏共由4个部分组成,分别 是:Spider.java,SpiderMenuBar.java,PKCard.java,AboutDialog.java。SpiderMenuBar.java包含名为SpiderMenuBar的public类,其主要功能为生成蜘蛛纸牌游戏的菜单栏,实现菜单栏中各个组件的事件侦听。主要包括3个模块:图形用户界面的构建;组件监听接口的实现:显示可执行操作的线程。PKC

21、ard.java包含名为PKCard的public类,其主要功能为:定义纸牌的属性,包括名称,位置等相关信息。并通过相关方法实现纸牌的移动等。AboutDialog.java包含名为AboutDialog的public类,其主要功能为生成蜘蛛纸牌游戏的帮助栏。Spider.java包含名为Spider的public类,其主要功能为生成蜘蛛纸牌游戏的框架,实现游戏中的方法,包括:纸牌的随机生成,位置的摆放等。3.2程序的总体设计流程图: 3.3模块一的详细介绍:SpiderMenuBar.java的功能是生成蜘蛛纸牌游戏的菜单栏。实现菜单栏中的各个组件的事件。3.3.1主要的类:JMenuBar

22、类、JMenu类、JMenuItem类、JRadioButton类都是设计GUI(图形用户界面)的包javax.swing中的类。可以用import引用这些类。JMenuBar类是JComponent类的子类负责创建菜单条的。即JMenuBar类的一个实例就是一个菜单条。JMenu类是JComponent类的子类负责创建菜单组的。即JMenu类的一个实例化就是一个菜单。JMenuItem类是JMenu类的父类负责创建菜单项。即JMenuItem类的一个实例化就是一个菜单项。JRadioButtonMenuItem类负责一个单选按钮菜单项的实现。JRadioButtonMenuItem 是属于一

23、组菜单项中的一个菜单项,该组中只能选择一个项。ButtonGroup 类用于为一组按钮创建一个多斥作用域。使用相同的 ButtonGroup 对象创建一组按钮意味着“开启”其中一个按钮时,将关闭组中的其他所有按钮。SpiderMenuBar类是此文件的一个主类是JMenuBar的子类。Show类是Thread的子类用于创建线程。3.3.2主要的变量:jNewGame、jHelp变量分别是JMenu类创建的“游戏”、“帮助”菜单。jItemAbout、jItemOpen、jItemPlayAgain、jItemExit、jItemValid变量分别是JMenuItem类创建的“关于”、“开局”、

24、“重新发牌”、“退出”、“显示可行操作”菜单项。jRMItemEasy、jRMItemNormal、jRMItemHard变量分别是JRadioButtonMenuItem类创建的“简单:单一花色”、“中级:双花色”、“高级:四花色”的单选按钮菜单项。group变量是ButtonGroup 类创建的一组按钮选择对象。spider变量是Spider类创建的对象用于主界面窗口的实现。将在Spider.java文件中介绍。3.3.3主要的方法:public JMenuBar()创建新的菜单栏。public JMenu(String text)构造一个新菜单,用提供的字符串作为其文本。public J

25、MenuItem(String text)创建带有指定文本的菜单项。public JRadioButtonMenuItem(String text)创建一个带文本的单选按钮菜单项。public ButtonGroup()创建一个新的单选按钮对象组。 public void add(MenuItem item)向菜单增加由参数item指定的菜单项对象。public void add(AbstractButton b)将单选按钮添菜单项加到组中。public void add(JMenu c)将指定的菜单添加加到菜单栏中。public void addSeparator()将新分隔符追加到菜单的末

26、尾。所需要添加的事件处理的接口方法将在后来的模块中进行介绍。事件源即能够产生的事件的对象。监视器用于对事件源进行监视以便对发生的事件做出处理。事件源通过调用相应的方法将某个对象作为自己的监视器。这个方法是addActionListen(ActionListener listen)该方法中的参数是ActionListener类型的接口。因此必须用ActionListener接口的类创建的对象传递给该方法的参数,使得该对象成为事件源的的监视器。监视器负责调用特定的方法处理事件,创建监视器的类必须提供处理事件的特定的方法,即实现接口方法。public void addMenuListener(Men

27、uListener l)添加菜单事件的侦听器。void menuSelected(MenuEvent e)选择某个菜单时调用。 void menuDeselected(MenuEvent e)取消选择某个菜单时调用。 void menuCanceled(MenuEvent e)取消菜单时调用。3.4模块二的详细介绍:PKCard的功能是定义纸牌的属性,包括名称,位置等相关信息。并通过相关方法实现了纸牌的移动等。3.4.1主要的类:JDialog类是创建对话框窗口的主要类。可以使用此类创建自定义的对话框,或者调用 JOptionPane 中的多个类方法来创建各种标准对话框。Jpanel类是一个面

28、板类负责创建一个面板容器,再向这个面板添加组件,然后将面板添加到底层容器中。JTabbedPane类负责创建一个组件,它允许用户通过单击具有给定标题和/或图标的选项卡,在一组组件之间进行切换。JTextArea类负责创建一个显示纯文本的多行区域。它作为一个轻量级组件Container类负责创建一个容器对象,此容器可以包含其它组件。AboutDialog类是JDialog类的子类,负责创建一个显示对话框。3.4.2主要的变量:jMainPane、jPanel1、jPanel2、变量是JPane1创建的面板容器。jt1、jt2是JTextArea类创建的文本区对象。jTabbedPane是JTab

29、bedPane类创建的选项卡窗格对象。c变量是Container类创建的容器。3.4.3主要的方法:public JTabbedPane()创建一个具有默认的 JTabbedPane.TOP 选项卡布局的空 TabbedPane.public JDialog()创建一个没有标题并且没有指定 Frame 所有者的无模式对话框。一个共享的、隐藏的窗体将被设置为该对话框的所有者。public JPanel()创建具有双缓冲和流布局的新面板容器。public JTextArea(String text)构造显示指定文本为text的新的文本区。public void setTittle(String s

30、)设置一个标题为s的对话框。public void setSize(int width,int heigth)创建宽为width,高位heigth大小的对话框。public void setResizable(boolean b)设置对话框是否可调整大小。b为true时,对话框可调整大小。public void setDefaultCloseOperation(int operation)该方法用来设置单机窗体右上角的关闭图标后,程序会做出怎样的处理。operation取DISPOSE_ON_CLOSE时/隐藏当前窗口,并释放窗体所占有的其他资源。public void setVisible(

31、boolean b)设置框口是可见还是不可见。b取true是为可见。public Container getContentPane()方法可得到窗口的内容面板容器。public void JTextArea.setSize(int width,int heigth)设置文本区的大小。public void JTextArea.setEditable(boolean b)设置文本区是否可以编辑。public void JTextArea.setLineWrap(boolean b)设置文本区中输入的文本是否可以实现在右边界自动换行。public void JTextArea.setFont(Fo

32、nt f)设置文本区内的字体。public void JTextArea.setForeground(Color c)设置文本区组件的前景色。public void addTab(String title,Icon icon,Component component,String tip)添加由 title 和/或 icon 表示的 component 和 tip,其中任意一个都可以为 nul参数:title - 此选项卡中要显示的标题,icon - 此选项卡中要显示的图标,component - 单击此选项卡时要显示的组件,tip - 此选项卡要显示的工具提示。public void pack

33、()调整此窗口的大小,以适合其子组件的首选大小和布局。3.5模块三的详细介绍:PKCard的作用是定义纸牌的属性,包括名称、位置等相关信息。并通过相关方法实现纸牌的移动。3.5.1主要类介绍:JLable类负责创建标签对象。标签用于短文本字符串或图像或二者的显示区。Thread类负责创建线程对象。MouseListener接口、MouseMotionListener接口负责处理事件源所触发的鼠标事件,包括处理鼠标按下、释放、进入、退出、单击、连击、拖动、移动所触发鼠标事件。Point类负责创建表示 (x,y) 坐标空间中的位置的点对象,以整数精度指定。MouseEvent类负责创建鼠标所发生的

34、事件对象。Flash类负责创建线程对象,不断的获取下一张纸牌。PKCard类是文件的主类,实现MouseListener接口的JLable的子类。负责创建纸牌对象。3.5.2主要变量:Point point变量表示纸牌的位置对象。Point initPoint表示纸牌的初始化位置对象。int value变量表示纸牌的内容值。int type变量表示纸牌的类型。String name变量表示纸牌的名称。Container pane变量表示标签内主容器。boolean canMove 变量表示纸牌是否可以移动,值为true时,可以移动。boolean isFront变量表示纸牌是否正面显示,值为t

35、rue时,则为正面显示。PKCard previousCard变量表示上面一张纸牌3.5.3主要方法:public void flashCard(PKCard card)方法启动Flash线程不停的获取下一张纸牌直至完成。public void run()方法为纸牌的正面设置白色图片。card.updateUI()方法将UI属性重置为当前外观的值。public void mousePressed(MouseEvent mp)方法按下鼠标时事件的处理方法。public void mouseReleased(MouseEvent mr)方法释放鼠标时事件处理的方法。public void setN

36、extCardLocation(Point point)方法放置鼠标时事件处理方法。public int whichColumnAvailable(Point point)方法为判断可用列。public void mouseDragged(MouseEvent argO)方法鼠标拖动纸牌时事件处理方法。public void moving(int x,int y)方法将纸牌移动(x,y)个位置。pane.setComponentZOrder(this,1)方法将主件移动到容器中指定的顺序索引。public PKCard(String name,Spider spider)方法纸牌的构造函数。p

37、ublic void turnFront()方法令纸牌显示正面。public void turnRear()方法令纸牌显示背面。public void moveto(Point point()方法将纸牌移动到点pointpublic void setCanMove(boolean can)方法判断纸牌是否能够移动。public boolean isCardFront()方法判断纸牌是否正面显示。public boolean isCardCanMove()方法判断纸是否能够移动。public int getCardValue()方法获得纸牌的内容值。public int getCardType(

38、)方法获得纸牌的类型。3.6模块四的详细介绍:Spider.java文件是蜘蛛纸牌游戏的主类文件,其主要功能是生成蜘蛛纸牌游戏的框架,实现游戏中的方法,包括纸牌的随机生成、位置的摆放等。3.6.1主要的类: JFrame类及其子类负责创建的对象称为窗体。JLable类负责创建标签对象。标签用于短文本字符串或图像或二者的显示区。Container类负责创建一个容器对象,此容器可以包含其它组件。PKCard类负责创建纸牌对象。Hashtable类实现一个哈希表,该哈希表将键映射到相应的值。3.6.2主要的变量:public static final int EASY=1;代表“简单”等级。publ

39、ic static finalint NATURAL=2 代表“普通”等级。public static finalint HARD=3 代表“难”等级。private int grade=Spider.EASY设定初始等级为简单等级;private Container pane 变量为Container类创建的面板容器。private PKCard card变量为PKCard类创建的纸牌数组。private JLable clickLable1变量为JLable类创建的右下角发牌区的鼠标点击响应区域。private JLable groudLable变量为JLable类创建的背景框数组。Hsh

40、table table变量为Hashtable类创建的一个哈希表对象,用于存储键值数据对。private int c变量为纸牌的数量。private int n变量为纸牌的等级。private int a变量为纸牌所在的列号。private int finish变量为纸牌从小到大排列成功的次数。3.6.3主要的方法:public void setTittle(String s)设置一个标题为s的窗体。public void setVisible(boolean b)设置框体是可见还是不可见。b取true是为可见。public void setSize(int width,int heigth)

41、创建宽为width,高位heigth大小的窗体。public void setDefaultCloseOperation(int operation)该方法用来设置单机窗体右上角的关闭图标后,程序会做出怎样的处理。operation取EXIT_ON_CLOSE时结束窗体所在的应用程序。public void setMenuBar(MenuBar mb)将此窗体的菜单栏设置为指定的菜单栏。public void pane.setBackground(Color c)设置面板的背景颜色。public void pane.setLayout(布局对象)设置面板的布局。public Container getContentPane()方法可得到窗口的内容面板容器。public void setBounds(int a,int b,int weidth, int heigth)设置出现在屏幕中的组件距离屏幕的左面a个像素,距屏幕上面b个像素,组件宽为weidth,高为heigth。public void n

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

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁