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

发布时间:2026/5/31 12:59:07

用libGDX和Java 11从零开始,5分钟搞定你的第一个跨平台小游戏(附完整源码) 用libGDX和Java 11快速构建你的第一款跨平台小游戏周末的午后阳光透过窗帘洒在键盘上。作为一名Java开发者你是否曾想过亲手打造一款能在手机和电脑上运行的小游戏libGDX正是实现这个梦想的绝佳工具。这个轻量级框架让跨平台游戏开发变得像编写普通Java程序一样简单。本文将带你用不到5分钟的时间完成一个完整的接水滴游戏让你立刻感受到游戏开发的乐趣。1. 环境准备零配置快速启动游戏开发往往从繁琐的环境搭建开始劝退新手但libGDX只需要两个基础工具JDK 11推荐使用 Amazon Corretto 11 或 OpenJDK 11Android Studio不仅是安卓开发工具更是管理项目依赖的利器 最新稳定版下载 验证安装是否成功java -version # 应显示类似openjdk version 11.0.12提示如果已有IntelliJ IDEA可以直接使用但Android Studio对移动端调试更友好2. 项目生成一键创建多平台工程libGDX提供的项目生成器让初始化变得极其简单下载 gdx-setup.jar运行命令java -jar gdx-setup.jar在图形界面中填写Project name: RainCatcherPackage: com.yourname.raincatcherGame class: RainGame勾选Desktop和Android平台生成的项目结构如下RainCatcher/ ├── android/ # 安卓平台代码 ├── core/ # 共享游戏逻辑 ├── desktop/ # 桌面启动器 └── build.gradle # 多项目构建配置3. 核心代码实现接水滴游戏逻辑在core/src/com.yourname.raincatcher/目录下创建RainGame.javapublic class RainGame extends ApplicationAdapter { private OrthographicCamera camera; private SpriteBatch batch; private Texture bucketTexture, dropTexture; private Sound dropSound; private Music rainMusic; private Rectangle bucket; private ArrayRectangle 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(IteratorRectangle 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.useAndroidXtrue android.enableJetifiertrue第一次运行可能会花费较长时间下载依赖后续构建将非常快速。成功运行后你将看到蓝色背景上有一个可移动的水桶和不断落下的水滴接住它们会发出清脆的音效。

相关新闻