写点什么

Java 实现一个打飞机的小游戏【附源码】

作者:JavaPub
  • 2022 年 5 月 30 日
  • 本文字数:2094 字

    阅读完需:约 7 分钟

文末源码


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


@[toc]

1 前言

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

2 正文

公众号:JavaPub

2.1 展示

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


<img src="https://www.z4a.net/images/2022/03/23/ae8bacca260b5e978f1dab8010d9a2a1.gif" alt="ae8bacca260b5e978f1dab8010d9a2a1.gif" border="0" />





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 面试题加群、见群公告。~


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


系列推荐:

Java 实现 捕鱼达人 小游戏【附源码】


Java 实现 贪吃蛇 小游戏【附源码】


Java 实现 1024 小游戏【附源码】


Java实现一个坦克大战的小游戏【附源码】


Java实现一个打飞机的小游戏【附源码】


Java 实现 植物大战僵尸 小游戏【附源码】

发布于: 刚刚阅读数: 3
用户头像

JavaPub

关注

原创技术公众号:JavaPub 2018.12.02 加入

原创技术公众号:JavaPub | 限时免费领取原创PDF

评论

发布
暂无评论
Java实现一个打飞机的小游戏【附源码】_JavaPub_InfoQ写作社区