线程游戏v0.1

文章介绍了如何在Java中实现多线程,通过创建Thread类的子类或实现Runnable接口。示例代码展示了如何同时运行两个线程,分别执行不同的任务。此外,文章还涉及到了一个简单的游戏应用,创建了一个可以移动的小球,通过继承JFrame,利用Graphics绘制小球并改变其坐标来模拟移动,以及使用Random生成随机坐标和颜色增加游戏的随机性。
摘要由CSDN通过智能技术生成

线程游戏v0.1

线程:程序的执行过程

单任务:按照顺序执行

单任务例子:

public class Thread01{
public static void main(String[] args){
	int count = 0;
	for(int i = 0; i < 10; i++){
		count++;
	}
	System.out.println ("任务1执行完成" + count);
	int count1 = 100;
	for(int i = 100; i > 0; i--){
		count1--;
	}
	System.out.println ("任务2执行完成!" + count1);
}

运行完任务1再运行任务2

若要同时实现多个线程:

继承:Thread类

实现:Runnable接口

以上都需要重写run方法(run方法:将需要同时执行的代码放到run方法中)

启动线程:需要使用到Thread类的start方法

ThreadDemo1 td1 = new ThreadDemo1 ();
RunnableDemo1 rd1 = new RunnableDemo1 ();

完整代码:

public class ThreadDemo1 extends Thread {
    @Override
    public void run() {
        for(int i=0;i<100;i++){
            System.out.println("线程1执行中:"+i);
        }
    }
}
public class RunnableDemo1 implements Runnable{
    @Override
    public void run() {
        for(int i=0;i<100;i++){
            System.out.println("线程2执行中:"+i);
        }
    }
}
public class TestThread {
    public static void main(String[] args) {
        ThreadDemo1 td1=new ThreadDemo1();
        RunnableDemo1 rd1=new RunnableDemo1();

        Thread t1=new Thread(td1);
        Thread t2=new Thread(rd1);

        t1.start();
        t2.start();

    }
}
注意:任何的Java程序都是多线程!

游戏实战:可以在页面不停游动的小球

UI部分:

1.继承JFrame

2.实现界面的可视化

3.启动小球的线程对象

public class GameUI extends JFrame {
    public void initUI(){
        setTitle("线程游戏-v0.1");
        setSize(800,600);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        for (int i = 0; i < 10; i++) {
            ball1=new Ball_1(this);
            ball1.start();
        }
        for (int i = 0; i < 10; i++) {
            ball2=new Ball_2(this);
            ball2.start();
        }
    }
    Ball_1 ball1;
    Ball_2 ball2;
    int x,y;
    int x1,y1;
    @Override
    public void paint(Graphics g){
        super.paint(g);
    }

    public static void main(String[] args) {
        new GameUI().initUI();
    }
}
绘制小球:

1.创建线程类

2.重写run方法

3.利用循环 不断更改球的坐标 并绘制出来

public class Ball_2 extends Thread{
    int x1,y1;
    Graphics g;
    public Ball_2(JFrame jf){
        this.g=jf.getGraphics();
    }
    int speedx1=2;
    int speedy1=2;
    @Override
    public void run() {
        //随机生成整数使小球的轨迹随机性
        Random ran =new Random();
        x1= ran.nextInt(800);
        y1=ran.nextInt(600);
        speedx1=ran.nextInt(10)-5;
        speedy1=ran.nextInt(10)-5;
        Color color=new Color(ran.nextInt(Integer.MAX_VALUE));
        for (int i = 0; ; i++) {
            g.setColor(color);
            g.fillOval(x1,y1,80,80);
            try {
                Thread.sleep(30);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            g.setColor(Color.white);
            g.fillOval(x1,y1,80,80);
            x1+=speedx1;
            y1+=speedy1;
            if(x1<0||x1>=720){
                speedx1=-speedx1;
            }
            if(y1<=0||y1>=520){
                speedy1=-speedy1;
            }
        }
    }
}

代码中的扩展部分

1.使用循环生成多个小球

for (int i = 0; i < 10; i++) {
            ball1=new Ball_1(this);
            ball1.start();
        }
for (int i = 0; i < 10; i++) {
            ball2=new Ball_2(this);
            ball2.start();

2.使用Random获得随机的整数来使颜色和坐标随机

		Random ran =new Random();
        x1= ran.nextInt(800);
        y1=ran.nextInt(600);
        speedx1=ran.nextInt(10)-5;
        speedy1=ran.nextInt(10)-5;
总结:

多线程的使用有很多的扩展性,使得不同的程序可以同时执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值