编程语言
首页 > 编程语言> > 4.15Java游戏小项目之矩形检测

4.15Java游戏小项目之矩形检测

作者:互联网

4.15Java游戏小项目之矩形检测

因为JFrame类还会使画面微闪,所以还要引入双缓冲

(也可以用新的方法,但是不做过多介绍)

双缓冲技术实现原理

   //继承的类要改成Frame
/*
   为这个属性写一个方法
   实现逻辑:
   进行if条件判断
   将变量设置为空,如果是空的就创建窗口值赋予变量---类.属性
   再将属性的get方法赋予Graphics画笔对象
   画出对象
    */
   public void update(Graphics g){
       if (offScreenImage == null){
           offScreenImage = this.createImage(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);
      }else {
           System.out.printf("Error");
      }

       /*再将属性的get方法赋予Graphics画笔对象*/
       Graphics gOff = offScreenImage.getGraphics();

       paint(gOff);
       
       /*画出对象*/
       g.drawImage(offScreenImage,0,0,null);
  }

矩形检测原理

物体交互原理

Java中物体交互原理就是矩形检测原理:

Java的API中提供了Rectangle类来表示矩形相关信息

提供了intersects()方法,直接判断矩形是否相交

每画一次炮弹就跟飞机进行比较

注意:

定义飞机的宽度和高度:

    /*重写构造器*/
   public Plane(Image img, double x, double y){
       this.img = img;
       this.x = x;
       this.y = y;
       this.speed = 300;
       this.width = img.getWidth(null);
       this.height = img.getHeight(null);


  }

定义炮弹的宽度和高度:

    /*构造方法构造一个随机数*/
   public Shell(){
       x = 200; //这里的x,y继承了GameObject类,所以是double类型的数
       y = 200; //所以下面用到x,y的时候要进行强制转型
       width = 10;
       height = 10;
       speed = 3;
       /*希望是一个随机的值,希望生成随机角度*/
       degree = Math.random() * Math.PI * 2;
  }

定义属性让飞机死掉:

        //利用遍历的方法画出50发炮弹
       for (int i =0; i < shells.length; i++){
           shells[i].draw(g);

           /*判断炮弹矩形是否与飞机矩形相碰*/
           boolean peng = shells[i].getRect().intersects(p.getRect()); //getRect是获得矩形,设置变量是否了好进行if判断

           /*进行if判断是否相碰,飞机和炮弹的碰撞检测*/
           if (peng){
//               System.out.println("碰到了!!!");
               p.live = false; //相碰死掉
          }
      }

  }

 

标签:矩形,4.15,img,Graphics,Java,null,offScreenImage
来源: https://www.cnblogs.com/JunkingBoy/p/14664355.html