day07

import java.awt.Color;
import java.awt.Graphics;

/**

  • 小球:
  • 大小,坐标,颜色,速度,方向
  • @author Administrator
    *1.设计类:抽象类 ball; 设计类:------BallMain,BallJPanel,BallAndBall
    *2. 分析:小球的绘制
  • 让小球运动,多个运动,小球进行碰种 ,打的吃小的
    */

public class Ball {
int x,y,d,dir;
int speed;
Color ballColor;
public static final int LEFT_UP=0;//左上
public static final int RIGHT_UP=1;//右上
public static final int LEFT_DOWN=2;//左下
public static final int RIGHT_DOWN=3;//右下
public Ball(int x,int y,int d,int dir,int speed, Color ballColor){
this.x=x;
this.y=y;
this.dir=dir;
this.speed=speed;
this.d=d;
this.ballColor=ballColor;
}
//绘制小球
public void drawBall(Graphics g){
g.setColor(ballColor);
g.fillOval(x, y, d, d);
}
/*
* 小球移动方向的判断
/
public void moveBall(){
switch (this.dir) {
case LEFT_UP: //左上
x-=speed;
y-=speed;
if(x<=0){
dir=RIGHT_UP;
}else if(y<=0){
dir=LEFT_DOWN;
}
break;
case RIGHT_UP://右上
x+=speed;
y-=speed;
if(x>=(1400-d)){
dir=LEFT_UP;
}else if(y<=0){
dir=RIGHT_DOWN;
}
break;
case RIGHT_DOWN://右下
x+=speed;
y+=speed;
if(y>=(800-d)){
dir=RIGHT_UP;
}else if(x>=(1400-d)){
dir=LEFT_DOWN;
}
break;
case LEFT_DOWN://左下
x-=speed;
y+=speed;
if(y>=(800-d)){
dir=LEFT_UP;
}else if(x<=0){
dir=RIGHT_DOWN;
}
break;
default:
break;
}
}
2.
public class BallAndBall {
//是否发生碰撞
public boolean isBallCrach(Ball b1,Ball b2){
boolean flag=false;
int x1=b1.x+b1.d/2;
int y1=b1.y+b1.d/2;
int x2=b2.x+b2.d/2;
int y2=b2.y+b2.d/2;
double e=Math.sqrt((x1-x2)
(x1-x2)+(y1-y2)(y1-y2));//计算圆心距
if(e<=b1.d/2+b2.d/2){
return flag;
}
return flag;
}
public void ballCrach(Ball b1,Ball b2){
int x1=b1.x+b1.d/2;
int y1=b1.y+b1.d/2;
int x2=b2.x+b2.d/2;
int y2=b2.y+b2.d/2;
double e=Math.sqrt((x1-x2)
(x1-x2)+(y1-y2)*(y1-y2));//计算圆心距
if(e<=b1.d/2+b2.d/2){
switch (b1.dir) {
case Ball.LEFT_UP:
b1.dir=Ball.RIGHT_DOWN;
break;
case Ball.RIGHT_UP:
b1.dir=Ball.LEFT_DOWN;
break;
case Ball.LEFT_DOWN:
b1.dir=Ball.RIGHT_UP;
break;
case Ball.RIGHT_DOWN:
b1.dir=Ball.LEFT_UP;
break;
default:
break;
}
}
if(e<=b1.d/2+b2.d/2){
switch (b2.dir) {
case Ball.LEFT_UP:
b2.dir=Ball.RIGHT_DOWN;
break;
case Ball.RIGHT_UP:
b2.dir=Ball.LEFT_DOWN;
break;
case Ball.LEFT_DOWN:
b2.dir=Ball.RIGHT_UP;
break;
case Ball.RIGHT_DOWN:
b2.dir=Ball.LEFT_UP;
break;
default:
break;
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值