第一篇文章,萌新能力有限,主要记录一下,请大佬多指教。 大佬的博客里讲的很清楚了,我主要讲讲我自己做的吧。 这个类描述的是在屏幕中的道具,我自己从网上找的像素图片,然后扣下来的,分别是:字母U,R,T,H,E,[苹果图片],OF,MY,[眼睛图片],连起来就是“U R THE APPLE OF MY EYE”,算是一种暗示吧。撞到道具后会显示切换到像素效果的爆炸图片。 这个类描述的是屏幕中的攻击,我把小鸟的图片水平翻转然后调成了浅黄色,然后从屏幕左侧出现,如果撞到玩家的小鸟就会扣血和扣分。 创建了上面的两个类后,要在Bird类中写相应的成员方法,判断敌方小鸟和道具是否跟玩家小鸟撞在一起了。代码如下,x和y已经item.x和item.y都是图片中心的的坐标,所以要判断碰撞需要注意图片的宽高,另外我把撞到攻击的判定范围缩小了。 背景音乐我选取的是钢琴版的摇滚卡农,然后得分的音效和撞击的音效都是随便网上找的。Player这个类是来自其他jar的。 改了暗色调的背景,把柱子的颜色调暗了,加了阴影,感觉比蓝天白云看起来更有感觉? 加快了速度,也就是在step()方法中:x-=n;把n调大了,这样柱子就会飞快的左移,然后敌方小鸟和道具也同样的道理 或许加个得到多少分显示不同的结算画面比较好吧…这里可以加一些想说的话什么的… 添加一段演示效果吧 如果对方没有安装JRE的话可能就不太好了,运行不了。介绍
https://blog.csdn.net/codehxy/article/details/25268295
代码的主体都是来自上面链接大佬的,之所以选择Flappy Brid,一因为某人曾经喜欢玩这个游戏,二是因为比较简单= =内容
Item类
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方法
/** 检查当前鸟是否碰到道具 */ 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; }
添加音频
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();
风格
速度调整
其他调整
演示效果
关于打包
我查的需要把JRE和工程文件打包的jar放在一个文件夹里,像这样:
run.bat里面填写:
start jrebinjavaw -jar myjava.jar
这个如果没有音乐的话是可以在任何环境正常运行的,就是有文件点大,但音乐文件不知道怎么添加到jar中,能力有限,正在学习。
源码
https://download.csdn.net/download/qq_23841127/12431757
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算