ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:260.76KB ,
资源ID:20106371      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20106371.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Eclipse+J2se平台的蜘蛛纸牌游戏程序设计.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于Eclipse+J2se平台的蜘蛛纸牌游戏程序设计.docx

1、基于Eclipse+J2se平台的蜘蛛纸牌游戏程序设计 佛山科学技术学院可视化编程技术课程设计报告基于EclipseJ2se平台的蜘蛛纸牌游戏程序设计学生姓名:符彩玉学 号:20140910132年级专业:14级教育技术学1班指导老师:容汝佳学 院:人文与教育学院广东佛山提交日期:2016年12月目 录1. 前言22概要设计3 2.1 开发环境 3 2.2 蜘蛛纸牌功能 3 2.3 界面设计 3 2.4 类的框架结构图 43. 详细设计 4 3.1 使用的java类的说明 4 3.2 类的主要方法 53.2.1 处理按了运算符后的计算 53.2.2 处理输入字符 63.2.3 进制的转换 63

2、.2.4 设计总体认识 73.2.5 程序流程图 8 4. 运行结果85. 测试分析9 5.1 程序运行情况9 5.2 程序异常处理96. 源程序9参考文献25设计总结25摘要:本程序是通过java语言编写的一个知蜘蛛纸牌游戏,实现了游戏的难度选择、开局、重新发牌以及可视化的相关操作界面。并通过设计鼠标事件,引入线程,构建游戏程序框架完成了对该游戏的难度选择、开局、发牌、显示可执行操作的各个基本功能,具有非常强大的娱乐性。关键字:java、蜘蛛纸牌、方法、事件、操作界面1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了

3、,在学习了Java语言之后,我决定使用Java语言编写一个简单的蜘蛛纸牌,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者

4、是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。Java语言是由C+语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java语言去掉了C+语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。2 概要设计2.1开发环境 开发平台:Ecli

5、pse 开发工具:JDK2.2蜘蛛纸牌功能该游戏通过鼠标操作,将电脑多次分发的纸牌,按照相同的花色由大到小排列起来,直到桌面上的纸牌全都消失,即为胜利。包括如下功能:(1)开局:任何时候可以重新开始一盘新的游戏。(2)重新发牌:当需要发牌时,单击界面右下的未发牌叠,执行发牌操作时,界面上方的牌叠位都会发一张牌。(3)显示可行操作:提示当前可行操作。(4)难度选择:包括简单(单色)、中级(双色)、高级(四色)。(5)退出: 结束游戏。(6)帮助:对软件的简单介绍和编制说明2.3界面设计图2.3 蜘蛛纸牌界面板2.4类的框架结构图SpiderMenu.class 如图2.4A所示:Spider.c

6、lass 如图2.4B所示AboutDialog.class 如图2.4C所示PKCard.class 如图2.4D所示 图2.4A 图2.4B 图2.4C 图2.4D3详细设计3.1蜘蛛纸牌使用的Java类的说明3.1.1JDialog 类是创建对话框窗口的主要类。可以使用此类创建自定义的对话框, 或者调用 JOptionPane 中的多个类方法来创建各种标准对话框。3.1.2 Jpanel 类是一个面板类负责创建一个面板容器,再向这个面板添加组件,然 后将面板添加到底层容器中。 3.1.3AboutDialog 类是JDialog 类的子类,负责创建一个显示对话框。3.1.4 JMenuB

7、ar 类的一个实例就是一 个菜单条。 JMenu 类是JComponent 类的子类负责创建菜单组的。即JMenu 类的一个实例 化就是一个菜单。 JMenuItem 类是JMenu 类的父类负责创建菜单项。即JMenuItem 例化就是一个菜单项。3.2类的主要方法3.2.1纸牌移动放置操作:/用鼠标拖动纸牌publicvoidmouseDragged(MouseEventarg0)if(canMove)intx=0;inty=0;Pointp=arg0.getPoint();x=p.x-point.x;y=p.y-point.y;this.moving(x,y);/*方法:放置纸牌*/pu

