资源描述
烟花游戏
1. 课程设计目标
伴随现代科学技术进步,Java语言在编程方面优势使得编程有了愈加好选择。Java语言最大特点是含有跨平台性,使其不受平台不一样影响。在网络飞速发展今天,互联网成为大家快速获取、公布和传输信息关键渠道,它在大家政治、经济、生活等各个方面发挥着关键作用。
为了加深和巩固所学Java知识,增强利用Java语言编程能力,深刻把握Java语言关键概念及其面向对象特征,掌握JDK、JCreator等开发工具利用,拓宽常见类库应用,锻炼自己应用面向对象思想和设计方法处理实际问题能力,使我们能愈加好应用所学课程知识处理实际问题,达成学为所用目标。加深对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是大多开发工具基础。以上每种开发工具全部有优缺点,对于开发者来说,关键是要依据自己开发规模、开发内容和软硬件环境等原因来选择一个适宜开发工具。能够熟练地掌握在系统上编辑、编译、连接和运行Java程序方法。经过设计一个完整程序,来达成把所学到知识活学活用把所学课程及相关知识加以融会贯通,全方面掌握Java语言编程思想及面向对象程序设计方法。java编程语言在编程方面具体应用,和使用面向对象方法,对小应用程序进行需求分析、概要设计、具体设计,最终使用Java编程实现全过程。
在编程我们使用java语言,是现在比较流行编程语言。在当今这个时代,java语言在编程方面优势使得编程有了愈加好选择。Java语言最大特点是含有跨平台性,使其不受平台不一样影响,得到了广泛应用。
学习任何知识得目标全部是要将它利用到实践中去,所以我们要利用已经有知识,独立得将这个课程设计完成,只有这么,我们才能将知识变成本事,变成属于自己得东西,经过一个学习得学习,我们已经有可一定得Java基础,现在我们就要利用这些基础,来完成课程设计。
2. 设计方案论证
2.1设计思绪
此次课程设计关键是用java语言编写程序实现放烟花小游戏。实施本例后,用鼠标点击浏览器中面板,释放烟花,烟花能够随鼠标而改变,在不一样位置绽放,面板上将出现五彩缤纷烟花效果。烟花能够同时绽放。本例因为要模拟烟花效果,所以首先定义实施程序根本程函数run()对一个烟花进行绘制。在函数run()中定义Graphics类对象,经过程序中算法来绘制烟花。用户端发送信息应该分为公用和私有信息,然后SendMessageCenter依据信息类别来判定应该将信息发送给哪些用户。 拥有权限用户端能够动态地建立聊天频道,然后SendMessageCenter还能够判定信息所属聊天频道来决定向谁发送信息用户端能够实施聊天命令。全部这些问题全部能够经过Client和Server类SendMessageCenter方法建立一个不很复杂通信协议来完成。一个通信协议就是一组约定,将相关信息制订一个格式标准,让接收方和发送方全部知道这条信息将作为何身份进行通信。比如,发送方发送信息为一般聊天信息时,能够增加一个前缀:words = "[chatmessage]" + words,而发送一条要求返回在线名单信息时,能够发送另一个前缀 words="[returnonlinelist]"。当SendMessageCenter接收到用户端信息时,首先判定message前缀,假如是"[chatmessage]",则传送给其它用户端,假如是"[returnonlinelist]",则返回给该用户端一个OnlineList。然后,因为要实现烟花缤纷闪烁效果,所以要经过Thread类Thread.currentThread().sleep()方法使目前线程睡眠,让用户欣赏到目前绘制效果。最终,因为要实现人机交互.,所以首先要经过mousePressed(MouseEvent e)函数来实现对鼠标事件监听,这么当按下鼠标时,产生一个新线程就能够看到一个新烟花效果
2.2设计方法
表1 程序中包含自定义类表
类名
作用
父类
Fireworks
对小程序进行变量和颜色初始化
Applet
在设计烟花游戏时,需要编写1个Java源文件:Fireworks。 作用是对小程序进行变量和颜色初始化。程序中包含自定义类有Fireworks,其作用如表1所表示:
(1) 游戏主界面模块:
游戏主界面模块,关键包含游戏图形区域界面、游戏开始按钮、暂停游戏按钮、关闭按钮。游戏主界面应该努力争取美观,爽心悦目。
游戏主界面是进入游戏后,能够给玩家第一感官部分,关键包含游戏图形区域界面、游戏速度选择更新界面、游戏分数显示更新界面、新生方块预览、游戏开始按钮、暂停游戏按钮、退出游戏按钮和游戏排行榜按钮。从很大程度上决定了玩家对游戏爱好问题,所以,游戏主界面应该努力争取美观,爽心悦目。在游戏性能方面,本软件在设计方面本着方便、实用及娱乐性高宗旨,在对界面进行设计过程中,一直坚持清楚明了,在性能方面能够实现效率高,不易犯错等优点。
(2) 游戏控制模块:
进入游戏后,点击主屏幕。即会有烟花从底部涌出烟花,并在点击处爆炸燃烧。游戏操作和画面全部给游戏提升了游戏娱乐性。为了能够给玩家一个很好游戏环境。
对于烟花游戏,其关键优点在于游戏操作简单,画面感强。对于大众是休闲娱乐好项目。而且制作简单,易懂,巧妙利用了我们所学习java基础知识。
系统整体布局为:CardLayout布局, 采取了文本框、按钮、面板、框架…等组件,菜单关键有run按钮笑脸和哭脸,按钮功效是重新开始新游戏。
MineArea类是javax.swing包中Jpanel容器子类,实现了ActionListener和MouseListener接口,所创建对象:mineArea是MineGame类中最关键组员之一,作为一个容器添加到MineGame窗口中心。标明MineArea类关键组员变量、方法和和MineGame类之间组合关系UML图图1所表示。
图1. MineArea类UML
2.3功效模块
依据此次课程设计目标和以上功效描述,将该烟花游戏系统分为个关键模块:背景模块、控制模块、变量模块、绘图模块和颜色模块。系统功效模块图,图1所表示。
烟花游戏
背景
模块
控制
模块
绘图模块
变量模块
颜
色模块
图2.块图烟花游戏系统功效模
2.31可行性论证
表2.程序中类总结
本例知识点
一句话讲解
新学知识
使用Graphics类
绘制烟花
使用Thread类
管理线程
已学知识
使用Math类
产生随机数
使用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 MouseListener,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 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接中方法。为一个空方法。
*/
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 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);
}
/**
*程序根本程,对一个烟花进行绘制。
3. 设计结果和分析
程序在JCreator中运行以后初始界面图2所表示:
图3.烟花游戏程序运行初始图
程序在JCreator中运行以后,点击一下鼠标放烟花图3所表示:
图4.烟花游戏程序运行图
点击很多下:
图5.烟花游戏程序运行图
程序在JCreator中运行以后,烟花绽放时图4.5所表示:
图6.烟花游戏程序运行图
图7.烟花游戏程序运行图
我所设计烟花小游戏,实现简单休闲游戏功效。实施本例后,用鼠标点击浏览器中面板,将出现五彩缤纷烟花效果。本例因为要模拟烟花效果,所以首先定义实施程序根本程函数run()对一个烟花进行绘制。在函数run()中定义Graphics类对象,经过程序中算法来绘制烟花。然后,因为要实现烟花缤纷闪烁效果,所以要经过Thread类Thread.currentThread().sleep()方法使目前线程睡眠,让用户欣赏到目前绘制效果。最终,因为要实现人机交互.,所以首先要经过mousePressed(MouseEvent e)函数来实现对鼠标事件监听,这么当按下鼠标时,产生一个新线程就能够看到一个新烟花效果。
4. 设计体会
这次课程设计我做是烟花小游戏,关键是服务于娱乐消遣。经过这次Java课程设计,综合利用本学期所学Java理论和实际知识进行一次Java编程实际训练从而培养和提升我们独立工作能力,巩固和扩充Java语言编程课程所学内容,掌握Java语言编程方法和步骤,同时各科相关课程全部有了全方面复习,独立思索能力也有了提升。在这次设计过程中,表现出自己单独设计Java程序能力和综合利用知识能力,体会了学以致用、突出自己劳动结果喜悦心情,从中发觉自己平时学习不足和微弱步骤,从而加以填补。把学过计算机编译原理知识强化,能够把课堂上学知识经过自己设计程序表示出来,加深了对理论知识了解。现在经过自己动手做试验,从实践上认识了操作系统是怎样处理命令,课程设计中程序比较复杂,在调试时应该仔细。
在老师和同学大力帮助,我正在做系统过程中碰到了很多问题,有是知识存放不足,有是考虑不够周全,之所以能够顺利实现基础功功效,离不开老师和同学大力相助。事实证实,只靠自己是不能顺利完成一套功效完整系统,必需充足利用团体力量。
在这次课程设计中不仅检验了我所学习知识,课程设计是我们专业课程知识综合应用实践训练,也是我们迈向社会,从事职业工作前一个必不少过程。我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒头脑,以现实为依据,让自己每一行代码全部能实现自己意义。
5. 参考文件
[1]秦学礼等.JAVA程序设计使用教程.[M]中国铁路出版社,
[2]王克宏等.JAVA及其技术应用.[M]高等教育出版社,1999
[3]樊荣.JAVA网络程序设计[M]机械工业出版社,
[4]耿祥义,张跃平.Java课程设计[M]清华大学出版社,,11
[5]朱福喜,尹为民,余振坤.Java语言和面向对象程序设计[M]武汉大学出版社
[6]张广彬,孟红蕊,张永宝.Java课程设计案例精编[M]清华大学出版社
[7]丁振凡.Java语言实用教程[M].北京:北京邮电大学出版社,.2
[8]宛延闿.实用Java程序设计教程[M].北京:机械工业出版社,.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;
/**
*对小程序进行变量和颜色初始化。
*/
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.addWindowListener(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 = getGraphics();
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 = (((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.fillOval(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);
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(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*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)
{
}
}
展开阅读全文