Note
This readme is generated by OpenDeepWiki
Click 是一个面向开发者和游戏爱好者的轻量级点击游戏,旨在提供一个基于 Go 和 Ebitengine 的简单但功能完整的游戏开发示例。
- 使用 Ebitengine 框架实现高性能的 2D 游戏渲染。
- 通过 SQLite 数据库实现用户数据和分数的高效存储。
- 提供多难度级别和用户切换功能,增强游戏的可玩性。
+-------------------+ +-------------------+ +-------------------+
| 用户界面层 | | 业务逻辑层 | | 数据访问层 |
| (UI Components) | <---> | (Game Logic) | <---> | (Database) |
+-------------------+ +-------------------+ +-------------------+
Click/
├── component/ # UI 组件
├── db/ # 数据库操作
├── log/ # 日志模块
├── util/ # 工具函数
├── game.go # 游戏主逻辑
└── main.go # 程序入口
组件 | 技术选型 | 说明 |
---|---|---|
前端 | Ebitengine | 基于 Go 的轻量级 2D 游戏引擎,适合高性能渲染。 |
后端 | Go | 语言特性简洁高效,适合游戏逻辑开发。 |
数据库 | SQLite | 嵌入式数据库,无需额外服务,适合小型游戏数据存储。 |
日志系统 | 自定义日志模块 | 记录游戏运行时的调试信息。 |
- 组件模块 (
/component
)- 包含按钮、文本框、计时器等 UI 组件。
- 支持用户交互和动态渲染。
- 数据库模块 (
/db
)- 用户管理 (
user.go
):存储用户信息。 - 分数管理 (
score.go
):记录玩家分数。 - 难度管理 (
difficult.go
):配置游戏难度。
- 用户管理 (
- 工具模块 (
/util
)- 提供字体加载 (
font.go
)、通用工具函数 (util.go
) 等功能。
- 提供字体加载 (
- 功能描述: 管理游戏的准备、进行中、结束等状态。
- 实现逻辑:
- 通过
game.go
控制游戏主循环。 - 使用键盘事件(空格键、
R
键)触发状态切换。
- 通过
- 用户界面:
- 开始按钮、重置按钮、计时器显示。
- 功能描述: 支持多用户切换和分数记录。
- 数据流:
用户输入 -> 逻辑处理 -> 数据库存储 (
user.go
,score.go
)。
- 功能描述: 提供预设难度(简单、中等、困难)和自定义选项。
- 实现逻辑:
- 通过
difficulty_switch_area.go
动态调整游戏参数。 - 数据存储在
difficult.go
中。
- 通过
表名 | 字段 | 说明 |
---|---|---|
users |
id, name, created_at |
用户基本信息。 |
scores |
user_id, score, timestamp |
用户分数记录。 |
difficulty |
level, speed, target_size |
游戏难度配置。 |
- 玩家点击目标 -> 分数更新 -> 数据库存储。
- 用户切换 -> 加载对应分数记录。
git clone https://github.com/Jinvic/Click.git
cd Click
go mod download
go run main.go
go run github.com/Jinvic/Click@latest
- 日志文件
/log/log.go
记录运行时信息。
- 启动游戏后点击“Start”按钮。
- 快速点击屏幕上出现的目标。
- 按
R
键重置游戏。
- 自定义难度: 在设置界面调整目标大小和移动速度。