Java综合实验设计.docx

上传人:b****1 文档编号:1596924 上传时间:2022-10-23 格式:DOCX 页数:21 大小:85.69KB
下载 相关 举报
Java综合实验设计.docx_第1页
第1页 / 共21页
Java综合实验设计.docx_第2页
第2页 / 共21页
Java综合实验设计.docx_第3页
第3页 / 共21页
Java综合实验设计.docx_第4页
第4页 / 共21页
Java综合实验设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Java综合实验设计.docx

《Java综合实验设计.docx》由会员分享,可在线阅读,更多相关《Java综合实验设计.docx(21页珍藏版)》请在冰豆网上搜索。

Java综合实验设计.docx

Java综合实验设计

 

 

综合实验报告:

滑板反射小球游戏

专业班级:

遥感科学与技术

学号:

20133350

姓名:

易乐安

日期:

2015年6月30日

 

 

一、程序设计报告

小球在窗口四壁弹射(虚线表示弹射的轨道)。

左右移动滑板,接住小球弹射,如果没有接住,则游戏失败一次。

要求:

1.自拟设计记分方法,和界面的其它部分;

2.滑板用键盘控制左右移动;

3.设置难度调节开关,允许游戏过程中改变这一设置,以调节小球运行速度,速度快,则难度增加。

4.小球在滑板上弹射时,允许一定量的随机变化弹射角度,以实现一定的不确定性。

 

使用模块:

对系统包结构、文件结构列表说明,如表2-1、2-2所示。

表2-1

包名

作用

Java.awt.Insets

包含用于创建用户界面和绘制图形图像的所有类

Java.awt.event.ActionEvent

定义了动作的类

Java.awt.event.ActionListener

包含用于创建用户界面和绘制图形图像的所有的类

Java.awt.event.MouseEvent

把类全部导进来

Javax.swing.JOptionPane

有助于方便地弹出要求用户提供或向其发出通知

表2-2

文件名

作用

GameUI.java

程序的主窗体,负责窗口和菜单的绘制以及线程的调用。

MyThread.Java

游戏的线程,主要负责小球的绘制和判断小球是否被接住,以及记录更新分数。

MyListener.java

监听鼠标位置移动的监听器。

用来捕获鼠标的移动和鼠标的当前位置,同时这个类负责板子的绘制与更新。

定义界面:

设置标题

设置大小设置

关闭是退出程序

设置打开窗体时在屏幕中间显示

设置窗体的流式布局管理器

设置窗体背景颜色

创建文本标签对象

设置文本标签前景颜色

创建进度条对象

创建按钮对象

创建菜单条对象

创建菜单对象

创建菜单选项对象

创建单选选项

创建一个按钮组

主要算法描述:

MyThread继承于Thread,使用一个单独的线程进行小球的绘制。

小球的绘制和滑板的绘制大同小异,都是使用java.awt.Graphics进行绘制的。

MyThread还兼顾着进行小球是否被接住的判断。

主要是通过返回的板子的坐标和小球的坐标来判断小球是否在板子上方的一定范围里,如果在,则判断为接住,否则,为掉落

分层结构及调用关系说明

 

2、程序测试报告

用例:

关键代码分析

publicvoidrun(){

drawOval();

}

publicvoiddrawOval(){

UI.text_field.setText(count+"分");

//start=System.currentTimeMillis();

while(isFinish){

while(isPause){

synchronized(this.g){

g.setColor(java.awt.Color.black);

g.fillOval(x,y,width,height);

y+=y1;

getColors();

g.setColor(color);

g.fillOval(x,y,width,height);

}

intx2=listener.getX();

if(y<90){

y1=5;

}

if(y>595&&x>x2&&x

this.fadeOval();

count+=1;

UI.text_field.setText(count+"分");

y1=5;

y=100;

java.util.Randomran=newjava.util.Random();

x=ran.nextInt(600)+10;

}

if(y>630){

if(isexist){

isAgain();

}

stopThread();

}

try{

Thread.sleep(speed);

}catch(Exceptionef){

ef.printStackTrace();

}

}

}

}

小球的绘制其实就是不断的绘制一个圆形,只不过圆形的y坐标在不停的变化。

难度的控制是通过主程序传入的speed参数来控制的,这个参数用于Thread.sleep(speed),很显然,当这个参数与小球下落的速度成反比。

通过调用UI.text_field.setText()来更新主窗口上的分数。

 

结果:

结论:

一个好的算法可以让你的程序更健壮,编写的代码量更少,处理异常一直是JAVA里的常事,通过试验,让我对基础的知识更加深入了解,也对更改代码错误有了一定的提升,能看的懂错误的代码错在哪里,并进行修改,使其正确。

这个游戏只是一个简单的接球游戏,如果可以做的更好,就会更好的训练人们的集中力和反应速度,敏捷的做出正确的判断。

 

附录:

源程序代码:

importjava.awt.Insets;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

/游戏界面类/

publicclassGameUIextendsjavax.swing.JFrame{

privatestaticGameUIUI;

privatejava.awt.Graphicsg;

privateMyListenerml;

publicjavax.swing.JLabeltext_field;

publicjavax.swing.JProgressBarpBar;

privateStringcommand;

publicjava.util.ArrayListlist=newjava.util.ArrayList();

privatejavax.swing.JToggleButtonbutton;

publicstaticvoidmain(Stringargs[])

{

UI=newGameUI();

UI.initUI();

}

/初始化窗体的方法/

publicvoidinitUI(){

//设置标题

this.setTitle("接球");

//设置大小

this.setSize(610,635);

//设置关闭是退出程序

this.setDefaultCloseOperation(3);

//设置打开窗体时在屏幕中间显示

this.setLocationRelativeTo(null);

//设置窗体的流式布局管理器

this.setLayout(newjava.awt.FlowLayout());

//设置窗体背景颜色

this.getContentPane().setBackground(java.awt.Color.black);

//创建文本标签对象

text_field=newjavax.swing.JLabel();

javax.swing.JLabellable=newjavax.swing.JLabel("时间:

");

//设置文本标签前景颜色

lable.setForeground(java.awt.Color.red);

text_field.setForeground(java.awt.Color.red);

//创建进度条对象

pBar=newjavax.swing.JProgressBar(0,330);

//创建按钮对象

button=newjavax.swing.JToggleButton();

button.setMargin(newInsets(0,0,0,0));

button.setIcon(newjavax.swing.ImageIcon("images/Pause.gif"));

button.setActionCommand("暂停");

//通过匿名内部类来创建动作监听器

java.awt.event.ActionListenerbutton_listener=newjava.awt.event.ActionListener(){

publicvoidactionPerformed(ActionEvente){

Stringcom=e.getActionCommand();

if(com.equals("暂停")){

button.setMargin(newInsets(0,0,0,0));

button

.setIcon(newjavax.swing.ImageIcon(

"images/start.gif"));

button.setActionCommand("继续");

for(inti=0;i

list.get(i).PauseThread();

}

}

if(com.equals("继续"))

{

button.setMargin(newInsets(0,0,0,0));

button

.setIcon(newjavax.swing.ImageIcon(

"images/Pause.gif"));

button.setActionCommand("暂停");

for(inti=0;i

list.get(i).ContinueThread();

}

}

}

};

button.addActionListener(button_listener);

this.add(button);

this.add(lable);

this.add(pBar);

this.add(text_field);

//的到菜单条

javax.swing.JMenuBarbar=creatMenuBar();

//为窗体设置菜单条

this.setJMenuBar(bar);

//设置窗体的可见性

this.setVisible(true);

}

/创建菜单条的方法/

publicjavax.swing.JMenuBarcreatMenuBar(){

//创建菜单条对象

javax.swing.JMenuBarbar=newjavax.swing.JMenuBar();

//创建

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

当前位置:首页 > IT计算机 > 互联网

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

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