零基础学JavaWeb开发课程设计报告-基于bs模式的牌类游戏开发.doc

上传人:椰子壳 文档编号:5028132 上传时间:2020-01-29 格式:DOC 页数:18 大小:284KB
返回 下载 相关 举报
零基础学JavaWeb开发课程设计报告-基于bs模式的牌类游戏开发.doc_第1页
第1页 / 共18页
零基础学JavaWeb开发课程设计报告-基于bs模式的牌类游戏开发.doc_第2页
第2页 / 共18页
零基础学JavaWeb开发课程设计报告-基于bs模式的牌类游戏开发.doc_第3页
第3页 / 共18页
零基础学JavaWeb开发课程设计报告-基于bs模式的牌类游戏开发.doc_第4页
第4页 / 共18页
零基础学JavaWeb开发课程设计报告-基于bs模式的牌类游戏开发.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《零基础学JavaWeb开发课程设计报告-基于bs模式的牌类游戏开发.doc》由会员分享,可在线阅读,更多相关《零基础学JavaWeb开发课程设计报告-基于bs模式的牌类游戏开发.doc(18页珍藏版)》请在三一文库上搜索。

1、计算机科学与技术学院课程设计报告2010 20011 学年第 一 学期课程名称 零基础学JavaWeb开发 设计题目 基于b/s模式的牌类游戏开发 学生姓名 学 号 专业班级 指导教师 2010 年 12 月 25 日目 录一、功能描述3二、理论基础4 Java语言简介4Java运行环境JDK4线程4三、总体设计6四、代码实现7五、运行结果15六、参考文献17 摘要Java是一种解释型的、面向对象的编程语言。适用于各种应用开发,尤其是网络应用,网络服务,嵌入式系统等。它具有简单易学、面向对象、分布式、健壮性、安全稳定、平台无关性、支持多线程、高性能、动态性等特点。在本课程设计中,通过基于b/s

2、模式的牌类游戏开发,主要实现游戏的发牌、难度设置等功能。同时将理论知识与具体实现相结合,巩固对Java的相关方法与概念的理解。关键字:JDK运行环境 线程 蜘蛛纸牌功能描述基于b/s模式的牌类游戏,通过鼠标操作,将电脑多次分发的牌,按照相同的花色由大到小顺序排列起来,直到桌面的牌全部消失,即为胜利。它主要功能包括如下:开局:任何时候都可以重新开始一盘新的游戏。难度选择:包括简单(单色),中级(双色),高级(四色)。发牌。显示可行操作:提示当前可行操作。理论基础1、 Java语言简介Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多

3、线程的,动态的语言。 Java语言其实最早是诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。在Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编

4、程语言显得无能为力,而SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都想到:噢,这正是我想要的。于是Java成了一颗耀眼的明星,丑小鸭一下了变成了白天鹅。 2、 Java运行环境JDK Java的开发环境有不同的版本,如sun公司的Java Development Kit, 简称JDK。后来微软公司推出了支持Java规范的Microsoft Visual J+ Java开发环境,简称 VJ+。JDK是Sun Microsystems针

5、对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。 JDK运行环境的建立: 1.下载j2sdk 1.6.0_21或更高版本 (http:/,建议同时下载其Java Documentation,这是Java帮助文档) 。2.运行刚刚下载的安装程序进行正式安装(以下假设安装于c:jdk1.6.0_21,建议安装路径不要有空格,不宜安装在Program Files目录下!)。 3.设置运行环境参数:a.如果是Win95/98,在autoexec

6、.bat的最后面添加如下3行语句: set JAVA_HOME=c:jdk1.6.0_21 set PATH=%JAVA_HOME%bin;%PATH% set CLASSPATH=.;%JAVA_HOME%lib 注意:-可用dos命令notepad c:autoexec.bat打开记事本,加入上面的3行语句。b.如果是Windows2000或XP系统,使用鼠标右击“我的电脑”-属性-高级-环境变量-系统变量-新建-变量名:JAVA_HOME 变量值:c:jdk1.6.0_21 ;系统变量-新建-变量名:CLASSPATH 变量值:.;%JAVA_HOME%lib 系统变量-编辑-变量名:P

7、ath 在变量值的最前面加上:%JAVA_HOME%bin; 3、 线程线程(thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。在Java中,创建线程的方法有两种:

8、一种是通过创建Thread类人子类来实现;另一种是通过实现Runnable接口的类来实现。每个线程的生命周期一共包括5种状态:出生、就绪、运行、阻塞和死亡。线程送出生到死亡的过程称为线程的生命周期。通过特定的操作可以进行状态间的转换。总体设计蜘蛛纸牌游戏共由4个部分组成,分别是:Spider.java、SpiderMenuBar.java、PKCard.java、AboutDilog.java。1、 Spider.java包含名为Spider的public类,其主要功能为生成蜘蛛纸牌游戏的框架,实现游戏中的方法,包括:纸牌的随机产生、位置的摆放等等。2、 SpiderMenuBar.java包

9、含名为SpiderMenubar的public类,其主要功能为生成蜘蛛纸牌游戏的菜单栏,实现菜单栏中的各个组件事件侦听。主要包括3个模块:图形用户界面的构建;组件监听接口的实现;显示可执行操作的线程。3、 PKCard.java包含名为PKCard.java的public类,其主要功能为:定义纸牌的属性,包括名称、位置等相关信息。通过相关方法实现了纸牌的移动等。4、 AboutDilog.java包括名为AboutDialog的public类,其主要功能为生成蜘蛛纸牌游戏的帮助栏。代码实现1、 Spider.java主要代码如下: /* *开始新游戏 */public void newGame

10、() this.randomCards(); this.setCardsLocation(); this.setGroundLabelZOrder(); this.deal(); /* *返回值:int *返回牌的数量 */public int getC() return c; /* *设置等级 */public void setGrade(int grade) this.grade = grade; /* *纸牌初始化 */public void initCards() /如果纸牌已被赋值,即将其从框架的面板中移去if (cards0 != null) for (int i = 0; i 1

11、04; i+) pane.remove(cardsi); int n = 0; /通过难度等级,为n赋值if (this.grade = Spider.EASY) n = 1; else if (this.grade = Spider.NATURAL) n = 2; else n = 4; /为card赋值 for (int i = 1; i = 8; i+) for (int j = 1; j = 13; j+) cards(i - 1) * 13 + j - 1 = new PKCard(i % n + 1) + - + j, this); /随机纸牌初始化this.randomCards

