Java实现一个打飞机的小游戏

简介: Java实现一个打飞机的小游戏,毕业设计,计算机毕业设计。Java实现一个打飞机的小游戏,毕业设计,计算机毕业设计。Java实现一个打飞机的小游戏,毕业设计,计算机毕业设计。Java实现一个打飞机的小游戏,毕业设计,计算机毕业设计。

文末源码

适合人群:Java初级学习者和爱好者,下面有展示图。

@[toc]

1 前言

🚀获取源码,文末公众号回复【飞机】,即可。
⭐欢迎点赞留言

2 正文

公众号:JavaPub

2.1 展示

64MB GIF可以欣赏:https://www.z4a.net/images/2022/03/23/ae8bacca260b5e978f1dab8010d9a2a1.gif

ae8bacca260b5e978f1dab8010d9a2a1.gif

在这里插入图片描述

在这里插入图片描述

2.2 项目结构

在这里插入图片描述

2.2 主要代码展示

package main;

import data.Data;
import utils.Load;

import javax.sound.sampled.Clip;
import javax.swing.*;

public class Main {

    public static void main(String[] args) {
        // 创建窗口
        JFrame frame = new JFrame("飞机大战");
        // 添加 JPanel
        Data.canvas = new Canvas(frame);
        frame.setContentPane(Data.canvas);
        // 初始化 Data
        Data.init();
        // 设置图标
        frame.setIconImage(Load.image("ICON.png"));
        // 设置窗口可见
        frame.setVisible(true);
        // 获取标题栏的高度和宽度
        Data.TITLE_BOX_HEIGHT = frame.getInsets().top;
        // 设置大小
        frame.setSize(Data.WIDTH, Data.HEIGHT + Data.TITLE_BOX_HEIGHT);
        // 窗口大小固定
        frame.setResizable(false);
        // 窗口居中显示
        frame.setLocationRelativeTo(frame.getOwner());
        // 窗口关闭时结束程序
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // 播放背景音乐
        Load.sound("background").loop(Clip.LOOP_CONTINUOUSLY);
    }
}

2.4 按钮相关类

package scenes;

import data.Data;
import scenes.connector.Scenes;
import utils.Load;
import utils.Rect;

import java.awt.*;

public class About implements Scenes {
    // 背景图片
    Image background;
    // 确定按钮
    Image[] buttonOk;
    // 按钮状态
    int buttonOkStruts = 0;

    public About() {
        buttonOk = new Image[3];

        background = Load.image("关于作者-背景.png");
        buttonOk[0] = Load.image("确定.png");
        buttonOk[1] = Load.image("确定-鼠标移上.png");
        buttonOk[2] = Load.image("确定-鼠标按下.png");
    }

    public void onKeyDown(int keyCode) {

    }

    public void onKeyUp(int keyCode) {

    }

    public void onMouse(int x, int y, int struts) {
        buttonOkStruts = 0;

        if(Rect.isInternal(x, y, 188, 600 + Data.TITLE_BOX_HEIGHT, 132, 42)) {
            buttonOkStruts = struts == Scenes.MOUSE_MOVED ? 1 : struts == Scenes.MOUSE_DOWN ? 2 : 0;
            if(struts == Scenes.MOUSE_UP) Data.canvas.switchScenes("Home");
        }
    }

    public void draw(Graphics g) {
        // 绘制背景
        Data.background.show(g);
        // 绘制关于作者
        g.drawImage(background, 48, 60, null);
        // 绘制按钮
        g.drawImage(buttonOk[buttonOkStruts], 188, 600, null);
    }
}

2.5 背景音乐类

package utils;

import javax.imageio.ImageIO;
import javax.sound.sampled.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;

public class Load {

    public static Image image(String path) {
        BufferedImage img = null;
        URL url = Load.class.getResource("/resources/img/" + path);
        try {
            img = ImageIO.read(url);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return img;
    }

    // 返回一段音乐
    public static Clip sound(String path) {
        try {
            AudioInputStream ais = AudioSystem.getAudioInputStream(Load.class.getResourceAsStream("/resources/sound/" + path + ".wav"));
            Clip sound = AudioSystem.getClip();
            sound.open(ais);
            return sound;
        } catch (LineUnavailableException | UnsupportedAudioFileException | IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    public static void playSound(String path) {
        new Thread(() -> Load.sound(path).start()).start();
    }
}

获取源码,公众号回复【飞机】,即可。更多最新Java面试题加群、见群公告。~

不会还有人没 点赞 + 关注 + 收藏 吧!

在这里插入图片描述

目录
相关文章
|
15天前
|
Java Android开发
贪吃蛇【小游戏】(Java课设)
贪吃蛇【小游戏】(Java课设)
14 0
|
4月前
|
Java
8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏
8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏
78 1
|
15天前
|
Java Android开发
贪吃蛇小游戏【小游戏】(Java课设)
贪吃蛇小游戏【小游戏】(Java课设)
12 1
|
15天前
|
Java Android开发
日历/万年历【小游戏】(Java课设)
日历/万年历【小游戏】(Java课设)
16 1
日历/万年历【小游戏】(Java课设)
|
3月前
|
Java
用java来写一个简单的猜拳小游戏
用java来写一个简单的猜拳小游戏
11 0
|
3月前
|
安全 Java 开发者
FlyBird(飞翔的小鸟)Java小游戏
FlyBird(飞翔的小鸟)Java小游戏
48 0
|
3月前
|
Java
JAVA弹球小游戏
JAVA弹球小游戏
28 0
|
3月前
|
NoSQL Java 关系型数据库
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
基于java Swing 和 mysql实现的飞机订票系统(源码+数据库+ppt+ER图+流程图+架构说明+论文+运行视频指导)
231 0
|
4月前
|
安全 Java
Java小游戏之Swing框架实现飞机大战(附源码 超详细必看)
Java小游戏之Swing框架实现飞机大战(附源码 超详细必看)
47 0
|
9月前
|
Java
【Java】俄罗斯方块小游戏(附源码)
【Java】俄罗斯方块小游戏(附源码)
219 1