登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
登录
注册
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
1
Star
7
Fork
2
openvela
/
packages_demos
代码
Issues
0
Pull Requests
1
Wiki
统计
流水线
服务
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
1
Breakout Game 《打砖块游戏》
开启的
foamzzz:breakout
openvela:dev
foamzzz
创建于 2025-07-18 13:19
克隆/下载
HTTPS
SSH
复制
下载 Email Patch
下载 Diff 文件
# Breakout Game 《打砖块游戏》 **“KUN生是旷野,不是轨道!”** 拥有对篮球无限热爱的KUN,在家族中独树一帜,正挥洒着汗水,勤奋努力的击打篮球撞碎砖块,缔造属于自己的篮球哲学。 基于OpenVela和LVGL开发的触屏Breakout打砖块游戏,实现了基本的游戏逻辑,增加了图片素材并实现了打击音效。 在对应素材文件夹下,已通过`readme`和`LICENSE`文件详细标明了作者出处等信息,满足了相应的license协议要求,允许个人在作品及商业中使用,但不得对素材进行单独售卖。 以下是第二版游戏界面:  # ✨ Features 特点 - **游戏区域**:使用 LVGL 创建全屏的游戏区域,并支持动态生成砖块。 - **挡板与球的物理机制**:挡板通过触摸输入进行控制,球的运动具有物理效果,碰撞后反弹。 - **砖块系统**:砖块具有血量,可被破坏,支持不同类型砖块的行为。 - **音效反馈**:根据砖块的血量播放不同的音效。 - **触摸输入**:支持触摸屏输入来控制挡板移动。 - **游戏状态管理**:管理游戏状态(例如:PLAYING、GAME_OVER、PAUSE)以控制游戏流程。 # ️ Image Handling(图片处理) ## 1. libpng decoder(libpng 解码器) 好消息,OpenVela系统已经内置了该PNG解码器,仅需将`LIB_PNG`和`LV_USE_LIBPNG`配置为`yes`,即可轻松使用`lv_image_set_src`等函数读取使用`PNG`图片。使用方法可以参考:`https://lvgl.100ask.net/master/details/libs/libpng.html` 此外,这是libpng的github仓库链接:`https://github.com/pnggroup/libpng`,自己手动引入还是有难度。 ## 2.Image Caching(图片缓存) LVGL 支持将图像缓存到内存中,以提升图像组件在运行时的加载速度,特别适用于反复绘制的图像场景,如游戏背景、按钮图标等。 在从外部读入图片过多,会有明显卡顿,可以使用图片缓存的方法,将图片读入内存。具体可以参考:`https://lvgl.100ask.net/master/details/main-components/image.html#overview-image-caching` # Audio Handling(音频处理) 引用了packages_demos仓库下的music_player的音频控制文件`audio_ctl.c`和`audio_ctl.h`,通过`audio_ctl_init_nxaudio`加载音频文件,`audio_ctl_start`播放音频,`audio_ctl_stop`暂停音频,`audio_ctl_uninit_nxaudio`释放资源。目前实现了碰撞砖块发出音效,但还存在一些bug。 # Getting Started 快速开始 首先进入模拟器配置 ## 1.配置模拟器(menuconfig) ```bash ./build.sh vendor/openvela/boards/vela/configs/goldfish-armeabi-v7a-ap menuconfig ``` 使用`/`键进入搜索模式 - 配置`LVX_USE_DEMO_BREAKOUT `为 `yes` - `LVX_BREAKOUT_DATA_ROOT`的路径设置为`/data ` (Kconfig文件默认预设为 `/data`) - `LVX_BREAKOUT_STACKSIZE`设置为65536 - `LIB_PNG`和`LV_USE_LIBPNG`配置为`yes` (读取png图片资源) - `AUDIO`和`AUDIOUTILS_NXAUDIO_LIB`配置为`yes` (读取wav音频文件) ## 2.构建和清除构建文件 ### 开始构建 ```bash ./build.sh vendor/openvela/boards/vela/configs/goldfish-armeabi-v7a-ap -j$(nproc) ``` ### 清理构建产物 ```bash ./build.sh vendor/openvela/boards/vela/configs/goldfish-armeabi-v7a-ap distclean -j$(nproc) ``` ## 3.ADB推送更新关卡等资源(在模拟器运行状况下) ```bash adb push apps/packages/demos/breakout/res /data/ ``` ## 4.启动模拟器 ```bash ./emulator.sh vela ``` ## 5.启动游戏 ```bash breakout & ``` --- # ▶️ 启动游戏 在 main文件函数中初始化 LVGL后,调用: ballgame_start(); // 启动游戏 # Controls - 移动挡板:按住并拖动屏幕,挡板随手指水平移动。 - 发射小球:游戏开始时,轻触屏幕即可发射小球。 - 重新开始:掉球后点击 "Restart" 按钮重开一局。 # Level File Format (.dat) 放置关卡文件: 将 .dat 文件放到资源路径下,例如: `breakout/res/map/level_1.dat` 关卡文件为文本格式,使用字符描述砖块: | 字符 | 说明 | 生命值 | |------|----------------|--------| | 空格 | 空(无生成) | 无 | | `#` | 墙(不可破坏) | -1 | | `A` | 绿色砖块 | 1 | | `B` | 橙色砖块 | 2 | | `C` | 紫色砖块 | 3 | | `D` | 黄色砖块 | 4 | | `E` | 蓝色砖块 | 5 | | 未知类型 | 绿色砖块 | 1 | 此处读取文件时,会将换行符`\n`,制表符`\r`,文件结尾符号`\0`也识别出来,需要注意排除。 关卡示例: ``` ####### #A B A# # C # ####### ``` # 素材使用声明 - 图片素材来源于`https://icon.sucai999.com/`以及`https://craftpix.net` - 音频素材来源于`https://freesound.org/` **本项目中的图片资源可以在个人作品中使用,并且可以用于商业项目,前提是遵守相应的许可协议。** - **Microsoft 图片**:可在个人及商业项目中使用,需遵守 **MIT** 许可协议。 - **Google 图片**:可在个人及商业项目中使用,需遵守 **Apache 2.0** 许可协议,并附带版权声明、许可证文本及修改声明。 - **CraftPix.net 图片**:可用于个人及商业项目,但需遵守 **CraftPix 自定义许可协议**,保留版权信息并不得单独转售源文件。 - **freesound音频**:本作品使用的音频文件皆为 **CC0(Creative Commons 0)** 授权的资源,表示该资源已被作者明确放弃所有版权及相关权利,可自由复制、修改、分发,亦可用于个人或商业用途,无需署名、无需许可、无任何限制。 # ️ TODO 未来的工作 - UI和界面美化 √ - 得分与生命系统 - 多种道具(如掉落多球分裂,加长板等) - 更新多关卡支持与切换 - 增加交互音效 √ - 更智能的反弹算法(目前在考虑box2d)
此 Pull Request 需要贡献者签署贡献者协议后方可合并。
此 Pull Request 需要通过一些审核项
类型
指派人员
状态
审查
openvela-robot
进行中
(0/1人)
测试
openvela-robot
进行中
(0/1人)
此 Pull Request 暂不能合并,一些审核尚未通过
怎样手动合并此 Pull Request
git checkout dev
git pull https://gitee.com/foamzz/packages_demos.git breakout
git push origin dev
评论
14
提交
2
文件
49
检查
代码问题
0
批量操作
展开设置
折叠设置
审查
Code Owner
审查人员
openvela-robot
openvela-robot
未设置
最少人数
1
测试
openvela-robot
openvela-robot
未设置
最少人数
1
优先级
不指定
严重
主要
次要
不重要
标签
ci-failed
关联 Issue
未关联
Pull Request 合并后将关闭上述关联 Issue
里程碑
未关联里程碑
合并选项
合并后删除提交分支
提交分支为默认分支,无法删除
合并后关闭提到的 Issue
接受 Pull Request 时使用扁平化(Squash)合并
勾选此选项后,将建议使用 Squash Merge 方式合并以精简提交历史记录
参与者
(2)
Cherry-pick 提交
Cherry-pick 可以将
特定提交(Commit)
从某个分支挑选并应用到另一个分支,实现快速集成特定更改,而无需合并整个分支。
请选择应用 Cherry-pick 提交 (Commit) 的目标分支
新建分支
当前账号不存在 Fork 仓库,建议 cherry-pick 到 Fork 仓库。
Fork 仓库
提交列表
Commit SHA
Commit Message
基于 Cherry-pick 后的分支发起 Pull Request
取消
Cherry-pick
C++
1
https://gitee.com/open-vela/packages_demos.git
git@gitee.com:open-vela/packages_demos.git
open-vela
packages_demos
packages_demos
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册