题外话(请直接略过):放假已经过去了一个多月,才开始学习。
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); } } } }
相关推荐
在“JAVA编写的多线程小弹球测试”项目中,开发者利用Java语言创建了一个生动有趣的多线程应用,即一个模拟小弹球运动的程序。这个程序的特点是弹球会随机出现、随机选择颜色,并且在碰到边界时能自动反弹,充分展示...
Java弹球小游戏是一款基于Java编程语言开发的简单游戏,它运用了多线程技术来实现游戏的流畅运行。在这个游戏中,通常会有至少两个线程在同时工作:一个是控制游戏主循环,另一个则处理用户输入或其他特定的游戏逻辑...
Java做的弹球图形界面小游戏使用awt.*可以创建多个小球.
标题中的“多线程实例:桌面智能弹球小游戏”表明这是一个使用多线程技术开发的桌面应用程序,旨在提供一个互动的弹球游戏体验。在这个游戏中,小球具有一定的智能性,能够根据规则自行决策,而不仅仅是简单的物理...
在这个例子中,弹球游戏被用来模拟线程的并发执行,从而帮助我们学习和理解多线程的基本概念。 首先,多线程是指一个程序中存在两个或更多的执行线程,它们可以并行执行,共享同一内存空间。在我们的弹球案例中,每...
【MFC弹球游戏(多线程编程)】 在计算机编程领域,MFC(Microsoft Foundation Classes)是微软提供的一套面向对象的C++类库,它使得开发者能够更方便地利用Windows API进行Windows应用程序开发。MFC弹球游戏是利用...
【标题】:“弹球游戏(Java程序)”是一款基于Java编程语言开发的桌面游戏,它利用了Swing库和多线程技术来实现动态的弹球运动效果。 【描述】:该程序是在Eclipse集成开发环境中创建的,利用了SwingDesigner工具...
STM32F103是意法半导体...总之,STM32F103弹弹球游戏项目是一个综合性的学习资源,涵盖了嵌入式系统开发的多个方面,对于想要提升STM32编程技能或者对嵌入式游戏开发感兴趣的人来说,是一个极具价值的实践项目。
Java语言程序设计实验指导书中实验5多线程内容
在本项目中,“基于Java多线程的弹球游戏程序”是一个典型的计算机编程示例,它利用了Java语言的多线程特性来实现一个交互式的弹球游戏。在这个游戏中,可能包括了球的运动、碰撞检测、用户输入响应等多个并发执行的...
《Java实现的弹弹球游戏解析》 Java作为一种强大的编程语言,不仅在企业级应用开发中占据主导地位,而且在游戏开发领域也有着广泛的应用。本文将深入探讨一个使用Java编写的弹弹球游戏,该游戏具有声音效果,对初学...
8. **游戏状态管理**:游戏可能包含多个状态,如开始、暂停、游戏结束等。源码可能有一个专门的游戏状态机来管理这些状态的转换。 9. **输入验证和用户交互**:例如,确保玩家的输入在合理范围内,提供反馈信息,...
在本文中,我们将深入探讨如何使用C#语言开发一个弹球游戏。C#是一种面向对象的编程语言,常用于创建Windows桌面应用、游戏以及Web应用等。弹球游戏是计算机科学中的经典案例,它可以帮助初学者理解游戏开发的基本...
《弹球游戏:深入探索射击类小游戏开发》 在计算机游戏中,弹球游戏以其独特的玩法和简单的操作,深受玩家喜爱。这种类型的游戏通常涉及到物理模拟、碰撞检测以及玩家的反应速度,是编程初学者和游戏开发者热衷的...
用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力...
总的来说,QT开发的弹球游戏涉及了图形用户界面设计、事件处理、动画、游戏逻辑等多个方面,是学习和掌握QT开发的一个好实例。通过对源代码的学习和分析,初学者可以深入了解QT框架的使用方法,并提升自己的编程技能...
游戏可能包含了一些基本的物理模拟,例如弹球的碰撞检测和运动轨迹计算。开发者希望通过社区的反馈来提升游戏质量,同时也展示了他们勇于接受批评和持续学习的态度。对于想要了解Android游戏开发的人来说,这是一个...
【Android Studio小游戏:弹球小游戏】是基于Android开发平台,使用Android Studio集成开发环境创建的一款简单而有趣的休闲游戏。这个游戏通常包含一个弹球和多个障碍物,玩家通过控制挡板来反射弹球,避免弹球掉落...
通过VB6实现弹球游戏,开发者可以深入理解面向对象编程的概念,熟悉事件驱动模型,掌握图形界面编程技术,以及基本的物理运动模拟。这不仅有助于提升编程能力,也为未来学习更高级的游戏开发或系统编程打下基础。 ...
5. **游戏逻辑**:弹球的运动需要遵循物理规则,比如重力和碰撞反弹。这部分涉及数学计算,如速度矢量更新、碰撞检测和处理。在C++中,你可以创建类来表示弹球和板子,包含各自的属性(位置、速度等)和方法(移动、...