520用修改的FlappyBird小游戏表白

   日期:2020-05-20     浏览:89    评论:0    
核心提示:520用修改的FlappyBird小游戏表白介绍内容Item类Attack类hit方法添加音频风格速度调整其他调整演示效果关于打包介绍第一篇文章,萌新能力有限,主要记录一下,请大佬多指教。https://blog.csdn.net/codehxy/article/details/25268295代码的主体都是来自上面链接link大佬的,之所以选择Flappy Brid,一因为某人很曾经喜欢玩这个游戏,二是因为比较简单= =内容大佬的博客里讲的很清楚了,我主要讲讲我自己做的吧。Item类这个类游戏

用修改的FlappyBird小游戏表白

  • 介绍
  • 内容
    • Item类
    • Attack类
    • hit方法
    • 添加音频
    • 风格
    • 速度调整
    • 其他调整
  • 演示效果
  • 关于打包

介绍

第一篇文章,萌新能力有限,主要记录一下,请大佬多指教。
https://blog.csdn.net/codehxy/article/details/25268295
代码的主体都是来自上面链接大佬的,之所以选择Flappy Brid,一因为某人曾经喜欢玩这个游戏,二是因为比较简单= =

内容

大佬的博客里讲的很清楚了,我主要讲讲我自己做的吧。

Item类

这个类描述的是在屏幕中的道具,我自己从网上找的像素图片,然后扣下来的,分别是:字母U,R,T,H,E,[苹果图片],OF,MY,[眼睛图片],连起来就是“U R THE APPLE OF MY EYE”,算是一种暗示吧。撞到道具后会显示切换到像素效果的爆炸图片。

public class Item {
 BufferedImage[] images;
 BufferedImage image;
 BufferedImage image2;
 int x;
 int y;
 int index = 0;
 int width;
 int height;
 boolean flag = true;
 
 public Item() throws IOException {
  
  this.x = 850;
  this.y = 250;
  
  images = new BufferedImage[9];
  for(int i=0; i<9; i++){
   images[i] = ImageIO.read(getClass().getResource("a"+i+".png"));
  }
  image = images[0];
  image2 = ImageIO.read(getClass().getResource("bmob.png"));
  width = image.getWidth();
  height = image.getHeight();
}
 
 public void step(){
  x-=6;//每一步像左侧移动6
  if(x<= -100 ){
   x=630;
   index++;
   if(index>=9) index=0;
   image = images[index];
  }
 }
  public void paint(Graphics g) {
  if (flag)
  g.drawImage(image, x, y, null);  
  else {
   g.drawImage(image2, x, y, null);
   flag = true;
  } 
 }
 }

Attack类

这个类描述的是屏幕中的攻击,我把小鸟的图片水平翻转然后调成了浅黄色,然后从屏幕左侧出现,如果撞到玩家的小鸟就会扣血和扣分。

public class Attack {
 BufferedImage image;
 BufferedImage[] images;
 int x;
 int y;
 int width;
 int height;
 Random r = new Random();
 int distance = 400;
 int index = 0;
 
 public Attack(int n) throws IOException { 
  images = new BufferedImage[8];
  for(int i=0; i<8; i++){
   images[i] = ImageIO.read(getClass().getResource("b"+i+".png"));
  }
  image = images[0];
  width = image.getWidth();
  height = image.getHeight();
  this.x = distance * n + 80 + 432;
  this.y = r.nextInt(120) + 220;
 }
 
 public void step(){
  x=x-8;
  if(x<= -(111)){
   x = 1200;
   this.y = r.nextInt(120) + 220;
  }
 }
 
 public void fly(){
  //更换小鸟的动画帧图片, 其中/4 是为了调整动画更新的频率
  index++;
  image = images[(index/8)%images.length];
 }
 
 public void paint(Graphics g) {
  g.drawImage(image, x, y, null);  
 }
}

hit方法

创建了上面的两个类后,要在Bird类中写相应的成员方法,判断敌方小鸟和道具是否跟玩家小鸟撞在一起了。代码如下,x和y已经item.x和item.y都是图片中心的的坐标,所以要判断碰撞需要注意图片的宽高,另外我把撞到攻击的判定范围缩小了。


public boolean hit(Item item){
if( x >= item.x-item.width/2-size/2 && x <=item.x+item.width/2+size/2){
if(y >= item.y-item.height/2-size/2 && y <= item.y+item.height/2+size/2) {
 return true;
}
   return false;
}
return false;
}

public boolean hit(Attack attack){
if( x >= attack.x-attack.width/2-size/2+25 && x <= attack.x+attack.width/2+size/2-25){
if(y >= attack.y-attack.height/2-size/2+25 && y <= attack.y+attack.height/2+size/2-25) {
 return true;
}
   return false;
}
return false;
}

添加音频

背景音乐我选取的是钢琴版的摇滚卡农,然后得分的音效和撞击的音效都是随便网上找的。Player这个类是来自其他jar的。

new Thread(new Runnable() {
            @Override
            public void run() {
             try {
     
              BufferedInputStream buffer = new BufferedInputStream( new FileInputStream("music\\12.mp3"));
              new Player(buffer).play(); 
      	        } catch (FileNotFoundException e){
     		e.printStackTrace();
   		 } catch (JavaLayerException e) {
     	        e.printStackTrace();
   	         }
              }
        }).start();

风格

改了暗色调的背景,把柱子的颜色调暗了,加了阴影,感觉比蓝天白云看起来更有感觉?

速度调整

加快了速度,也就是在step()方法中:x-=n;把n调大了,这样柱子就会飞快的左移,然后敌方小鸟和道具也同样的道理

其他调整

或许加个得到多少分显示不同的结算画面比较好吧…这里可以加一些想说的话什么的…

演示效果

添加一段演示效果吧

关于打包

如果对方没有安装JRE的话可能就不太好了,运行不了。
我查的需要把JRE和工程文件打包的jar放在一个文件夹里,像这样:

run.bat里面填写:
start jre\bin\javaw -jar myjava.jar
这个如果没有音乐的话是可以在任何环境正常运行的,就是有文件点大,但音乐文件不知道怎么添加到jar中,能力有限,正在学习。
源码
https://download.csdn.net/download/qq_23841127/12431757

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服