12、(); /* *纸牌随机分配 */public void randomCards() PKCard temp = null; /随机生成牌号for (int i = 0; i 52; i+) int a = (int) (Math.random() * 104); int b = (int) (Math.random() * 104); temp = cardsa; cardsa = cardsb; cardsb = temp; /* *设置还原 */public void setNA() a = 0; n = 0; /* *设置纸牌的位置 */public void setCardsLoca

13、tion() table = new Hashtable(); c = 0; finish = 0; n = 0; a = 0; int x = 883; int y = 580;/初始化待展开的纸牌 for (int i = 0; i 6; i+) for (int j = 0; j 5; i-) for (int j = 0; j = 104) continue; pane.add(cardsn); cardsn.turnRear(); cardsn.moveto(new Point(x, y); table.put(new Point(x, y), cardsn); x += 101;

14、x = 20;2、 SpiderMenuBar.java主要代码如下:import javax.swing.JMenuBar;import 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(游

15、戏); JMenu jHelp = new JMenu(帮助); /生成菜单项 JMenuItem jItemAbout = new JMenuItem(关于); JMenuItem jItemOpen = new JMenuItem(开局); JMenuItem jItemPlayAgain = new JMenuItem(重新发牌); /生成单选框 JRadioButtonMenuItem jRMItemEasy = new JRadioButtonMenuItem(简单:单一花色); JRadioButtonMenuItem jRMItemNormal = new JRadioButto

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

17、; jNewGame.add(jItemPlayAgain); jNewGame.add(jItemValid); jNewGame.addSeparator(); jNewGame.add(jRMItemEasy); jNewGame.add(jRMItemNormal); jNewGame.add(jRMItemHard); jNewGame.addSeparator(); jNewGame.add(jItemExit); ButtonGroup group = new ButtonGroup(); group.add(jRMItemEasy); group.add(jRMItemNorm

18、al); group.add(jRMItemHard); jHelp.add(jItemAbout); this.add(jNewGame); 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

19、.event.ActionListener() public void actionPerformed(java.awt.event.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.addActionListen

20、er(new java.awt.event.ActionListener() public void actionPerformed(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

21、e) main.setGrade(Spider.EASY); main.initCards(); main.newGame(); ); /“中级”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

22、(new java.awt.event.ActionListener() public void actionPerformed(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() 30 & b 7

23、1)a+;else if (b 71)a = -1;if (a != -1)Point p = main.getLastCardLocation(a);if (p = null) p = main.getGroundLabelLocation(a);b = y - p.y;if (b = 96)a = -1;return a; public void mouseEntered(MouseEvent arg0) public void mouseExited(MouseEvent arg0) 4、 AboutDialog.java代码实现:/* *“关于”窗口 */public class Ab

24、outDialog extends JDialogJPanel jMainPane = new JPanel();JTabbedPane jTabbedPane = new JTabbedPane();private JPanel jPanel1 = new JPanel();private JPanel jPanel2 = new JPanel();private JTextArea jt1 = new JTextArea(将电脑多次分发给你的牌按照相同的花色由大至小排列起来。直到桌面上的牌全都消失。); private JTextArea jt2 = new JTextArea(该游戏中,

25、纸牌的图片来自于Windows XP的纸牌游戏,通过截屏所得,图片权属于皇运才所有!); /* *构造函数 */public AboutDialog()setTitle(蜘蛛牌);setSize(300,200);setResizable(false);setDefaultCloseOperation (WindowConstants.DISPOSE_ON_CLOSE); Container c = this.getContentPane();jt1.setSize(260,200);jt2.setSize(260,200);jt1.setEditable(false);jt2.setEdit

26、able(false);jt1.setLineWrap(true); jt2.setLineWrap(true); jt1.setFont(new Font(楷体_GB2312, java.awt.Font.BOLD, 13);jt1.setForeground(Color.blue);jt2.setFont(new Font(楷体_GB2312, java.awt.Font.BOLD, 13);jt2.setForeground(Color.black);jPanel1.add(jt1);jPanel2.add(jt2);jTabbedPane.setSize(300,200);jTabbe

27、dPane.addTab(游戏规则, null, jPanel1, null);jTabbedPane.addTab(声明, null, jPanel2, null);jMainPane.add(jTabbedPane);c.add(jMainPane);pack();this.setVisible(true);运行结果1运行程序:将文件Spider.java、SpiderMenuBar.java、PKCard.java、AboutDilog.java。以及images图像文件夹保存在同一个文件夹中,利用javac命令对文件进行编译,使用的命令如下:运行界面如下图:javac Spider.java然后,利用java命令执行程序,使用的命令如下:java Spider2 程序运行结果如图:“游戏”菜单如图:“帮助”菜单如图: 参考文献1 刘聪编. 零基础学Java Web开发. 机械工业出版社.2007.122 李芝兴,杨瑞龙编.Java EE Web程序设计(Eclipse平台).机械工业出版社,2008.123 朱喜福等编.Java程序设计.北京:人民邮电出版社.20054 http:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1