【Java实现小游戏】飞翔的小鸟(源码)

这篇具有很好参考价值的文章主要介绍了【Java实现小游戏】飞翔的小鸟(源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

游戏玩法:通过鼠标点击使小鸟上下移动穿过柱子并完成得分,小鸟碰到柱子或掉落到地面上都会结束游戏。

(游戏内图片)

飞翔的小鸟源代码,Java  SE,大数据,后端,java

 文章来源地址https://www.toymoban.com/news/detail-528047.html

飞翔的小鸟源代码,Java  SE,大数据,后端,java

 

下面是实现这个游戏的代码:

 飞翔的小鸟源代码,Java  SE,大数据,后端,java

 Brid类:

package bird;

import org.omg.CORBA.IMP_LIMIT;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;

public class Brid {
    int x,y;
    int width,height;
    int size;//鸟的大小,用于检测碰撞
    BufferedImage image;
BufferedImage[] images;
int index;


    double g;   //重力加速度
    double t;   //两次位置的时间间隔
    double v0;  //初始上抛的速度
    double speed; //当前上抛的速度
    double s;     //经过时间t以后的位移
    double alpha; //鸟的倾角,单位是弧度

    public  Brid() throws Exception {
        image = ImageIO.read(getClass().getResource("0.png"));
        width = image.getWidth();
        height = image.getHeight();
        x = 132;
        y = 280;
        size = 40;


        g = 4;
        v0 = 20;
        t = 0.25;
        speed = v0;
        s = 0;
        alpha = 0;
        images = new BufferedImage[8];
        for (int i = 0; i < 8; i++) {
            images[i] = ImageIO.read(getClass().getResource(i + ".png"));
        }
index=0;
    }
public void  fly(){
        index++;
        image=images[(index/12)%8];
}

    public  void  step(){
double v0=speed;
s=v0*t+g*t*t/2;  //计算上抛运动的位移;
y=y-(int)s;//计算鸟的位置坐标
double v =v0-g*t;//计算下次的速度
speed=v;
alpha=Math.atan(s/8);
    }
public  void flappy(){
        speed=v0;   //重新设置初始速度,重新向上飞
}
   public boolean hit( Ground ground){
        boolean hit=y+size/2>ground.y;
        if(hit){
          y= ground.y-size/2;
           alpha=-3.1415926/2;
         }
        return  hit;
    }

    public boolean hit(Column column) {
        if (x > column.x - column.width / 2 - size / 2 && x < column.x + column.width / 2 + size / 2) {
            if (y > column.y - column.gap / 2 + size / 2 && y < column.y + column.gap / 2 - size / 2) {

                return false;
            }
            return true;
        }
     return false;
    }
}

 

 BridGame类:

package bird;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;

public class BridGame extends JPanel {
    Brid brid;
    Column column1,column2;
    Ground ground;
    BufferedImage background;
    int score;
  //  boolean gameOver;
    //游戏状态
   int state;
   public  static  final  int START=0;
    public  static  final  int RUNNING=1;
    public  static  final  int GAME_OVER=2;
    BufferedImage gameOverImage;
BufferedImage startImage;
 public BridGame() throws Exception{
     //gameOver=false;
     state=START;

     gameOverImage =ImageIO.read(getClass().getResource("gameover.png"));
     startImage=ImageIO.read(getClass().getResource("start.png"));
    brid=new Brid();
    column1=new Column(1);
    column2=new Column(2);
    ground=new Ground();
    background= ImageIO.read(getClass().getResource("bg.png"));
    score=0;
}

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(background,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);
        Graphics2D g2=(Graphics2D) g;
        g2.rotate(-brid.alpha,brid.x,brid.y);
        g.drawImage(brid.image,brid.x-brid.width/2,brid.y-brid.width/2,null);
        g2.rotate(brid.alpha,brid.x,brid.y);

        Font f=new Font(Font.SANS_SERIF,Font.BOLD,40);
        g.setFont(f);
        g.drawString(""+score,40,60);
        g.setColor(Color.white);
        g.drawString(""+score,40-3,60-3);


        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{  //让地面动起来
        MouseListener l=new MouseAdapter(){
        @Override
        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;
                    case RUNNING:
                        brid.flappy();
                }
            }catch (Exception e2){

            }
        }
    };
        addMouseListener(l);

     while(true){
          switch (state){
              case START:
                  brid.fly();
                  ground.step();
                  break;
              case RUNNING:
                  ground.step();
                  column1.step();
                  column2.step();
                  brid.step();
                  brid.fly();
                  if(brid.x==column1.x||brid.x==column2.x){
                      score++;
          }
                  if(brid.hit(ground)||brid.hit(column1)||brid.hit(column2)){
                      state=GAME_OVER;
                  }
                  break;
            }
         repaint();
         Thread.sleep(1000/30);
     }
}
    public static void main(String[] args) throws  Exception {
     JFrame frame=new JFrame();
     BridGame game=new BridGame();
     frame.add(game);
     frame.setSize(440,670);
     frame.setLocationRelativeTo(null);
     frame.setVisible(true);
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     game.action();
    }
}

Column类:

package bird;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.font.LineMetrics;
import java.awt.image.BufferedImage;
import java.util.Random;

//柱子
public class Column {
    int x,y;
    int width,height;
    int gap;
    int distance;
    BufferedImage image;
    Random random=new Random();

