package game;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import game.MP3Player;
import help.BackGround;
public class BridGame extends JPanel {
BufferedImage background1;
BufferedImage background2;
Ground ground;
Column column1;
Column column2;
Brid brid;
Medals medals;
MP3Player player;
MP3Player player1;
MP3Player player2;
BackGround back;
//分数
int score;
BufferedImage startImage;
public class KeyMonitor extends KeyAdapter { //键盘监听器
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case 38:
brid.flappy();
break;
case 32:
brid.flappy();
break;
}
}
}
/**游戏状态 */
int state;
public static final int START = 0;
public static final int RUNNING = 1;
public static final int GAME_OVER = 2;
//boolean gameOver;
BufferedImage gameOverImage;
public BridGame() throws Exception{
JFrame frame = new JFrame("色鸟先飞");
frame.add(this);
frame.setSize(440,670);//设置宽高
frame.setLocationRelativeTo(null);//窗口居中
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//单机关闭使程序真正退出
frame.setVisible(true);//设置窗体可见性
frame.setResizable(false);
frame.addKeyListener(new KeyMonitor());
state = START;
//gameOver = false;
startImage = ImageIO.read(getClass().getResource("start.png"));
gameOverImage = ImageIO.read(getClass().getResource("gameover.png"));
back=new BackGround();
background1= ImageIO.read(getClass().getResource("bg_night.png"));
background2= ImageIO.read(getClass().getResource("bg.png"));
ground = new Ground();
column1 = new Column(1);
column2 = new Column(2);
brid = new Brid();
medals=new Medals(200);
player = new MP3Player("one.mp3");
player1=new MP3Player("9422.mp3");
player2=new MP3Player("greate.mp3");
}
public void paint(Graphics g){
super.paint(g);
g.drawImage(back.image,back.x,back.y,null);
// if(column1.x<300)
// g.drawImage(background1,0,0,null);
// else
// g.drawImage(background2,0,0,null);
g.drawImage(column1.image,column1.x-column1.width/2,
column1.y-column1.height/2,null);
g.drawImage(column2.image,column2.x-column2.width/2,
column2.y-column2.height/2,null);
g.drawImage(ground.image,ground.x,ground.y,null);
//旋转(rotate)绘图坐标系,是API方法
Graphics2D g2 = (Graphics2D) g;
g2.rotate(-brid.alpha,brid.x,brid.y);
g.drawImage(brid.image,brid.x -brid.width/2,
brid.y-brid.height/2,null);
g2.rotate(brid.alpha,brid.x,brid.y);
//在paint方法中添加绘制分数的算法
Font f = new Font(Font.SANS_SERIF,Font.BOLD,40);
g.setFont(f);
g.drawString(""+score, 100, 43);
g.setColor(Color.WHITE);
g.drawString(""+score, 100-3, 43-3);
Font b=new Font(Font.SANS_SERIF,Font.BOLD,35);//画得分
g.setFont(b);
g.drawString("得分:", 10, 38);
boolean peng=brid.getRect().intersects(medals.getRect());//碰撞判断值
if(((state==RUNNING)&&(!medals.getRect().intersects(column1.RectUp())&&!medals.getRect().intersects(column1.RectDown()))&&!medals.getRect().intersects(column2.RectUp())&&!medals.getRect().intersects(column2.RectDown())))//禁止金牌出现在柱子上
g.drawImage(medals.image, medals.x, medals.y, null);
if(peng)
{medals.x-=226;score+=5;new Thread() {
public void run() {
player1.play();//开启新的线程,并且播放音乐。
};
}.start();
}
/** if(gameOver){
g.drawImage(gameOverImage,0,0,null);
} */
//在paint方法中添加显示游戏结束状态代码
switch(state){
case GAME_OVER:
g.drawImage(gameOverImage,0,0,null);
break;
case START:
g.drawImage(startImage,0,0,null);
break;
}
}
//表示游戏流程的控制
public void action() throws Exception{
// KeyListener m=new KeyAdapter() {
// @SuppressWarnings("unused")
// public void keypressed(KeyEvent e) {
// switch (e.getKeyCode()) {
// case 38:
// brid.flappy();
// break;
//
// case 32:
// brid.flappy();
// break;
// }
//
// }
//
// };
medals.drawMedal(getGraphics());
MouseListener l = new MouseAdapter(){
//鼠标按下
public void mousePressed(MouseEvent e){
//鸟向上飞
// brid.flappy();
try{
switch (state){
case GAME_OVER:
column1 = new Column(1);
column2 = new Column(2);
brid = new Brid();
score =0;
state = START;
break;
case START:
state = RUNNING;
new Thread() {
public void run() {
player.play();//开启新的线程,并且播放音乐。
};
}.start();
case RUNNING:
//鸟向上飞扬
brid.flappy();
// if(score==5)
// {new Thread() {
// public void run() {
// player2.play();//开启新的线程,并且播放音乐。
// };
// }.start();
// }
// long startTime=System.currentTimeMillis();
// long endTime=System.currentTimeMillis();
// long TotalTime=endTime-startTime;
// if(TotalTime==1000)
// player2.stop();//音乐停止播放
}
}catch(Exception ex){
ex.printStackTrace();
}
}
};
//将1挂接到当前的面板上
addMouseListener(l);
while(true){
/** if(!gameOver){
brid.run();
brid.fly();
column1.run();
column2.run();
ground.run();
System.out.println(ground.x);
}
if(brid.hit(ground) ||brid.hit(column1) ||brid.hit(column2)){
gameOver = true;
}
//计算分数逻辑
if(brid.x == column1.x ||brid.x == column2.x){
score++;
} */
switch(state){
case START:
brid.fly();
back.fly();
ground.run();
break;
case RUNNING:
column1.run();
column2.run();
brid.run();//上下移动
back.fly();
brid.fly();//挥动翅膀
ground.run();//地面移动
medals.step();
//计分逻辑
if(brid.x-20 == column1.x || brid.x -20== column2.x){
score++;
}
//如果鸟撞上地面和柱子游戏就结束
if(brid.hit(ground)||brid.hit(column1)||brid.hit(column2)){
state = GAME_OVER;
player.stop();//音乐停止播放
}
break;
}
repaint();//重画
Thread.sleep(20);
}
}
public static void main(String [] args) throws Exception {
BridGame game = new BridGame();
game.action();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
java飞翔的小鸟
共113个文件
png:74个
class:13个
mp3:10个
5星 · 超过95%的资源 需积分: 50 28 下载量 27 浏览量
2019-04-09
10:34:42
上传
评论 12
收藏 10.03MB RAR 举报
温馨提示
大二用Java写的飞翔的小鸟的期末作业,适用于学生党交作业的一个资源,该项目有自己的创意比如吞金币,背景图切换,且配有背景音乐
资源推荐
资源详情
资源评论
收起资源包目录
java飞翔的小鸟 (113个子文件)
BridGame.class 5KB
Brid.class 3KB
Column.class 1KB
Medals.class 1KB
BackGround.class 1KB
MP3Player.class 1KB
BridGame$2.class 1KB
ImageUtil.class 1KB
Ground.class 944B
BridGame$KeyMonitor.class 779B
MP3Player$1.class 759B
BridGame$3.class 652B
BridGame$1.class 559B
.classpath 282B
timg.gif 18KB
timg.gif 18KB
32.gif 12KB
32.gif 12KB
jl1.0.1.jar 103KB
BridGame.java 7KB
Brid.java 2KB
MP3Player.java 1KB
Column.java 1KB
BackGround.java 964B
Medals.java 769B
Ground.java 520B
ImageUtil.java 424B
one.mp3 4.99MB
5970.mp3 158KB
9422.mp3 56KB
amazing.mp3 17KB
excllent.mp3 16KB
good.mp3 11KB
greate.mp3 11KB
unbelievable.mp3 10KB
one.mp3 91B
one.mp3 91B
column.png 164KB
column.png 164KB
11.png 148KB
11.png 148KB
10.png 148KB
10.png 148KB
8.png 137KB
8.png 137KB
9.png 125KB
9.png 125KB
6.png 121KB
6.png 121KB
15.png 117KB
15.png 117KB
14.png 106KB
14.png 106KB
7.png 103KB
bg_night.png 103KB
bg_night.png 103KB
7.png 103KB
3.png 98KB
14.png 98KB
3.png 98KB
14.png 98KB
4.png 96KB
4.png 96KB
0.png 89KB
11.png 89KB
0.png 89KB
11.png 89KB
1.png 85KB
5.png 85KB
5.png 85KB
1.png 85KB
bg.png 82KB
bg.png 82KB
2.png 80KB
13.png 80KB
2.png 80KB
13.png 80KB
12.png 77KB
12.png 77KB
13.png 62KB
13.png 62KB
12.png 46KB
12.png 46KB
start.png 9KB
start.png 9KB
gameover.png 8KB
gameover.png 8KB
9.png 4KB
9.png 4KB
0.png 3KB
0.png 3KB
4.png 3KB
4.png 3KB
6.png 3KB
6.png 3KB
7.png 3KB
7.png 3KB
8.png 3KB
8.png 3KB
1.png 2KB
共 113 条
- 1
- 2
资源评论
- 彥爷2023-07-27通过阅读这个文件,我对小鸟的飞翔原理有了更深入的理解,受益匪浅。
- 袁大岛2023-07-27这个文件对于初学者来说,是一个非常实用的指南,帮助他们在Java中实现小鸟飞翔功能。
- 伯特兰·罗卜2023-07-27这个文件详细介绍了Java中实现小鸟飞翔的方法,让人眼前一亮。
- 白小俗2023-07-27这个文件通过简洁明了的语言,向读者呈现了Java中实现小鸟飞翔的各种技巧和注意事项。
- 大头蚊香蛙2023-07-27阅读这个文件,我对小鸟在Java中飞翔的动态效果有了更清晰的认识,对于开发游戏很有帮助。
qq_43111356
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功