飞翔的小鸟--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 

你可能感兴趣的:(Java)