飞翔的小鸟--Java小游戏实战(代码完整)

一、写在前面:

《飞扬的小鸟》是一款曾经比较火热的小游戏,本文可以带你你从零开始,一步一步的开发出这款小游戏。

  • 语言
    Java

  • 工具
    IntelliJ IDEA,JDK 16

  • 准备工作

创建好项目后,在正式开始编写代码前,先下载游戏素材放入正确的目录下。开发过程中使用的一些参数,如坐标、尺寸、速度等,你可以直接使用这些参数值,也可以尝试自定义这些参数值。

二、知识要点

  1. Java的基本语法
  2. Java面向对象的三大特征(封装、继承、多态)
  3. Java Swing中常见API的使用 (Swing 包括了图形用户界面器件如:文本框,按钮,分隔窗格和表。)
  4. 鼠标监听
  5. IO流
  6. 线程

三、开发步骤简介

  1. 创建项目flappyBird,然后在src目录下创建两个包,分别为game和resources
  2. 将素材文件全部放入resources文件中
  3. 在测试类文件中,制作窗口面板,并将背景图片放入面板中
  4. 设计游戏道具之「地面」,新建地面类,实现游戏背景中地面的移动
  5. 设计游戏道具之「柱子」,新建柱子类,实现游戏背景中柱子的移动
  6. 设计游戏道具之「小鸟」,新建小鸟类,在类中加入小鸟的各种参数,以及飞行、移动、是否撞柱子和地面等相关的方法
  7. 将小鸟也放入面板中,用数组模拟多帧
  8. 鼠标监听控制小鸟的飞行行为
  9. 添加计分和游戏结束游戏开始的画面

由上述的分析,我们计划创建4个类:

  1. 小鸟类:设置小鸟参数,添加小鸟判断方法
  2. 柱子类:设置柱子参数,添加柱子移动方法
  3. 地面类:设置地面参数,添加地面移动方法
  4. 测试类:绘制游戏界面、添加开始结束、鼠标监听等方法

四、项目代码

注: 代码相关的解释都在代码注释中

1、绘制面板,并将背景图片放置面板中

在game包下面创建测试类BirdGame,并写入以下代码。
注:抛出的异常IDEA都可以直接点击加入,而不用自己写。

package game;

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

// 游戏界面
public class BirdGame extends JPanel {
   

    // 背景图片
    BufferedImage background;

    // 初始化游戏
    public BirdGame() throws Exception {
   
        // 初始化背景图片
        background = ImageIO.read(getClass().getResource("/resources/bg.png"));
    }

    // 绘制界面
    public void paint(Graphics g) {
   
        // 绘制背景
        g.drawImage(background, 0, 0, null);
    }

    // 启动方法
    public static void main(String[] args) throws Exception {
   
        JFrame frame = new JFrame();  // 创建窗口,JFrame是屏幕上window的对象,能放大、缩小、关闭。
        BirdGame game = new BirdGame();
        frame.add(game);
        frame.setSize(440, 670);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  // 设置窗口
        frame.setVisible(true);  // 显示窗口
    }
}

可以运行mian方法,来查看下效果。

2、设计游戏道具之地面

在game包下面定义地面类,并写入以下代码:

package game;

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

class Ground {
   
    BufferedImage image;  // 图片
    int x, y;  // 位置
    int width, height;  // 宽和高

    // 初始化地面
    public Ground() throws IOException {
   
        image = ImageIO.read(getClass().getResource("/resources/ground.png"));
        width = image.getWidth();
        height = image.getHeight();
        x = 0;
        y = 500;
    }

	// 地面向左移动
    public void step(){
   
        x--;
        if(x == -109){
   
            x = 0;
        }
    }
}
3、设计游戏道具之柱子

在game包下面定义柱子类,并写入以下代码:

package game;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

class 
  • 56
    点赞
  • 243
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
当然可以!以下是一个简单的Java小游戏飞翔小鸟代码示例: ```java import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; public class BirdGame extends JFrame implements KeyListener { private int birdY = 250; // 小鸟的初始位置 private int speed = 0; // 小鸟的初始速度 public BirdGame() { setTitle("飞翔小鸟"); setSize(800, 600); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); setVisible(true); addKeyListener(this); } public void paint(Graphics g) { super.paint(g); g.fillRect(100, birdY, 20, 20); // 绘制小鸟 } public void keyTyped(KeyEvent e) {} public void keyPressed(KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_SPACE) { speed = -10; // 按下空格键,小鸟向上飞行 } } public void keyReleased(KeyEvent e) {} public void birdMove() { birdY += speed; // 更新小鸟的位置 speed += 1; // 更新小鸟的速度 if (birdY >= 530) { birdY = 530; // 小鸟触底时停止下落 } repaint(); // 重绘界面 } public static void main(String[] args) { BirdGame game = new BirdGame(); while (true) { game.birdMove(); try { Thread.sleep(20); // 控制小鸟的速度 } catch (InterruptedException e) { e.printStackTrace(); } } } } ``` 这个代码示例实现了一个简单的飞翔小鸟游戏。通过按下空格键,小鸟会向上飞行,松开空格键后小鸟会自由下落。小鸟的位置和速度会不断更新,并通过重绘界面来实现动画效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值