学完了Java面向对象、集合,再了解一些多线程以及swing的知识,可以尝试自己制作一些小游戏了。在哔哩哔哩上,很容易找到swing小游戏的教程,如飞机大战、坦克大战、俄罗斯方块等等经典游戏,在模仿的基础上,我们也可以别出心裁,制作自己的小游戏。作者在快速学习推箱子教程后,观看了【散人】神奇脑洞解谜 baba is you 强力推荐_哔哩哔哩_bilibili,受到启发,于是开始了制作。
1. 准备工作
1.1 主要开发工具
-
开发工具:
-
IntelliJ IDEA 2021.2.3 (Ultimate Edition)
-
-
JDK版本:
-
jdk1.8
-
1.2 知识准备
-
面向对象知识
-
Swing
-
少量线程知识
1.3 推荐视频、书籍
-
《java核心技术卷I》
-
Java AWT Swing(图形界面编程)全套教程,基础入门进阶实战完整教程,行业大牛深度解析哔哩哔哩bilibili
-
【Java游戏项目】还记得小时候玩过的“推箱子”小游戏吗?我用Java做了出来!Java项目开发java游戏开发Java小游戏java练手项目__哔哩哔哩bilibili
使用建议:
本教程是作者放假一周的开发回顾,尽量让大家可以做出可以运行的程序。对于一些技术问题,建议大家阅读经典书籍揣摩体会,本人开发前参考了核心技术卷I第10、11章内容,完成了书中的小Demo,之后又快速跟着黑马程序员视频学习了awt\swing,最后,跟着尚学堂项目实战,体会到了小游戏制作的一些设计逻辑。在不断收集baba is you这款游戏的资料中,边学习边开发,最终,完成了上篇的游戏。现在分享出来,希望可以提供给大家一些帮助。
2.项目启动
整个项目,我认为重要的是对数据结构的设计,本游戏开放程度较大,数据结构的设计直接影响到后续关卡的制作,本人也是尝试了一些数据结构,最终,采用Block,作为游戏的基本单元,用到了线性数据结构ArrayList以及键值存储HashMap.
2.1 新建project
本项目没有用到第三方库,因此普通的JavaSE工程即可。
-
新建项目 :选择jdk1.8即可
项目名成babaisyouUsingSwing,点击Finish,完成工程创建。
2.2 创建启动类
2.2.1 建包
考虑结合行业规范以及后期编码,在src下建立如下package
-
app 包内放置我们的启动类GameApp
-
constant放置所需常量
-
domain 放置我们最为基础的数据,相当于model层
-
level 放置绘制我们界面元素的类,相当于controller
-
ui 放置界面,即view
-
util 存放文件读取工具类
2.2.2 创建游戏窗口GameFrame
在ui包下编写游戏窗口GameFrame类,窗口大小根据游戏资源计算,详见后续教程
/**
* 最终游戏界面
*/
public class GameFrame extends JFrame {
private static final int DEFAULT_WIDTH = 19 * 24;
private static final int DEFAULT_HEIGHT = 19 * 24;
public GameFrame() {
// 设置窗口大小
this.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
// 窗口名称
this.setTitle("baba is you");
// 设置关闭窗口即结束程序
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口可见
this.setVisible(true);
// 设置窗口居中显示
this.setLocationRelativeTo(null);
}
}
2.2.3 创建启动类测试
在app包下建立GameApp类,运行测试
public class GameApp {
public static void main(String[] args) {
new GameFrame();
}
}
运行后,如下图: