Java之小球碰撞反弹

本次我们主要实现了三个功能:
1,小球碰壁反弹、小球相互碰撞反弹。
2,使用缓冲绘图解决闪屏问题。
3,增加暂停按钮,实现界面动、停控制。
一,创建一个类ShowUI实现窗体界面

package com.yzd0126.BallsRebound;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;

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

public class ShowUI extends JFrame{
   
	//展示界面
	public void UI() {
   
		this.setSize(800,600);//设置界面大小
		this.setTitle("球球碰撞");
		this.setLocationRelativeTo(null);//界面位于屏幕中央
		this.setLayout(new FlowLayout());//使用流式布局
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//退出时关闭		       
		this.setVisible(true);//界面设置可见		
	}
	
	//主函数  程序入口
	public static void main(String[] args) {
   
		ShowUI showui = new ShowUI();
		showui.UI();
	}

}

二,创建小球类Ball
1,在创建完Ball类之后,在界面类ShowUI中创建一个全局用来保存所有小球的动态数组balls。

//全局用来存储小球对象的数组
	List<Ball> balls = new ArrayList<>();

之所以将ArrayList向上转型为List,是因为这样写体现了面向接口编程的思想。List是一个接口,ArrayList是实现List接口的一个具体实现类,能够降低程序的耦合度,当我们发现代码使用的集合不正确应该使用的是LinkedList时,只需要修改以下一行代码就可:

List<Ball> balls = new LinkedList<>();

因为之后所有的操作都是针对List这个接口定义的方法,而与实现类的独特方法无关,如果我们一开始直接使用ArrayList类型而不向上转型,那么之后如果涉及到ArrayList类独特的方法时需要修改的地方比较多,不便于程序的维护。

2,在Ball类中定义每个小球需要的属性以及方法
关于运动小球的属性有:小球外接圆左上角坐标lx、ly,小球速度vx、vy,小球直径R、小球颜色color,小球球心rx、ry,画笔参数g。
关于运动小球的方法有:
2.1构造方法传参,随机生成小球位置、速度、颜色。

	//构造函数   传参
	public Ball(Graphics g,List balls) {
   
		this.g=g;
		this.balls=balls;
		Random random = new Random();
		//随机产生小球坐标  速度  颜色
		lx=random.nextInt(600);
		ly=random.nextInt(200)+50;
		vx=(float) (random.nextInt(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值