球球碰撞大世界

package cn_ed;
import java.awt.Color;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JPanel;

/**

  • 画小球
  • @author Administrator

*/
public class BallJPanel extends JPanel{
int t=300;
int c = 200;

/**存储小球的集合*/
List<Ball> ballList = new ArrayList<Ball>(); 
/**小球的数量*/
private int ballNumber = 30;
/**构造方法*/
public BallJPanel() {
	addBall();
}
int[] a = new int[300];//300个x坐标
int[] b = new int[300];//300个y坐标

/**产生小球的方法*/
public void addBall() {
	for (int i = 0; i < ballNumber; i++) {
		//随机产生100个小球
		int x = (int) (Math.random()*BallMain.SCREEN_WIDTH);
		int y = (int) (Math.random()*BallMain.SCREEN_HEIGHT);
		//System.out.println("x = :" + x + ",y = " + y);
		int position = (int) (Math.random()*4);//0,1,2,3
		int d = (int) (Math.random()*60 + 1);
		int speed = (int) (Math.random()*100 + 1);;
		//颜色的话, 三原色 R G B
		int red = (int) (Math.random()*255 + 1) ;
		int green = (int) (Math.random()*255 + 1);
		int blue = (int) (Math.random()*255 + 1);
		Color ballColor = new Color(red, green, blue);
		Ball b = new Ball(x, y, position, d, speed, ballColor);
		//将小球添加到集合中
		ballList.add(b);
	}
}


@Override
public void paint(Graphics g) {
	super.paint(g);
		// TODO Auto-generated method stub
		//修改底部背景色
		this.setBackground(Color.black);
		g.setColor(Color.red);
		g.fillOval(t, c, 100, 50);
		g.setColor(Color.white);
		g.fillOval(t+10, c+10, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t+25, c+20, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t+65, c+30, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t+35, c+50, 30,40);
		g.setColor(Color.white);
		g.setColor(Color.blue);
		g.fillOval(t+200, c+20, 100, 50);
		g.setColor(Color.white);
		g.fillOval(t+220, c+20, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t+265, c+30, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t+265, c+40, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t+235, c+60, 30,40);
		g.setColor(Color.pink);
		g.fillOval(t-235, c+120, 100, 50);
		g.setColor(Color.white);
		g.fillOval(t-170, c+130, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t-185, c+130, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t-195, c+150, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t-200, c+160, 30,40);
		g.setColor(Color.green);
		g.fillOval(t-235, c-100, 100, 50);
		g.setColor(Color.white);
		g.fillOval(t-170, c-80, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t-185, c-60, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t-195, c-80, 20, 10);
		g.setColor(Color.white);
		g.fillOval(t-200, c-50, 30,40);
		g.fillOval(t+1000, c, 500, 300);
	for (int i = 0; i < ballList.size(); i++) {
		Ball ball = ballList.get(i);
		ball.drawBall(g);
	}
}

/**小球运动*/
public void startBalls() {
	//启动线程 ------匿名内部类
	new Thread() {
		
		public void run() {
			
			while (true) {
				//1.遍历小球集合
				for (int i = 0; i < ballList.size(); i++) {
					//2.取出每一个小球
					Ball b = ballList.get(i);
					//3.让每一个小球进行移动
					b.ballMove();
				}
				
				for (int i = 0; i < ballList.size(); i++) {
					//先取第一个小球
					Ball b1 = ballList.get(i);
					for (int j = i + 1; j < ballList.size(); j++) {
						Ball b2 = ballList.get(j);
						BallAndBall bab = new BallAndBall();
						//bab.ballCrach(b1, b2);//小球的碰撞
						
						if (bab.isBallCrach(b1, b2)) {
							if (b1.d >= b2.d) {
								b1.d += b2.d/3;
								ballList.remove(b2);
								break;
							}else if(b2.d >= b1.d) {
								b2.d += b1.d/3;
								ballList.remove(b1);
								break;
							}
						}
						
						
					}
				}
				
				repaint();//重绘
				try {
					Thread.sleep(500);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
		};
		
	}.start();
}

}
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值