    public  Column(int n) throws  Exception{
        image= ImageIO.read(getClass().getResource("column.png"));
        width=image.getWidth();
        height =image.getHeight();
        gap=144;
        distance=245;
        x=550+(n-1)*distance;
        y=random.nextInt(218)+132;
    }
public void step(){
        x--;
        if(x==-width/2){
            x=distance*2-width/2;
            y=random.nextInt(218)+132;
        }
}
}

Ground类:

package bird;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;

public class Ground {
    int x,y;
    int width,height;
    BufferedImage image;
    public Ground() throws Exception{
        image= ImageIO.read(getClass().getResource("ground.png"));
        width=image.getWidth();
        height =image.getHeight();
        x=0;
        y=500;

    }
    //添加方法让地面移动
    public void step(){
        x--;
        if(x==-109){
            x=0;
        }
    }



}

 

 

到了这里,关于【Java实现小游戏】飞翔的小鸟(源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java实现俄罗斯方块小游戏。(附完整源代码)

    大家好,我是百思不得小赵。 创作时间:2022 年 5 月 12 日 博客主页: 🔍点此进入博客主页 —— 新时代的农民工 🙊 —— 换一种思维逻辑去看待这个世界 👀 今天是加入CSDN的第1167天。觉得有帮助麻烦👏点赞、🍀评论、❤️收藏 目录 一、游戏背景 二、功能实现 三、效果

    2024年02月03日
    浏览(65)
  • 实现用java做一个简易版《羊了个羊》小游戏(附源代码)

    该项目是跟着这个b站视频一步一步写出来的,初学java有些地方我看不是很明白,但是讲解很仔细,大家可以看原视频,我没有添加背景音乐和背景图片,做出来的效果也勉勉强强。 代码已经上传到github上了,大家可以去github上直接下载代码,附上链接:点击进入github源码链接

    2024年02月04日
    浏览(77)
  • Python小游戏--------像素小鸟(Fallppybird)

            素小鸟是一款像素风格的游戏 ,玩家需要操控小鸟在绿色水管间穿梭,避免碰撞,玩家需要控制像素鸟去越过各种障碍,不能让小鸟落地,否则就需要重新开始游戏。游戏延续了经典的玩法,非常虐心,越玩越容易上瘾。 先导入pygame模块,初始化pygame 初始化游戏

    2024年02月03日
    浏览(38)
  • Java实现五子棋小游戏(附源码)

      铜9铁10已经结束了,但还是有很多Java程序员没有找到工作或者成功跳槽,跳槽成功的也只是从一个坑中,跳入另一个坑中…… ​ 在LZ看来,真正有意义的就业与跳槽,是要进入到一个有绝对潜力的行业或者薪资能实现爆炸式增长的。这件事不容易,但也没有想象的遥不可

    2024年02月08日
    浏览(51)
  • 【Java项目介绍和界面搭建】拼图小游戏完结——源代码分析以及资料上传

    目录 以后工作的时候拿到一个需求之后: 1,所需要的技术点 2,分析业务逻辑 项目实现步骤: 添加组件 绑定事件: 分析业务逻辑 分析所需要的技术点 在这个界面中,我们需要哪些技术点: 整个的菜单就是JMenuBar 功能,关于我们:JMenu 更换图片:JMenu 重新游戏,重新登录

    2024年03月11日
    浏览(60)
  • 详解Java实现2048小游戏(JavaFX,完整源码+注释说明)

    刚刚完成的一个小游戏,写文章记录一下,如果有任何错误或者可以改进的代码请提出 另一方面也是方便自己几个月或几年后忘记时,来这里翻一翻回顾思路 目录 基本界面: 类的组织: _CardPane: _CardMatrixPane: _CardColor: _GameMenuBar: _2048Demo: 基本思路: 卡片: 卡片矩阵:

    2024年02月03日
    浏览(51)
  • python简单小游戏代码教程,python小游戏程序源代码

    大家好,小编来为大家解答以下问题,python简单小游戏代码教程,python小游戏程序源代码,今天让我们一起来看看吧! 哈喽铁子们 表弟最近在学Python,总是跟我抱怨很枯燥无味,其实,他有没有认真想过,可能是自己学习姿势不对? 比方说,可以通过打游戏来学编程! 今天

    2024年02月02日
    浏览(62)
  • python简单小游戏代码100行,python小游戏程序源代码

    大家好,本文将围绕python简单小游戏代码100行展开说明,python小游戏代码能用的是一个很多人都想弄明白的事情,想搞清楚python小游戏程序源代码需要先了解以下几个事情。 这次用Python实现的是一个接球打砖块的小游戏,需要导入pygame模块,有以下两条经验总结: 1.多父类的

    2024年02月06日
    浏览(65)
  • python简单小游戏代码200行,用python写小游戏源代码

    大家好,小编来为大家解答以下问题,python简单小游戏代码200行,用python写小游戏源代码,现在让我们一起来看看吧! Source code download: 本文相关源码 大家好,本文将围绕python简单小游戏代码100行展开说明,python小游戏代码能用的是一个很多人都想弄明白的事情,想搞清楚

    2024年02月21日
    浏览(58)
  • 基于Java的2048小游戏的设计与实现,附源码+文档,适合课程设计,包远程安装调试运行

    1、项目介绍 本游戏采用Java语言编写,使用Eclipse编译器,jdk1.8编译环境。游戏的UI主要运用Java图形界面编程(AWT),实现窗口化可视化的界面。 游戏的后台通过监听键盘方向键来移动数字方块,运用随机数的思想随机产生一个2或4的随机数,显示在随机方块中,运用二维数组

    2024年02月03日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包