JavaSE实战项目:飞翔的小鸟(完整版)

飞翔的????1.前言2.分析①素材准备②代码构思3.代码实现及展示4.心得分享1.前言首先,我先说一下这个项目,这个项目题材的来自牛客网的开源项目我在这里做一个我自己在开发此项目的心得体会和经验交流,并且带领大家了解从0去入手一个项目的完整思路这里是结果展示图:2.分析①素材准备在开发此项目之前,我们需要去先下载一些关于飞翔的小鸟素材图片小鸟的飞翔图片地面背景图片柱子图片以及开始结束图片那么这里我为大家提供百度网盘链接,大家需要可自行下载链接:https://pan.bai
摘要由CSDN通过智能技术生成

1.前言

首先,我先说一下这个项目,这个项目题材的来自牛客网的开源项目
我在这里做一个我自己在开发此项目的心得体会和经验交流,并且带领大家了解从0去入手一个项目的完整思路

这里是结果展示图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.分析

①素材准备

在开发此项目之前,我们需要去先下载一些关于飞翔的小鸟素材图片
小鸟的飞翔图片
地面背景图片
柱子图片
以及开始结束图片

那么这里我为大家提供百度网盘链接,大家需要可自行下载
链接:https://pan.baidu.com/s/12ww0HQ6KluVP-fcC40iXXQ
提取码:zjd8
复制这段内容后打开百度网盘手机App,操作更方便哦

②代码构思

本项目主要针对JAVASE刚学完想巩固练习,却没有项目着手的同学,用的都是一些基础性的知识
运用到的知识点:
1.面向对象:封装继承多态
2.数组
3.常用类Math
4.swing组件:图形界面工具
5.鼠标监听
6.IO流
7.多线程
逻辑步骤分析:
1.先实现窗口的制作,并且将背景图放入窗口面板

2.设计地面类,实现游戏背景地面移动

3.设计柱子类,实现游戏背景柱子移动

4.设计小鸟类,在类中添加小鸟相关方法
初始化小鸟相关参数, 判断小鸟是否碰撞柱子与地面

5.把小鸟放在面板中

6.鼠标监听控制小鸟飞行的轨迹

7.添加计分和游戏结束游戏开始的画面
代码分类:
由上述的分析,我们可以大致分析计划创建4个类
1.小鸟类:设置小鸟参数,添加小鸟判断方法
2.柱子类:设置柱子参数,添加柱子移动方法
3.地面类:设置地面参数,添加地面移动方法
4.测试类:添加开始结束、鼠标监听等方法

3.代码实现及展示

代码中数学参数来自牛客网测试
①小鸟类:

package FlyBirdGame;

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

class Bird {
   
    //图片
    BufferedImage image;
    //位置
    int x,y;
    //宽,高
    int width,height;
    //大小
    int size;

    //重力加速度
    double g;
    //位移的间隔时间
    double t;
    //最初上抛速度
    double v0;
    //当前上抛速度
    double speed;
    //经过时间t后的位移
    double s;
    //小鸟的倾角
    double alpha;

    //一组图片,记录小鸟的动画帧
    BufferedImage[] images;
    //动画帧数组的下标
    int index;

    //初始化小鸟
    public  Bird() throws Exception{
   
        //初始化基本参数
        image = ImageIO.read(new File("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(new File(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
  • 63
    点赞
  • 337
    收藏
    觉得还不错? 一键收藏
  • 40
    评论
你好,以下是一个简单的Java代码示例,实现了一个“飞翔小鸟”小游戏: ```java import java.util.Scanner; public class FlyingBirdGame { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int height = 10; int width = 20; boolean isFlying = false; boolean isJumping = false; int score = 0; int gameOver = false; char c = 'n'; char[] bird = {'n', 'n', 'n', 'n', 'n'}; int[] pipe = {20, 15, 50, 20, 20}; int gap = 15; int gravity = 1; int velocity = 0; int maxVelocity = 15; int minVelocity = -15; while (!gameOver) { System.out.println("Press n to start, m to mute, j to jump, k to fly"); c = scanner.next().charAt(0); if (c == 'm') { System.out.println("Muted"); } else if (c == 'j') { isJumping = true; } else if (c == 'k') { isFlying = true; } else if (c == 'n') { isJumping = false; isFlying = false; } else if (Character.isDigit(c)) { score += Integer.parseInt(Character.toString(c)); } else if (c == 'g') { gameOver = true; } else if (c == 'q') { System.exit(0); } else { System.out.println("Invalid input"); } for (int i = 0; i < height - 1; i++) { if (i == 0 || i == 19) { System.out.print("#"); } else if (i % 20 == 0) { System.out.print("@"); } else if (i % gap == 0) { System.out.print("-"); } else if (i % gap == 2 && i != height - 2) { System.out.print("|"); } else if (i % gap == 3 && i != height - 2) { System.out.print("/\\"); } else if (i % gap == 4 && i != height - 2) { System.out.print("\\/"); } else if (i % gap == 5 && i != height - 2) { System.out.print("_/"); } else if (i % gap == 6 && i != height - 2) { System.out.print("|/"); } else if (i % gap == 7 && i != height - 2) { System.out.print("/\\"); } else if (i % gap == 8 && i != height - 2) { System.out.print("\\/"); } else if (i % gap == 9 && i != height - 2) { System.out.print("_/"); } else if (i % gap == 10 && i != height - 2) { System.out.print("/\\"); } else if (i % gap == 11 && i != height - 2) { System.out.print("\\/"); } else if (i % gap == 12 && i != height - 2) { System.out.print("_/"); } else if (i % gap == 13 && i != height - 2) { System.out.print("|/"); } else if (i % gap == 14 && i != height - 2) { System.out--;
评论 40
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值