《java课程设计烟花游戏.docx》由会员分享,可在线阅读,更多相关《java课程设计烟花游戏.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、java课程设计烟花游戏 烟花嬉戏 1. 课程设计的目的 随着现代科学技术的进步,Java语言在编程方面的优势使得编程有了更好的选择。Java语言最大的特点是具有跨平台性,使其不受平台不同的影响。在网络飞速发展的今日,互联网成为人们快速获得、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。 为了加深和巩固所学的Java学问,增加运用Java语言编程的实力,深刻把握Java语言的重要概念及其面对对象的特性,驾驭JDK、JCreator等开发工具的运用,拓宽常用类库的应用,熬炼自己应用面对对象的思想和设计方法解决实际问题的实力,使我们能更好的应用所学的课程学问解决实际
2、问题,达到学为所用的目的。加深对Java基本学问点要素和限制结构的理解,驾驭Java的基本内容及程序设计的基本方法与编程技巧。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今日,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开
3、发工具都有优缺点,对于开发者来说,重要的是要依据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。能够娴熟地驾驭在系统上编辑、编译、连接和运行Java程序的方法。通过设计一个完整程序,来达到把所学到的学问活学活用把所学课程及相关学问加以融会贯穿,全面驾驭Java语言的编程思想及面对对象程序设计的方法。java编程语言在编程方面的详细应用,以及运用面对对象方法,对小应用程序进行需求分析、概要设计、具体设计,最终运用Java编程实现的全过程。在编程我们运用的java语言,是目前比较流行的编程语言。在当今这个的时代,java语言在编程方面的优势使得编程有了更好的选择。Java语言最
4、大的特点是具有跨平台性,使其不受平台不同的影响,得到了广泛的应用。学习任何学问得目的都是要将它运用到实践中去,所以我们要运用已有的学问,独立得将这个课程设计完成,只有这样,我们才能将学问变成本事,变成属于自己得东西,通过一个学习得学习,我们已经有可肯定得Java基础,现在我们就要利用这些基础,来完成课程设计。2. 设计方案论证 2.1设计思路 本次课程设计主要是用java语言编写程序实现放烟花的小嬉戏。执行本例后,用鼠标点击阅读器中的面板,释放烟花,烟花可以随鼠标的而改变,在不同的位置绽放,面板上将出现五彩缤纷的烟花效果。烟花可以同时绽放。本例因为要模拟烟花效果,所以首先定义执行程序主线程的函
5、数run()对一个烟花进行绘制。在函数run()中定义Graphics类的对象,通过程序中的算法来绘制烟花。客户端发送的信息应当分为公用以及私有的信息,然后SendMessageCenter依据信息的类别来推断应当将信息发送给哪些用户。拥有权限的客户端可以动态地建立闲聊频道,然后SendMessageCenter还可以推断信息所属的闲聊频道来确定向谁发送信息客户端可以执行闲聊吩咐。全部这些问题都可以通过Client与Server类的SendMessageCenter方法建立一个不很困难的通信协议来完成。一个通信协议就是一组约定,将相关的信息制定一个格式标准,让接收方和发送方都知道这条信息将作为
6、什么身份进行通信。例如,发送方发送的信息为一般的闲聊信息时,可以增加一个前缀:words = “chatmessage“ + words,而发送一条要求返回在线名单的信息时,可以发送另一个前缀 words=“returnonlinelist“。当SendMessageCenter接收到客户端信息时,首先推断message的前缀,假如是“chatmessage“,则传送给其他客户端,假如是“returnonlinelist“,则返回给该客户端一个OnlineList。然后,因为要实现烟花的缤纷闪耀效果,所以要通过Thread类的Thread.currentThread().sleep()方法使当
7、前线程睡眠,让用户观赏到当前的绘制效果。最终,因为要实现人机交互.,所以首先要通过mousePressed(MouseEvent e)函数来实现对鼠标事务的监听,这样当按下鼠标时,产生一个新线程就可以看到一个新的烟花效果 2.2设计方法 表1 程序中涉及的自定义类表 类名 作用 父类 Fireworks 对小程序进行变量和颜色的初始化 Applet 在设计烟花嬉戏时,须要编写1个Java源文件:Fireworks。 作用是对小程序进行变量和颜色的初始化。程序中涉及的自定义类有Fireworks,其作用如表1所示: (1) 嬉戏主界面模块: 嬉戏主界面模块,主要包括嬉戏图形区域界面、嬉戏起先按钮
8、、暂停嬉戏按钮、关闭按钮。嬉戏的主界面应当力求美观,爽心悦目。 嬉戏的主界面是进入嬉戏后,能够给玩家第一感官的部分,主要包括嬉戏图形区域界面、嬉戏的速度选择更新界面、嬉戏分数的显示更新界面、新生方块的预览、嬉戏起先按钮、暂停嬉戏按钮、退出嬉戏按钮以及嬉戏排行榜按钮。从很大程度上确定了玩家对嬉戏的爱好问题,因此,嬉戏的主界面应当力求美观,爽心悦目。在嬉戏性能方面,本软件在设计方面本着便利、好用及消遣性高的宗旨,在对界面进行设计的过程中,始终坚持清楚明白,在性能方面能够实现效率高,不易出错等优点。(2) 嬉戏限制模块: 进入嬉戏后,点击主屏幕。即会有烟花从底部涌出烟花,并在点击处爆炸燃烧。嬉戏的操
9、作和画面都给嬉戏提高了嬉戏的消遣性。为了能够给玩家一个很好的嬉戏环境。 对于烟花嬉戏,其主要优点在于嬉戏操作简洁,画面感强。对于大众是休闲消遣的好项目。并且制作简洁,易懂,奇妙的运用了我们所学习的java基础学问。 系统的整体布局为:CardLayout布局, 采纳了文本框、按钮、面板、框架等组件,菜单主要有run按钮笑脸和哭脸,按钮的功能是重新起先新的嬉戏。MineArea类是javax.swing包中Jpanel容器的子类,实现了ActionListener和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGa
10、me窗口的中心。标明MineArea类的主要成员变量、方法以及和MineGame类之间组合关系的UML图如图1所示。 图1. MineArea类的UML 2.3功能模块 依据本次课程设计的目的和以上的功能描述,将该烟花嬉戏的系统分为个主要模块:背景模块、限制模块、变量模块、绘图模块和颜色模块。系统功能模块图,如图1所示。 烟花嬉戏 背景 模块 限制 模块 绘图模块 变量模块 颜 色模块 图2.块图烟花嬉戏系统功能模 2.31可行性论证 表2.程序中类的总结 本例学问点 一句话讲解 新学学问 运用Graphics类 绘制烟花 运用Thread类 管理线程 已学学问 运用Math类 产生随机数 运
11、用Color类 设置颜色 本例制作烟花,运行效果如图后所示。执行本例实例后,用鼠标点击阅读器中的面板,将出现五彩缤纷的烟花效果。 此课程设计的学问点有:鼠标事务的监听,Graphics类和Thread类的应用。2.4程序中主要方法说明 2.4.1 public void init() 该方法设置烟花嬉戏小程序的背景色。2.4.2 public void paint(Graphics g) 使该程序可以作为应用程序运行。2.4.3 public void run() 变量初始化。如程序中: public class Fireworks extends Applet implements Mous
12、eListener,Runnable int x,y; int top,point; /* *对小程序进行变量和颜色的初始化。并设置背景色为黑色 如程序中:public void init() x = 0; y = 0; /设置背景色为黑色 2.4.4 Thread.currentThread().sleep() 使当前线程睡眠。2.4.5 public void mousePressed(MouseEvent e) public void mousePressed(MouseEvent e) x = e.getX(); y = e.getY(); Thread one; one = new
13、Thread(this); one.start(); one = null; /* *实现MouseListener接中的方法。为一个空方法。2.4.6 public voidmouseReleased(MouseEvent e) public void mouseReleased(MouseEvent e) /* *实现MouseListener接中的方法。为一个空方法。 2.4.7 public void mouseEntered(MouseEvent e) public void mouseEntered(MouseEvent e) /* *实现MouseListener接中的方法。为一
14、个空方法。 */ 2.4.8 public void mouseExited(MouseEvent e) public void mouseExited(MouseEvent e) /* *实现MouseListener接中的方法。为一个空方法。 2.4.9 举例介绍程序主线程,对烟花的绘制。public static void main(String args) Fireworks applet = new Fireworks(); JFrame frame = new JFrame(“TextAreaNew“); frame.addWindowListener(new WindowAdap
15、ter() public void windowClosing(WindowEvent e) System.exit(0); ); frame.getContentPane().add( applet, BorderLayout.CENTER); frame.setSize(800,400); applet.init(); applet.start(); frame.setVisible(true); /* *程序主线程,对一个烟花进行绘制。3. 设计结果与分析 程序在JCreator中运行之后的初始界面如图2所示: 图3.烟花嬉戏程序运行初始图 程序在JCreator中运行之后,点击一下鼠标
16、放烟花如图3所示: 图4.烟花嬉戏程序运行图 点击许多下: 图5.烟花嬉戏程序运行图 程序在JCreator中运行之后,烟花绽放时如图4.5所示: 图6.烟花嬉戏程序运行图 图7.烟花嬉戏程序运行图 我所设计的烟花小嬉戏,实现简洁的休闲嬉戏功能。执行本例后,用鼠标点击阅读器中的面板,将出现五彩缤纷的烟花效果。本例因为要模拟烟花效果,所以首先定义执行程序主线程的函数run()对一个烟花进行绘制。在函数run()中定义Graphics类的对象,通过程序中的算法来绘制烟花。然后,因为要实现烟花的缤纷闪耀效果,所以要通过Thread类的Thread.currentThread().sleep()方法使
17、当前线程睡眠,让用户观赏到当前的绘制效果。最终,因为要实现人机交互.,所以首先要通过mousePressed(MouseEvent e)函数来实现对鼠标事务的监听,这样当按下鼠标时,产生一个新线程就可以看到一个新的烟花效果。4. 设计体会 这次课程设计我做的是烟花小嬉戏,主要是服务于消遣消遣。通过这次Java课程设计,综合运用本学期所学Java理论和实际学问进行一次Java编程实际训练从而培育和提高我们独立工作实力,巩固与扩充Java语言编程课程所学的内容,驾驭Java语言编程的方法和步骤,同时各科相关的课程都有了全面的复习,独立思索的实力也有了提高。在这次设计过程中,体现出自己单独设计Jav
18、a程序的实力以及综合运用学问的实力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发觉自己平常学习的不足和薄弱环节,从而加以弥补。把学过的计算机编译原理的学问强化,能够把课堂上学的学问通过自己设计的程序表示出来,加深了对理论学问的理解。现在通过自己动手做试验,从实践上相识了操作系统是如何处理吩咐的,课程设计中程序比较困难,在调试时应当细致。在老师和同学的大力帮助,我正在做系统的过程中遇到了许多问题,有的是学问存储不足,有的是考虑不够周全,之所以能够顺当实现基本功功能,离不开老师和同学的大力相助。事实证明,只靠自己是不能顺当完成一套功能完整的系统的,必需充分利用团队的力气。在这次的课程设计中不
19、仅检验了我所学习的学问,课程设计是我们专业课程学问综合应用的实践训练,也是我们迈向社会,从事职业工作前一个必不少的过程。我们不行能做到四平八稳,但肯定要做到步步扎实,作为一个程序编程人员,要保持醒悟的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。 5. 参考文献 1秦学礼等.JAVA程序设计运用教程.M中国铁路出版社,2006 2王克宏等.JAVA及其技术应用.M高等教化出版社,1999 3樊荣.JAVA网络程序设计M机械工业出版社,2004 4耿祥义,张跃平.Java课程设计M清华高校出版社,2008,11 5朱福喜,尹为民,余振坤.Java语言与面对对象程序设计M武汉高校出版社
20、 6张广彬,孟红蕊,张永宝.Java课程设计案例精编M清华高校出版社 7丁振凡.Java语言好用教程M.北京:北京邮电高校出版社,2005.2 8宛延闿.好用Java程序设计教程M.北京:机械工业出版社,2006.4 6. 附录 import java.awt.*; import java.applet.*; import java.awt.event.*; import javax.swing.*; public class Fireworks extends Applet implements MouseListener,Runnable int x,y; int top,point; /
21、* *对小程序进行变量和颜色的初始化。 */ public void init() x = 0; y = 0; /设置背景色为黑色 setBackground(Color.black); addMouseListener(this); public void paint(Graphics g) /* *使该程序可以作为应用程序运行。 */ public static void main(String args) Fireworks applet = new Fireworks(); JFrame frame = new JFrame(“TextAreaNew“); frame.addWindo
22、wListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); frame.getContentPane().add( applet, BorderLayout.CENTER); frame.setSize(800,400); applet.init(); applet.start(); frame.setVisible(true); /* *程序主线程,对一个烟花进行绘制。 */ public void run() /变量初始化 Graphics g1; g1 = getGra
23、phics(); int y_move,y_click,x_click; int v; x_click = x; y_click = y; y_move = 400; v = 3; int r,g,b; while(y_move > y_click) g1.setColor(Color.black); g1.fillOval(x_click,y_move,5,5); y_move -= 5; r = (int)Math.round(Math.random()*4321)%200)+55; g = (int)Math.round(Math.random()*4321)%200)+55; b
24、 = (int)Math.round(Math.random()*4321)%200)+55; g1.setColor(new Color(r,g,b); g1.fillOval(x_click,y_move,5,5); for(int j = 0 ;j<=10;j+) if(r>55) r -= 20; if(g>55) g -= 20; if(b>55) b -=20; g1.setColor(new Color(r,g,b); g1.fillOval(x_click,y_move+j*5,5,5); g1.setColor(Color.black); g1.fil
25、lOval(x_click,y_move+5*10,5,5); try Thread.currentThread().sleep(v+); catch (InterruptedException e) for(int j=12;j>=0;j-) g1.setColor(Color.black); g1.fillOval(x_click,y_move+(j*5),5,5); try Thread.currentThread().sleep(v+)/3); catch (InterruptedException e) y_move = 400; g1.setColor(Color.black
26、); while(y_move > y_click) g1.fillOval(x_click-2,y_move,9,5); y_move -= 5; v = 15; for(int i=0;i<=25;i+) r = (int)Math.round(Math.random()*4321)%200)+55; g = (int)Math.round(Math.random()*4321)%200)+55; b = (int)Math.round(Math.random()*4321)%200)+55; g1.setColor(new Color(r,g,b); g1.drawOval(
27、x_click-3*i,y_click-3*i,6*i,6*i); if(i<23) g1.drawOval(x_click-3*(i+1),y_click-3*(i+1),6*(i+1),6*(i+1); g1.drawOval(x_click-3*(i+2),y_click-3*(i+2),6*(i+2),6*(i+2); try Thread.currentThread().sleep(v+); catch (InterruptedException e) g1.setColor(Color.black); g1.drawOval(x_click-3*i,y_click-3*i,6
28、*i,6*i); /* *对鼠标事务进行监听。*临听其鼠标按下事务。*当按下鼠标时,产生一个新线程。*/ public void mousePressed(MouseEvent e) x = e.getX(); y = e.getY(); Thread one; one = new Thread(this); one.start(); one = null; /* *实现MouseListener接中的方法。为一个空方法。 */ public void mouseReleased(MouseEvent e) /* *实现MouseListener接中的方法。为一个空方法。 */ public void mouseEntered(MouseEvent e) /* *实现MouseListener接中的方法。为一个空方法。 */ public void mouseExited(MouseEvent e) /* *实现MouseListener接中的方法。为一个空方法。 */ public void mouseClicked(MouseEvent e)