码迷,mamicode.com
首页 > 编程语言 > 详细

Java-飞机小游戏

时间:2019-01-17 23:52:53      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:his   ges   i++   自己   双缓冲技术   解决   setters   mat   飞机   

今天放假第二天,一个人在家很无聊,跟着b站写了一个飞机游戏的小项目。

1.画一个窗体继承Frame类,因为JFrame闪烁特别严重,加一段双缓冲技术,解决闪烁问题

2.加入背景和飞机的图片,写一个GameUitl类使用

URL u=GameUitl.class.getClassLoader().getResource(path);
  bi=ImageIO.read(u);方法显示图片

3.写一个GameObject父类,飞机Plane炮弹Shell都继承此类,在类中右击-Source-Generate getters and setters to create 来写构造器。

4.在飞机类中增加两个获得和减少键盘的方法,在方法中使用getKeyCode()方法获得键盘数据。并重写一个改变飞机位置的方法。

5.在弹药类中用Graphics g画笔自己画炮弹g.fillOval((int)x, (int)y, width, height);画实体椭圆。并用数学方法实现任意角度飞及碰撞反弹。

 //任意角度去飞
  x+=speed*Math.cos(degree);
  y+=speed*Math.sin(degree);
  
  //碰撞反弹
  if(x<0||x>Constant.Game_width-width){
   degree=Math.PI-degree;

 }
  if(y<30||y>Constant.Game_heigth-height){
   degree=-degree;

}

6.写一个爆炸类,实现飞机爆炸时图片的轮流播放

public class Explore {
 double x,y;
 static Image[] imgs=new Image[16];
 static{
 for(int i=0;i<16;i++){
  
  
  imgs[i]=GameUitl.getImages("images/explode/e"+(i+1)+".gif");
  imgs[i].getWidth(null);
 
 }
  
 }
 int count;
 //轮播实现爆炸图片
 public void draw(Graphics g){
  if(count<16){
   g.drawImage(imgs[count], (int)x,(int) y, null);
   count++;
  }
 }
 public Explore(double x,double y){
  this.x=x;
  this.y=y;
 }
}

7.检验碰撞时使用获得图片矩形相撞的方法getRect().intersects(plane.getRect())

8.碰撞时实现一个计时功能

 


 

 

Java-飞机小游戏

标签:his   ges   i++   自己   双缓冲技术   解决   setters   mat   飞机   

原文地址:https://www.cnblogs.com/stt-ac/p/10284868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!