news 2026/5/31 12:58:51

用libGDX和Java 11从零开始,5分钟搞定你的第一个跨平台小游戏(附完整源码)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用libGDX和Java 11从零开始,5分钟搞定你的第一个跨平台小游戏(附完整源码)

用libGDX和Java 11快速构建你的第一款跨平台小游戏

周末的午后,阳光透过窗帘洒在键盘上。作为一名Java开发者,你是否曾想过亲手打造一款能在手机和电脑上运行的小游戏?libGDX正是实现这个梦想的绝佳工具。这个轻量级框架让跨平台游戏开发变得像编写普通Java程序一样简单。本文将带你用不到5分钟的时间,完成一个完整的"接水滴"游戏,让你立刻感受到游戏开发的乐趣。

1. 环境准备:零配置快速启动

游戏开发往往从繁琐的环境搭建开始劝退新手,但libGDX只需要两个基础工具:

  1. JDK 11+:推荐使用 Amazon Corretto 11 或 OpenJDK 11
  2. Android Studio:不仅是安卓开发工具,更是管理项目依赖的利器( 最新稳定版下载 )

验证安装是否成功:

java -version # 应显示类似:openjdk version "11.0.12"

提示:如果已有IntelliJ IDEA,可以直接使用,但Android Studio对移动端调试更友好

2. 项目生成:一键创建多平台工程

libGDX提供的项目生成器让初始化变得极其简单:

  1. 下载 gdx-setup.jar
  2. 运行命令:
java -jar gdx-setup.jar
  1. 在图形界面中填写:
    • Project name: RainCatcher
    • Package: com.yourname.raincatcher
    • Game class: RainGame
    • 勾选Desktop和Android平台

生成的项目结构如下:

RainCatcher/ ├── android/ # 安卓平台代码 ├── core/ # 共享游戏逻辑 ├── desktop/ # 桌面启动器 └── build.gradle # 多项目构建配置

3. 核心代码:实现接水滴游戏逻辑

在core/src/com.yourname.raincatcher/目录下创建RainGame.java:

public class RainGame extends ApplicationAdapter { private OrthographicCamera camera; private SpriteBatch batch; private Texture bucketTexture, dropTexture; private Sound dropSound; private Music rainMusic; private Rectangle bucket; private Array<Rectangle> raindrops; @Override public void create() { // 初始化资源 bucketTexture = new Texture("bucket.png"); dropTexture = new Texture("droplet.png"); dropSound = Gdx.audio.newSound(Gdx.files.internal("drop.wav")); rainMusic = Gdx.audio.newMusic(Gdx.files.internal("rain.mp3")); // 设置相机 camera = new OrthographicCamera(); camera.setToOrtho(false, 800, 480); // 创建水桶 bucket = new Rectangle(); bucket.x = 800/2 - 64/2; bucket.y = 20; bucket.width = 64; bucket.height = 64; // 初始化雨滴数组 raindrops = new Array<>(); spawnRaindrop(); // 播放背景音乐 rainMusic.setLooping(true); rainMusic.play(); } private void spawnRaindrop() { Rectangle raindrop = new Rectangle(); raindrop.x = MathUtils.random(0, 800-64); raindrop.y = 480; raindrop.width = 64; raindrop.height = 64; raindrops.add(raindrop); } }

4. 游戏循环:让世界动起来

在RainGame类中添加render方法实现游戏逻辑:

@Override public void render() { // 清屏 ScreenUtils.clear(0, 0, 0.2f, 1); // 更新相机 camera.update(); batch.setProjectionMatrix(camera.combined); // 处理输入 if(Gdx.input.isTouched()) { Vector3 touchPos = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0); camera.unproject(touchPos); bucket.x = touchPos.x - 64/2; } // 移动水桶 if(Gdx.input.isKeyPressed(Keys.LEFT)) bucket.x -= 200 * Gdx.graphics.getDeltaTime(); if(Gdx.input.isKeyPressed(Keys.RIGHT)) bucket.x += 200 * Gdx.graphics.getDeltaTime(); // 边界检查 if(bucket.x < 0) bucket.x = 0; if(bucket.x > 800 - 64) bucket.x = 800 - 64; // 生成新雨滴 if(TimeUtils.nanoTime() - lastDropTime > 1000000000) spawnRaindrop(); // 更新雨滴位置 for(Iterator<Rectangle> iter = raindrops.iterator(); iter.hasNext();) { Rectangle raindrop = iter.next(); raindrop.y -= 200 * Gdx.graphics.getDeltaTime(); if(raindrop.y + 64 < 0) iter.remove(); if(raindrop.overlaps(bucket)) { dropSound.play(); iter.remove(); } } // 渲染场景 batch.begin(); batch.draw(bucketTexture, bucket.x, bucket.y); for(Rectangle raindrop : raindrops) { batch.draw(dropTexture, raindrop.x, raindrop.y); } batch.end(); }

5. 资源管理与多平台适配

游戏资源应放在android/assets/目录下,包括:

  • bucket.png (64x64像素水桶图片)
  • droplet.png (64x64像素水滴图片)
  • rain.mp3 (背景雨声)
  • drop.wav (接住水滴音效)

桌面启动器(desktop/src/...)配置:

Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); config.setTitle("Rain Catcher"); config.setWindowedMode(800, 480); new Lwjgl3Application(new RainGame(), config);

安卓启动器(android/src/...)配置:

AndroidApplicationConfiguration config = new AndroidApplicationConfiguration(); config.useAccelerometer = false; config.useCompass = false; initialize(new RainGame(), config);

6. 构建与运行:一键测试多平台

在项目根目录运行:

桌面版:

./gradlew desktop:run

安卓版(需连接设备或启动模拟器):

./gradlew android:installDebug android:run

常见问题:如果安卓构建失败,检查gradle.properties中是否添加: android.useAndroidX=true android.enableJetifier=true

第一次运行可能会花费较长时间下载依赖,后续构建将非常快速。成功运行后,你将看到蓝色背景上有一个可移动的水桶和不断落下的水滴,接住它们会发出清脆的音效。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 12:55:49

PvZWidescreen:一键解锁植物大战僵尸完美宽屏体验的终极指南

PvZWidescreen&#xff1a;一键解锁植物大战僵尸完美宽屏体验的终极指南 【免费下载链接】PvZWidescreen Widescreen mod for Plants vs Zombies 项目地址: https://gitcode.com/gh_mirrors/pv/PvZWidescreen 还在为经典游戏《植物大战僵尸》在现代宽屏显示器上的黑边烦…

作者头像 李华
网站建设 2026/5/31 12:55:35

RevitLookup深度解析:5大技术方案彻底解决BIM数据黑箱难题

RevitLookup深度解析&#xff1a;5大技术方案彻底解决BIM数据黑箱难题 【免费下载链接】RevitLookup Interactive Revit RFA and RVT project database exploration tool to view and navigate BIM element parameters, properties and relationships. 项目地址: https://git…

作者头像 李华
网站建设 2026/5/31 12:54:32

Navicat重置终极指南:3种高效方法实现Navicat无限试用

Navicat重置终极指南&#xff1a;3种高效方法实现Navicat无限试用 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 想要免费使…

作者头像 李华
网站建设 2026/5/31 12:48:11

基于Arduino与舵机的智能篮球框:创客教育中的硬件交互实践

1. 项目概述与核心思路最近在整理创客工坊的教案&#xff0c;想找一个既能体现硬件交互逻辑&#xff0c;又足够有趣、能快速出效果的项目给学生们练手。翻看资料时&#xff0c;一个“会动的篮球框”点子让我眼前一亮。它的核心很简单&#xff1a;按下一个按钮&#xff0c;篮筐底…

作者头像 李华
网站建设 2026/5/31 12:45:16

一、为什么一张智能座舱框图,能把很多硬件工程师看懵?——从 8295 的“供血系统”和“大脑”开始讲起(深度拆解版)

🚗 为什么一张智能座舱框图,能把很多硬件工程师看懵?——从 8295 的“供血系统”和“大脑”开始讲起(深度拆解版) 做了很多年硬件的人。 第一次看智能座舱框图。 经常会出现一种很真实的反应: 看不懂。 不是你菜。 是真的复杂。 因为以前。 做一个车身 ECU。 可能…

作者头像 李华