`

多线程、弹球游戏的开发以及彩球弹出、运动的暂停、删除彩球

阅读更多

 

题外话(请直接略过):放假已经过去了一个多月,才开始学习。

1.学java语言还是要大量学习时间啊,就像学英语,如果没有最初的那一阵痛,后面会走得很难!哭
2.别以为一天一两个小时就可以了,必须每天投入大量时间。
3.就像学语言一样,要背的。犹豫

正文:

1.线程的概念:在一个程程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。


2.线程对象是继承java.util.Thread类的对象或者implements java.util.runnable接口的类的对象。现成的启动调用县城对象的start方法。

3.弹球游戏中把每一个弹球看成是一个单独的线程。每个小球运行自己的,所以先要定义一个  小球的线程类:

import java.awt.Color; 
import java.awt.Graphics; 
import java.util.Random; 

import javax.swing.JPanel; 

public class BallThread extends Thread{ 
int radius;//半径 
int xv;//水平方向速度 
int yv;//竖直方向速度 
int x,y;//彩球的坐标 
int lx,ly;//彩球最后一次的位置 
    Color color;//彩球的颜色 
    JPanel jp; 
    int xDirection = 1; 
    int yDirection = 2; 
Graphics g; 
boolean stopFlag = false; 
boolean pauseFlag = false; 
   
public  BallThread(JPanel jp,Graphics g){ 
this.jp=jp; 
this.g=g; 

    } 
/** 
  * setPause和setStop方法的作用是:从其他类中传入暂停和停止的状态 
  * 使其他类可以控制其true或false的状态 
  */ 
public void setPause(boolean flag){ 
this.pauseFlag=flag; 
} 
public void setStop(boolean flag){ 
this.stopFlag = flag; 
} 


public void run(){ 
Random random = new Random(); 
this.radius = 20+random.nextInt(20); 
this.xv = 2+random.nextInt(5); 
this.yv = 2+random.nextInt(5); 
color = new Color(random.nextInt(256),random.nextInt(256),random.nextInt(256)); 

while(true){ 
try { 
sleep(50); 
if(stopFlag){ 
g.setColor(jp.getBackground()); 
g.fillOval(lx-radius, ly-radius, radius*2, radius*2); 
return; 
} 
if(pauseFlag){ 
continue; 

} 
} catch (InterruptedException e) { 
e.printStackTrace(); 
} 
g.setColor(jp.getBackground()); 
g.fillOval(lx-radius, ly-radius, radius*2, radius*2); 

g.setColor(color); 
g.fillOval(x-radius, y-radius, radius*2, radius*2); 

lx=x; 
ly=y; 
if(x>=jp.getWidth()-radius){ 
xDirection=1; 
} 
if(x=jp.getHeight()-radius){ 
yDirection=3; 
} 

 

 

4.主界面UI:

 

 

import java.awt.BorderLayout;
import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class BubbleUI extends JFrame{
	
Graphics g0;

public void initui(){
	this.setTitle("弹球の0720");
	this.setSize(800,500);
	this.setLayout(new BorderLayout());
	JPanel jp = new JPanel();
	JPanel jp2 = new JPanel();
	
	JButton bt1 = new JButton("弹出");
	JButton bt2 = new JButton("暂停");
	JButton bt3 = new JButton("开始");
	JButton bt4 = new JButton("删除");
	jp.add(bt1);
	jp.add(bt2);
	jp.add(bt3);
	jp.add(bt4);
	
	this.add(jp,BorderLayout.NORTH);
	this.add(jp2,BorderLayout.CENTER);
	
	this.setVisible(true);
	g0=jp2.getGraphics();
	ButtonListener l = new ButtonListener(jp2,g0);
	bt1.addActionListener(l);
	bt2.addActionListener(l);
	bt3.addActionListener(l);
	bt4.addActionListener(l);
}
public static void main(String[] args){
	BubbleUI ui = new BubbleUI();
	ui.initui();
}
}

 

 


5.主界面上按钮的监听器:

import java.awt.Graphics; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.util.ArrayList; 

import javax.swing.JPanel; 

public class ButtonListener implements ActionListener{ 
Graphics g1; 
JPanel jp2; 
ArrayList list =new ArrayList(); 

public ButtonListener(JPanel jp2,Graphics g1){ 
this.jp2=jp2; 
this.g1=g1; 

} 
public void actionPerformed(ActionEvent e) { 

if("弹出".equals(e.getActionCommand())){ 
BallThread ball = new BallThread(jp2,g1); 
ball.start(); 
list.add(ball); 
} 
if("暂停".equals(e.getActionCommand())){ 
for(BallThread ball:list){ 
ball.setPause(true); 
} 
} 
if("开始".equals(e.getActionCommand())){ 
for(BallThread ball:list){ 
ball.setPause(false); 
} 
} 
if("删除".equals(e.getActionCommand())){ 
        if(!list.isEmpty()){ 
        BallThread ball = list.remove(0); 
        ball.setStop(true); 
        } 
} 

} 
  
} 

 

 

 



 

  • 描述: 弹球游戏的开发
  • 大小: 34.6 KB
0
4
分享到:
评论
2 楼 jiranjiran 2013-07-29  
NO.6 写道
挺好的!

thank you !!!
1 楼 NO.6 2013-07-25  
挺好的!

相关推荐

    JAVA编写的多线程小弹球测试

    在“JAVA编写的多线程小弹球测试”项目中,开发者利用Java语言创建了一个生动有趣的多线程应用,即一个模拟小弹球运动的程序。这个程序的特点是弹球会随机出现、随机选择颜色,并且在碰到边界时能自动反弹,充分展示...

    java弹球小游戏,多线程

    Java弹球小游戏是一款基于Java编程语言开发的简单游戏,它运用了多线程技术来实现游戏的流畅运行。在这个游戏中,通常会有至少两个线程在同时工作:一个是控制游戏主循环,另一个则处理用户输入或其他特定的游戏逻辑...

    Java多线程弹球

    Java做的弹球图形界面小游戏使用awt.*可以创建多个小球.

    多线程实例:桌面智能弹球小游戏

    标题中的“多线程实例:桌面智能弹球小游戏”表明这是一个使用多线程技术开发的桌面应用程序,旨在提供一个互动的弹球游戏体验。在这个游戏中,小球具有一定的智能性,能够根据规则自行决策,而不仅仅是简单的物理...

    多线程弹球代码案例

    在这个例子中,弹球游戏被用来模拟线程的并发执行,从而帮助我们学习和理解多线程的基本概念。 首先,多线程是指一个程序中存在两个或更多的执行线程,它们可以并行执行,共享同一内存空间。在我们的弹球案例中,每...

    MFC弹球游戏(多线程编程)

    【MFC弹球游戏(多线程编程)】 在计算机编程领域,MFC(Microsoft Foundation Classes)是微软提供的一套面向对象的C++类库,它使得开发者能够更方便地利用Windows API进行Windows应用程序开发。MFC弹球游戏是利用...

    弹球游戏(java程序)

    【标题】:“弹球游戏(Java程序)”是一款基于Java编程语言开发的桌面游戏,它利用了Swing库和多线程技术来实现动态的弹球运动效果。 【描述】:该程序是在Eclipse集成开发环境中创建的,利用了SwingDesigner工具...

    STM32F103 弹弹球游戏 程序

    STM32F103是意法半导体...总之,STM32F103弹弹球游戏项目是一个综合性的学习资源,涵盖了嵌入式系统开发的多个方面,对于想要提升STM32编程技能或者对嵌入式游戏开发感兴趣的人来说,是一个极具价值的实践项目。

    多线程弹球实验

    Java语言程序设计实验指导书中实验5多线程内容

    基于Java多线程的弹球游戏程序.zip

    在本项目中,“基于Java多线程的弹球游戏程序”是一个典型的计算机编程示例,它利用了Java语言的多线程特性来实现一个交互式的弹球游戏。在这个游戏中,可能包括了球的运动、碰撞检测、用户输入响应等多个并发执行的...

    Java写的弹弹球游戏

    《Java实现的弹弹球游戏解析》 Java作为一种强大的编程语言,不仅在企业级应用开发中占据主导地位,而且在游戏开发领域也有着广泛的应用。本文将深入探讨一个使用Java编写的弹弹球游戏,该游戏具有声音效果,对初学...

    c# 弹球游戏源码

    8. **游戏状态管理**:游戏可能包含多个状态,如开始、暂停、游戏结束等。源码可能有一个专门的游戏状态机来管理这些状态的转换。 9. **输入验证和用户交互**:例如,确保玩家的输入在合理范围内,提供反馈信息,...

    弹球游戏C#开发

    在本文中,我们将深入探讨如何使用C#语言开发一个弹球游戏。C#是一种面向对象的编程语言,常用于创建Windows桌面应用、游戏以及Web应用等。弹球游戏是计算机科学中的经典案例,它可以帮助初学者理解游戏开发的基本...

    弹球游戏(小游戏 射击类 )

    《弹球游戏:深入探索射击类小游戏开发》 在计算机游戏中,弹球游戏以其独特的玩法和简单的操作,深受玩家喜爱。这种类型的游戏通常涉及到物理模拟、碰撞检测以及玩家的反应速度,是编程初学者和游戏开发者热衷的...

    JAVA Swing图形用户界面编程 多线程编程 弹球游戏

    用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力...

    QT开发的弹球游戏

    总的来说,QT开发的弹球游戏涉及了图形用户界面设计、事件处理、动画、游戏逻辑等多个方面,是学习和掌握QT开发的一个好实例。通过对源代码的学习和分析,初学者可以深入了解QT框架的使用方法,并提升自己的编程技能...

    简陋android弹球游戏

    游戏可能包含了一些基本的物理模拟,例如弹球的碰撞检测和运动轨迹计算。开发者希望通过社区的反馈来提升游戏质量,同时也展示了他们勇于接受批评和持续学习的态度。对于想要了解Android游戏开发的人来说,这是一个...

    Android studio 小游戏,弹球小游戏

    【Android Studio小游戏:弹球小游戏】是基于Android开发平台,使用Android Studio集成开发环境创建的一款简单而有趣的休闲游戏。这个游戏通常包含一个弹球和多个障碍物,玩家通过控制挡板来反射弹球,避免弹球掉落...

    弹球游戏【VB源码】

    通过VB6实现弹球游戏,开发者可以深入理解面向对象编程的概念,熟悉事件驱动模型,掌握图形界面编程技术,以及基本的物理运动模拟。这不仅有助于提升编程能力,也为未来学习更高级的游戏开发或系统编程打下基础。 ...

    自己用c++做的一个弹球小游戏

    5. **游戏逻辑**:弹球的运动需要遵循物理规则,比如重力和碰撞反弹。这部分涉及数学计算,如速度矢量更新、碰撞检测和处理。在C++中,你可以创建类来表示弹球和板子,包含各自的属性(位置、速度等)和方法(移动、...

Global site tag (gtag.js) - Google Analytics