package com.lemon.flappybird;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* 初始世界,包含背景图片,开始图片
* @author D
*
*/
public class World extends JPanel{
BufferedImage backgroud;//背景图片
BufferedImage startImg,startImg2;//开始图片
Column column1;Column column2;boolean start;
Bird bird;
Ground ground;//地板
boolean gameover;
int score=1;; int game=1;;int score_ji;int game_ji;
public World() throws IOException{//在构造方法中对图片进行加载
backgroud = ImageIO.read(getClass().getResource("bg.png"));
startImg = ImageIO.read(getClass().getResource("start.png"));
startImg2 = ImageIO.read(getClass().getResource("start2.png"));
ground =new Ground();
column1=new Column(388);//柱子开始出现位置
column2=new Column(560);
bird =new Bird(120,225);
}
public void paint(Graphics g) {//绘制背景图片
if (score%3==0&&score!=score_ji) {
score_ji=score;
game++;
}
g.drawImage(backgroud, 0, 0, null);
if (start==true) {
column1.paint(g);
column2.paint(g);
bird.paint(g);
}
g.setFont(new Font(Font.MONOSPACED, Font.BOLD, 20));
g.setColor(Color.WHITE);
g.drawString("关卡:"+game, 30, 20);g.drawString("分数:"+score, 30, 50);
if (gameover) {
try {
BufferedImage end =ImageIO.read(getClass().getResource("gameover.png"));
g.drawImage(end, 38, 210, null);
return;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}if (start==false) {
g.drawImage(startImg, 88, 250, null);
g.drawImage(startImg2, 46, 180, null);
}
ground.paint(g);//绘制地面
}
public void action() throws InterruptedException {//定义一个方法,调用Ground类中的step()方法,让x--,看起来像动
addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
if (gameover==true) {//游戏结束,初始化世界
try {
score =0;
if (game!=1) {
game--;
}
ground =new Ground();
column1=new Column(388);//柱子开始出现位置
column2=new Column(560);
bird =new Bird(120,225);
start = false;
gameover =false;
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
start =true;
bird.flyappy();
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
while (true) {
ground.step();
if (start==true) {//游戏开始后绘画
column1.step();
column2.step();
bird.step();
if (bird.hit(column1,column2,ground)) {
start=false;
gameover = true;
}
if (bird.pass(column1, column2)) {
score++;
}
}
repaint();//重绘
Thread.sleep(1000/game*2/60);//每1/60重绘一次
}
}
public static void main(String[] args) throws IOException, InterruptedException {
JFrame frame =new JFrame("FlappyBird游戏");//创建窗口
World world= new World();//创建面板
frame.setSize(288, 512);//对应背景图片大小
frame.setResizable(false);//设置不能调大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭时结束游戏
frame.setLocationRelativeTo(null);//让窗口出现在屏幕最中心
frame.add(world);
frame.setVisible(true);
world.action();//加载让地板重绘的方法
}
}
FlappyBird像素鸟小游戏java源代码,包含素材
5星 · 超过95%的资源 需积分: 48 42 浏览量
2019-03-07
11:11:32
上传
评论 3
收藏 75KB ZIP 举报
局中棋
- 粉丝: 1
- 资源: 1
最新资源
- 基于python实现的基于PyQt5和爬虫的小说阅读系统.zip
- 机械设计整经机上纱自动化sw20非常好的设计图纸100%好用.zip
- Screenshot_20240427_031602.jpg
- 网页PDF_2024年04月26日 23-46-14_QQ浏览器网页保存_QQ浏览器转格式(6).docx
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