当前位置: 首页 > 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.rkmt.cn/news/1434239.html

相关文章:

  • AC偏置技术揭秘:从磁滞回线到磁带录音机的工程实践
  • Illustrator画板同步缩放脚本:artboardsResizeWithObjects终极使用指南
  • Boss-Key终极指南:一键隐藏Windows窗口的完整隐私保护解决方案
  • 程序员、自由职业者真的没活路了吗?
  • 艾尔登法环帧率解锁终极指南:3步轻松突破60FPS限制
  • 基于Arduino与光敏电阻的智能提醒灯DIY教程:从原理到实践
  • 【用呼吸重构创造价值关系——QiLink生态】
  • Arduino音乐播放:从PWM原理到蜂鸣器驱动电路设计
  • 手把手教你用VMware Workstation 17 Pro给老旧服务器系统Windows Server 2003 R2安个家
  • 如何快速搭建高性能Minecraft服务器:CatServer三合一终极解决方案
  • QiLink 气链科技 · 战略核心卡片
  • 安卓手机备份全攻略!照片文件这样存,再也不会丢失 - 品牌测评鉴赏家
  • Anno 1800模组加载器完整指南:从零开始掌握游戏自定义艺术
  • 让尘封的PS3手柄在Windows上重获新生:BthPS3开源驱动完全指南
  • 主流网盘智能相册整理功能实测对比,日常存储整理怎么选 - 品牌测评鉴赏家
  • Honey Select 2终极增强方案:如何快速构建完整的汉化与优化体验
  • 九大网盘直链下载助手终极指南:告别限速困扰,一键获取高速下载链接
  • 英雄联盟玩家的智能助手:League-Toolkit如何用本地化力量重塑游戏体验
  • 如何彻底卸载Windows 10 OneDrive:一键清理系统资源的完整指南
  • 5个实用技巧:如何通过命令行精准控制F3D中STL模型的渲染视角
  • 3步解锁群晖Video Station:让DSM 7.2.2/7.3.x视频管理重获新生
  • 从AI与区块链到集体意识:技术如何赋能人类认知与协作网络
  • 如何用5步构建智能字幕自动化系统:从原理到实践
  • 抖音视频怎么去水印?2026四款免费去水印工具实测对比 - 科技大爆炸
  • 微信自动化革命:5分钟搭建智能助手WechatBot完整教程
  • 机器人关节电机磁铁厂家怎么选?浙江顶峰磁材凭什么排在第一 - 玖叁鹿
  • 基于BLE与Arduino的智能环境监测与灯光控制系统全流程开发
  • 2026无人机电机磁铁厂家怎么选?浙江顶峰磁材凭什么被行业反复提及 - 玖叁鹿
  • 终极指南:3步免费解锁碧蓝航线全皮肤 - Perseus完整配置教程
  • 新手育儿必备 多款口碑婴儿尿布台实测推荐 - 玖叁鹿