8、blicvoidsetNextCardLocation(Pointpoint)PKCardcard=main.getNextCard(this);if(card!=null)if(point=null)card.setNextCardLocation(null);main.map.remove(card.getLocation();/先从HashMap中删除cardcard.setLocation(card.initPoint);/为card设置新的坐标main.map.put(card.initPoint,card);/再将card添加到HashMap中elsepoint=newPoint(

9、point);point.y+=20;card.setNextCardLocation(point);point.y-=20;main.map.remove(card.getLocation();card.setLocation(point);main.map.put(card.getLocation(),card);card.initPoint=card.getLocation(); 3.2.2纸牌随机分配publicvoidrandomCards()/将纸牌的顺序打乱,否则牌号的将是从A到K的出现规律PKCardtemp=null;/随机生成牌号for(inti=0;i52;i+)inta

10、=(int)(Math.random()*104);intb=(int)(Math.random()*104);temp=cardsa;cardsa=cardsb;cardsb=temp;3.2.3右下角发牌区纸牌的初始化代码:intx=883;/将坐标定位到右下角发牌区inty=580;for(inti=0;i6;i+)/初始化右下角发牌区的纸牌,共6叠for(intj=0;j10;j+)intn=i*10+j;pane.add(cardsn);/将card转向背面cardsn.turnRear();/将card放在固定的位置上cardsn.moveto(newPoint(x,y);/将ca

11、rd的位置及相关信息存入map.put(newPoint(x,y),cardsn);x+=10;/共6叠纸牌,最上面一叠纸牌的x坐标为883,再往下,x依次增加103.2.4设计的总体认识1. JAVA设计的摘要2. JAVA设计的目录结构3. JAVA设计的概要和详细设计4. JAVA设计的版权意识5. JAVA设计需要编译的环境6. JAVA设计的实用性3.2.5程序流程图 图3绘制蜘蛛纸牌方法PAD图4运行结果4.1游戏菜单栏内游戏菜单及帮助菜单功能展示: 4.2不同难度等级 单一花色(简单)双花色(中级)7. 四花色(高级)4.3有空位时不能发牌:4.4游戏结束时收牌:5测试分析5.1

12、程序异常处理: 游戏过程中,如果移动纸牌时,中间有空位时,单击发牌,会弹出“提示对话框”。public void deal() this.setNA(); /判断10列中是否空列 for (int i = 0; i 10; i+) if (this.getLastCardLocation(i) = null) JOptionPane.showMessageDialog(this, 有空位不能发牌!, 提示, JOptionPane.WARNING_MESSAGE); return; 6 程序清单: 以下是主菜单界面的主要代码:import javax.swing.JMenuBar;import

13、 javax.swing.JMenu;import javax.swing.JMenuItem;import javax.swing.JRadioButtonMenuItem;import javax.swing.ButtonGroup;public class SpiderMenuBar extends JMenuBar /生成spider框架对象 Spider main = null; /生成菜单组 JMenu jNewGame = new JMenu(游戏); JMenu jHelp = new JMenu(帮助); /生成菜单项 JMenuItem jItemAbout = new J

14、MenuItem(关于); JMenuItem jItemOpen = new JMenuItem(开局); JMenuItem jItemPlayAgain = new JMenuItem(重新发牌); /生成单选框 JRadioButtonMenuItem jRMItemEasy = new JRadioButtonMenuItem(简单:单一花色); JRadioButtonMenuItem jRMItemNormal = new JRadioButtonMenuItem(中级:双花色); JRadioButtonMenuItem jRMItemHard = new JRadioButt

15、onMenuItem(高级:四花色); JMenuItem jItemExit = new JMenuItem(退出); JMenuItem jItemValid = new JMenuItem(显示可行操作); /* *构造函数,生成JMenuBar的图形界面 */ public SpiderMenuBar(Spider spider) this.main = spider; /* *初始化“游戏”菜单栏 */ jNewGame.add(jItemOpen); jNewGame.add(jItemPlayAgain); jNewGame.add(jItemValid); jNewGame.a

16、ddSeparator(); jNewGame.add(jRMItemEasy); jNewGame.add(jRMItemNormal); jNewGame.add(jRMItemHard); jNewGame.addSeparator(); jNewGame.add(jItemExit); ButtonGroup group = new ButtonGroup(); group.add(jRMItemEasy); group.add(jRMItemNormal); group.add(jRMItemHard); jHelp.add(jItemAbout); this.add(jNewGam

17、e); this.add(jHelp); /为组件添加事件监听并实现 /“开局” jItemOpen.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) main.newGame(); ); /“重新发牌” jItemPlayAgain.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.even

18、t.ActionEvent e) if(main.getC() 60) main.deal(); ); /显示可行操作 jItemValid.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new Show().start(); ); /“退出” jItemExit.addActionListener(new java.awt.event.ActionListener() public void actionPerfor

19、med(java.awt.event.ActionEvent e) main.dispose(); System.exit(0); ); /“简单级别”默认已选 jRMItemEasy.setSelected(true); /“简单级别” jRMItemEasy.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) main.setGrade(Spider.EASY); main.initCards(); main.newGa

20、me(); ); /“中级” jRMItemNormal.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) main.setGrade(Spider.NATURAL); main.initCards(); main.newGame(); ); /“高级” jRMItemHard.addActionListener(new java.awt.event.ActionListener() public void actionP

21、erformed(java.awt.event.ActionEvent e) main.setGrade(Spider.HARD); main.initCards(); main.newGame(); ); jNewGame.addMenuListener(new javax.swing.event.MenuListener() public void menuSelected(javax.swing.event.MenuEvent e) if(main.getC() 60) jItemPlayAgain.setEnabled(true); else jItemPlayAgain.setEna

22、bled(false); public void menuDeselected(javax.swing.event.MenuEvent e) public void menuCanceled(javax.swing.event.MenuEvent e) ); /“关于” jItemAbout.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new AboutDialog(); ); /* *构造线程:显示可以执行的操作

23、*/ class Show extends Thread public void run() main.showEnableOperator(); 游戏等级、框架属性、纸牌初始化、异常处理及成功处理代码:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;public class Spider extends JFrame /整型变量,表示难度等级为:简单 public static final int EASY = 1; /整型变量,表示难度等级为:普通 public static

24、 final int NATURAL = 2; /整型变量,表示难度等级为:难 public static final int HARD = 3; /设定初始难度等级为简单 private int grade = Spider.EASY; private Container pane = null; /生成纸牌数组 private PKCard cards = new PKCard104; private JLabel clickLabel = null; private int c = 0; private int n = 0; private int a = 0; private int

25、finish = 0; Hashtable table = null; private JLabel groundLabel = null; public static void main(String args) Spider spider = new Spider(); spider.setVisible(true); /* *构造函数 */ public Spider() /改变系统默认字体 Font font = new Font(Dialog, Font.PLAIN, 12); java.util.Enumeration keys = UIManager.getDefaults().

26、keys(); while (keys.hasMoreElements() Object key = keys.nextElement(); Object value = UIManager.get(key); if (value instanceof javax.swing.plaf.FontUIResource) UIManager.put(key, font); setTitle(蜘蛛牌); setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); /设置框架的大小 setSize(1024, 742); /生成SpiderMenuBar对象,并放置在框架之上 setJMenuBar(new SpiderMenuBar(this); pane = this.getContentPane(); /设置背景颜色 pane.setBackground(new Color(0, 112, 26); /将布局管理器设置成为null pane.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1