多线程:打砖块的初步实现
线程:
每个Java程序都有一个主线程,当程序执行后,主线程会自动调用程序的main()方法;
单线程:
单线程的特点是,程序一步一步执行,上一步没有执行完毕,下一步就不会执行;
多线程:
而多线程模型是将代码的调用放到一个独立的运行单元:线程中多步并发执行,所以有省时,并发的优点;
线程并不占用系统资源,它与进程共享资源;
多线程的实现:
每个线程对象都是一个继承了java.util.Thread类的对象或implements了java.util.Runnable接口的类的对象,线程的启运是通过调用线程对象的start()方法启动,线程运行是从线程对象的run方法开始,当线程对象的run()方法结束后,线程即运行结束。线程的创建,一般通过如下两种方法:
一个是继承Thread类对象,然后重写run()方法,在run()方法中实现需要进行的线程,然后调用start()方法来启动,
另一个是继承Runnable接口,实现它的run()方法,然后将这个类的实例作为Thread的构造方法的参数,创建Thread类的实例,即可做为线程启动。
多线程实例:打砖块的实现
打砖块的实现首先要实现小球的移动,这就需要用到一个线程:首先创建一个线程,然后在run方法中画一个小球,然后用while(true)无限循环来不停的改变坐标实现小球的移动,当然这样的代价是CPU的占用率非常高,所以我们没循环一次就休息10mm,方法是线程的sleep()方法,这个方法可能产生异常,所以要用try、catch来实现。小球的移动当然还需要实现重绘,在面板中需要不停的更新。具体代码:
public class boll_change implements Runnable{
mainPanel mm;
int i=100;
int j=350;
int sign1=5; // 标志位i
int sign2=5; // 标志位j
Image boll = new ImageIcon("five_images/baiqi.png").getImage();
MyKeyListener key;
public boll_change(mainPanel mm,MyKeyListener key)
{
this.mm=mm;
this.key=key;
}
@Override
public void run()
{
//循环执行小球移动
while(true){
//如果触到右边界,则转向
if(i>=560){sign1=-5;}
//左边界,转向
else if(i<=10){sign1=5;}
//如果被底座接住,则转向
if(j>=530&&j<=540&&i-key.keyi<249&&i-key.keyi>0){sign2=-5;}
//到达上顶,转向
else if(j<=50){sign2=5;}
if(mm.ml_move.getLength()!=0)
mm.ml_move.delet(0);
i=i+sign1;
j=j+sign2;
Shapes shape = new reImage(i,j,30,30,Color.white, boll,mm);
mm.ml_move.add(shape);
mm.repaint();
//睡眠
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
小球的移动实现后,还要实现砖块的多线程,砖块的多线程体现在当小球碰到时要及时消失,这也要实现重绘,砖块事件和小球的移动是同时发生的,这也体现了多线程的并发执行,同样,底座的移动也要用多线程来实现,具体不写了,初步完成后的简陋画面如下:
分享到:
相关推荐
在编程领域,尤其是在开发高效、响应迅速的应用程序时,多线程技术扮演着至关重要的角色。Qt5框架提供了一种方便的方式来实现多线程,它允许开发者在不同的线程中执行任务,从而避免主线程(GUI线程)因处理耗时操作...
Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-...
多线程和Socket编程初步教程,非常适合初学者。
总的来说,"Java游戏打砖块"项目涵盖了Java编程的多个方面,包括图形界面设计、对象建模、碰撞检测、多线程、文件操作以及可能的网络编程。通过这个项目,开发者不仅能提升Java编程技巧,还能锻炼问题解决和创新思维...
嵌入式实时操作系统的多线程计算:基于ThreadX和ARM.pdf
7. **多线程**:在更复杂的游戏实现中,可能需要使用多线程技术,如一个线程负责游戏逻辑,另一个线程负责渲染,以提高游戏性能。 8. **调试与优化**:在开发过程中,使用调试工具如 GDB 或 Visual Studio 的调试器...
《打砖块》是一款经典的小游戏,其编程语言主要使用了C++,这为我们揭示了在游戏开发领域中C++的应用。C++是一种强大的、面向对象的编程语言,以其高效性和灵活性著称,尤其适合开发对性能要求较高的游戏程序。 在...
在这个场景中,“大炮打飞机”游戏可能会有两个主要线程:一个是控制大炮发射的线程,另一个则是控制飞机移动的线程。 线程的创建和管理在C#中主要通过`System.Threading`命名空间中的类来完成。最基础的是`Thread`...
【VB.NET实现打砖块游戏】 打砖块是一款经典的街机游戏,它的基本玩法是控制一个平台移动,反弹小球击碎屏幕上排列的砖块。在这个项目中,我们将使用VB.NET(Visual Basic .NET)来创建一个简单的打砖块游戏。VB...
7. **多线程**:为了实现更流畅的游戏体验,某些计算或更新任务可能在单独的线程中执行,以避免阻塞主线程,确保UI的及时响应。 8. **调试与测试**:开发过程中,使用Qt Creator的调试工具可以帮助开发者定位和修复...
1. 创建线程: - 使用`Thread`类:通过创建`Thread`对象并传递一个委托(方法)作为参数,可以启动新线程。例如: ```csharp Thread thread = new Thread(new ThreadStart(MyMethod)); thread.Start(); ``` - ...
【基于JAVA的打砖块游戏】是一款非常适合初学者学习编程的项目,它涵盖了Java语言的基础知识和游戏开发的一些核心概念。下面将详细讲解这个项目中涉及的重要知识点。 首先,Java是一种广泛使用的面向对象编程语言,...
通过"Java打砖块"这个游戏项目,开发者可以深入理解Java编程的基础知识,同时提升面向对象设计、图形界面编程、多线程处理和算法应用等方面的能力。无论是对于初学者还是有经验的开发者,这都是一个富有挑战性和乐趣...
Java打砖块游戏是一款经典的计算机游戏,通过编程实现,它能帮助开发者理解基本的游戏逻辑、图形用户界面(GUI)设计以及事件处理等编程概念。在这个项目中,源码是使用Java编程语言在Eclipse集成开发环境中编写的。...
1- Java多线程:启动线程 2- Java多线程:易失性–基本线程通信 3- Java多线程:同步 4- Java多线程:锁定对象 5- Java多线程:线程池 6- Java多线程:倒计时闩锁 7- Java多线程:生产者-消费者 8- Java多线程:等待...
1- Java 多线程:启动线程 2- Java 多线程:Volatile – 基本线程通信 3- Java 多线程:同步 4- Java 多线程:锁定对象 5- Java 多线程:线程池 6- Java 多线程:倒计时锁存器 7- Java 多线程:生产者-消费者 8- ...
《iOS打砖块游戏源码解析》 ...通过分析这个打砖块游戏的源码,开发者不仅可以学习到iOS游戏开发的基本流程,还能深入理解面向对象编程、图形渲染、物理模拟等多个技术领域,为今后的项目开发积累宝贵经验。
2. Thread类创建新线程:`Thread thread = new Thread(new ThreadStart(ReceiveData));`,ReceiveData是线程执行的方法。 3. 启动线程:`thread.Start();` 4. Task类创建并启动任务:`Task.Run(() => SendData());`...
关键词部分列出了Java程序、打砖块游戏、图形用户界面、eclipse和多线程。这些关键词涵盖了游戏开发的主要方面:编程语言(Java),游戏类型(打砖块游戏),用户交互(图形用户界面),开发环境(eclipse),以及...