day07

    xiaoxiao2024-11-27  87

    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; } } }

    最新回复(0)