当前位置: 首页 > news >正文

用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

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

http://www.jsqmd.com/news/922912/

相关文章:

  • Boss-Key终极指南:一键隐藏Windows窗口的完整隐私保护解决方案
  • 保姆级教程:在Windows 10/11上手动配置MySQL 5.7.44(附my.ini文件详解)
  • 艾尔登法环帧率解锁终极指南:3步轻松突破60FPS限制
  • 基于Arduino与光敏电阻的智能提醒灯DIY教程:从原理到实践
  • UE5独立游戏开发避坑:为什么你的多语言UI切换总失败?从独立进程测试到打包配置的完整流程
  • Qwen3.7-Max:当Agent成为新范式,我们站在了AI应用的拐点
  • 2026 广州黄埔区搬运公司收费标准 无隐形消费实测 - 从来都是英雄出少年
  • 专业级抖音批量下载工具实战指南:7大特性深度解析与高效配置技巧
  • 程序员、自由职业者真的没活路了吗?
  • 终极Windows和Office激活方案:KMS智能激活工具完整指南
  • Steam游戏自动破解终极指南:三步告别DRM限制困扰
  • 深度解析ide-eval-resetter:JetBrains IDE试用期重置技术实现
  • 【用呼吸重构创造价值关系——QiLink生态】
  • 温州AI搜索优化服务商2026深度评测:避坑选型指南 - 品牌报告
  • LinkSwift:3分钟搞定网盘下载,让你的文件传输回归正常速度
  • 免费开源B站视频解析API:轻松获取高清视频资源的终极解决方案
  • Arduino音乐播放:从PWM原理到蜂鸣器驱动电路设计
  • 2026滚塑产品生产厂家怎么选?本凡机械领衔,这些实力派值得关注 - 玖叁鹿
  • 告别C盘爆红!保姆级教程:用mklink命令将Win10用户文件夹无损迁移到D盘
  • 如何快速搭建高性能Minecraft服务器:CatServer三合一终极解决方案
  • 2026河源名表回收哪家靠谱?正规平台推荐与避坑指南 - 生活测评小能手
  • 智慧职教刷课脚本终极指南:3分钟实现自动化学习
  • 手把手教你用VMware Workstation 17 Pro给老旧服务器系统Windows Server 2003 R2安个家
  • QiLink 气链科技 · 战略核心卡片
  • Python自动化邮件系统:基于Google API的群发通知解决方案
  • 告别Windows焦虑!用Deepin 20.3打造你的第一台Linux主力机(附保姆级分区指南)
  • 安卓手机备份全攻略!照片文件这样存,再也不会丢失 - 品牌测评鉴赏家
  • RevitLookup:5分钟掌握BIM数据透视的终极指南
  • 基于Arduino与CircuitPython的交互式灯光艺术装置制作全流程
  • Switch第三方B站客户端wiliwili:完整安装与高效使用指南