Skip to content

ElovisiaWinslow/LinkGame

Repository files navigation

LinkGame - 连连看游戏

一款使用 Jetpack Compose 开发的经典连连看 Android 游戏,包含挑战模式和无尽模式,支持音效、背景音乐、排行榜和昵称设置。

项目简介

LinkGame 是一款消除类益智游戏,玩家需要在限时内连接两个相同图案的方块,路径最多只能拐两个弯。游戏包含:

  • 挑战模式:依次通关 4 个预设难度关卡(简单、普通、困难、极限),全部通关即获胜。
  • 无尽模式:选择一个难度后不断挑战,每清空一次棋盘进入下一关,难度不变但时间重新计时。

游戏结束后可以保存成绩到排行榜,并支持查看和删除记录。

功能特性

  • 🎮 两种游戏模式(挑战/无尽)
  • 🧩 自动生成可解棋盘
  • ⏱️ 限时挑战,实时显示剩余时间
  • 🔊 背景音乐和音效开关(点击、消除)
  • 🏆 排行榜(按得分和用时排序)
  • ✍️ 用户昵称设置
  • 🌈 动态主题颜色(适配浅色/深色模式)
  • 🧭 支持返回键退出游戏并保存成绩
主界面 挑战模式 无尽模式 排行榜 排行榜 设置

技术栈

  • 语言:Kotlin
  • UI 框架:Jetpack Compose
  • 架构:MVVM + ViewModel + StateFlow
  • 数据存储:DataStore(Preferences)存储设置、昵称和排行榜
  • 异步处理:Kotlin Coroutines
  • 音频播放:MediaPlayer
  • 序列化:kotlinx.serialization

项目结构

com.example.linkgame/
├── audio/                  # 音频管理
│   └── AudioManager.kt
├── data/                   # 数据层
│   ├── model/              # 数据模型(LeaderboardEntry)
│   └── repository/         # 数据仓库(Leaderboard, Nickname, Settings)
├── game/                   # 游戏逻辑
│   ├── engine/             # GameController(游戏状态和逻辑)
│   ├── logic/              # 棋盘生成、连接检测、路径查找、可解性校验
│   └── model/              # Board, GameMode, LevelConfig
├── ui/                     # 界面
│   ├── components/         # 可复用组件(棋盘、对话框、分数条等)
│   ├── navigation/         # 导航(GameNavHost)
│   ├── screen/             # 各个屏幕(Start, Game, Leaderboard)
│   └── theme/              # 主题和颜色
└── utils/                  # 工具类(颜色映射、文字标签)

构建与运行

环境要求

  • Android Studio Flamingo 或更高版本
  • Android SDK 21+
  • Gradle 8.0+

克隆项目

git clone https://github.com/ElovisiaWinslow/LinkGame.git

在 Android Studio 中打开

  1. 打开 Android Studio,选择 Open an Existing Project
  2. 选择项目根目录下的 build.gradle.kts(或 build.gradle)。
  3. 等待 Gradle 同步完成。

添加资源文件

项目依赖一些音频文件(click.mp3, eliminate.mp3, bgm.mp3)和图片,需要自行放入 res/raw/ 目录。若没有音频文件,可以将 AudioManager 中的相关调用注释掉,或替换为其他资源。

运行

  • 连接 Android 设备或启动模拟器(API 21+)。
  • 点击 Run 按钮(绿色三角形)运行。

使用说明

开始界面

  • 显示当前昵称(未设置时可点击修改)。
  • 点击 挑战模式 直接开始挑战。
  • 点击 无尽模式 选择难度后开始。
  • 设置 按钮可控制背景音乐和音效开关。
  • 排行榜 查看历史成绩。
  • 退出游戏 退出应用。

游戏界面

  • 点击任意方块选中(高亮显示),再次点击另一个相同图案且路径可连通的方块完成消除。
  • 顶部显示得分、剩余时间和进度条。
  • 右上角“退出”按钮可暂停游戏并选择是否保存成绩。
  • 完成一关后显示“下一关”按钮,最后一关通关后自动保存成绩。

排行榜

  • 按模式(挑战/无尽)筛选。
  • 无尽模式可按难度筛选。
  • 支持删除记录。

贡献指南

欢迎提交 Issue 或 Pull Request。如果您想为项目贡献代码,请遵循以下步骤:

  1. Fork 本仓库。
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)。
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')。
  4. 推送到分支 (git push origin feature/AmazingFeature)。
  5. 打开 Pull Request。

许可证

本项目基于 MIT 许可证开源。详见 LICENSE 文件。

联系

如果您有任何问题或建议,可以通过以下方式联系:


Enjoy the game! 🎉

About

A classic LinkGame (Lianliankan) built with Jetpack Compose. Features Challenge Mode, Endless Mode, leaderboard, nickname settings, and sound effects.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages