这是一款复古像素风(Pixel Art)的网页闯关问答游戏。游戏前端使用 React + Vite 构建,后端数据(题目与成绩)通过 Google Apps Script 与 Google Sheets 进行交互。
- 像素风格 (Pixel Art):怀旧 CRT 屏幕效果、像素字体与 UI。
- 动态关主:每一关通过 DiceBear API 随机生成像素风 Boss。
- Google Sheets 整合:
- 自动读取云端题库。
- 游戏结束后自动将成绩(分数、通关状态)回传至 Google Sheets。
确保您的电脑已安装 Node.js (建议版本 v16+)。
# 进入项目目录
cd f:/Github/pixel-game
# 安装依赖
npm installnpm run dev启动后访问终端显示的本地链接(通常是 http://localhost:5173)。
此游戏依赖 Google Sheets 作为数据库。请按照以下步骤完成配置:
新建一个 Google Sheet,设定以下两个工作表(Sheet):
在第一行建立以下栏位(顺序必须一致):
| A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|
| ID | Question | OptionA | OptionB | OptionC | OptionD | Answer |
| 1 | 问题内容... | 选项A | 选项B | 选项C | 选项D | C |
(请参考下方的 测试题库 复制资料)
在第一行建立以下栏位(顺序必须一致):
| A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|
| ID | Runs | Total Score | Max Score | First Clear | Pass Count | Last Played |
| (留空) | (留空) | (留空) | (留空) | (留空) | (留空) | (留空) |
- 在 Google Sheet 中,点击上方菜单的 扩展程序 (Extensions) > Apps Script。
- 将本项目中
backend/code.gs的完整代码复制并覆盖到编辑器中。 - 点击 保存 (Save) 💾。
- 点击右上角的 部署 (Deploy) > 新建部署 (New deployment)。
- 配置部署设置:
- 类型: Web 应用 (Web app)
- 执行身份 (Execute as): 我 (Me) (这一点很重要!)
- 谁可以访问 (Who has access): 任何人 (Anyone) (为了让前端能无需登入即可读取数据)
- 点击 部署,复制生成的 Web App URL。
- 在项目根目录找到或建立
.env文件。 - 填入您刚刚获得的 Web App URL:
VITE_GOOGLE_APP_SCRIPT_URL=https://script.google.com/macros/s/您的应用ID/exec
VITE_PASS_THRESHOLD=3 # 设置需要答对几题才算通过
VITE_QUESTION_COUNT=5 # 设置每次游玩的题目数量您可以直接复制下表内容到您的 题目 工作表中(从第 2 行开始贴上,不要覆盖标题行)。
| ID | Question | OptionA | OptionB | OptionC | OptionD | Answer |
|---|---|---|---|---|---|---|
| 1 | 什么是生成式 AI (Generative AI) 的主要特点? | 只能分析现有数据 | 可以创造新的内容(文本、图像等) | 专门用于物理机器人控制 | 仅用于数学计算 | B |
| 2 | 下列哪一个是著名的生成式语言模型? | Excel | Photoshop | GPT-4 | Windows | C |
| 3 | "Prompt Engineering" 指的是什么? | 编写计算机硬件驱动 | 设计 AI 模型的物理外观 | 编写提示词以引导 AI 生成结果 | 修复打印机错误 | C |
| 4 | Transformer 架构最初是为解决什么问题而提出的? | 图像识别 | 机器翻译 (NLP) | 自动驾驶 | 股票预测 | B |
| 5 | 下列哪项不是常见的生成式 AI 应用? | 文本摘要 | 图像生成 (如 Midjourney) | 传统的关键词搜索 | 代码编写助手 | C |
| 6 | 训练大型语言模型 (LLM) 通常需要什么? | 大量的数据与算力 | 一台普通的计算器 | 不需要任何数据 | 手动输入规则 | A |
| 7 | AI 生成的内容可能出现的“胡说八道”现象被称为什么? | 幻觉 (Hallucination) | 崩溃 (Crash) | 蓝屏 (BSOD) | 睡眠 (Sleep) | A |
| 8 | 下列哪个工具主要用于根据文本生成图像? | ChatGPT | Stable Diffusion | GitHub Copilot | BERT | B |
| 9 | 为什么使用生成式 AI 时需要注意数据隐私? | AI 会偷走你的电脑 | 模型可能会记忆并泄漏敏感训练数据 | AI 不喜欢私密数据 | 屏幕会变黑 | B |
| 10 | RAG (检索增强生成) 技术的主要目的是什么? | 减少模型参数 | 增加模型训练时间 | 结合外部知识库以提高回答准确性 | 让 AI 画图更漂亮 | C |
- 启动项目
npm run dev。 - 输入任意 ID(例如
TEST01)。 - 确认是否能成功载入题目。
- 完成答题后,检查
回答工作表是否新增了记录。
本项目已内置 GitHub Actions 工作流,支持提交代码后自动部署到 GitHub Pages。
- 在 GitHub 上新建一个仓库(Repository)。
- 将本地代码推送到该仓库:
git init git add . git commit -m "Initial commit" git branch -M main git remote add origin https://github.com/您的用户名/仓库名.git git push -u origin main
由于部署在公开网络,不建议将敏感信息直接写在代码中(虽然 Vite 实际上会将它们打包到前端代码里,但在构建流程中使用 Secrets 更规范)。
- 进入 GitHub 仓库页面。
- 点击 Settings > Secrets and variables > Actions。
- 点击 New repository secret,添加以下三个变量(参考您的
.env或.env.example):VITE_GOOGLE_APP_SCRIPT_URL: (您的 Web App URL)VITE_PASS_THRESHOLD: (例如 3)VITE_QUESTION_COUNT: (例如 5)
- 在 Settings > Actions > General。
- 滚动到底部 Workflow permissions。
- 勾选 Read and write permissions。
- 点击 Save。
- 只要您将代码 push 到
main分支,GitHub Action 就会自动开始构建。 - 构建完成后,会自动建立一个
gh-pages分支。
- 构建成功后,进入 Settings > Pages。
- 在 Build and deployment 下的 Source 选择
Deploy from a branch。 - Branch 选择
gh-pages,文件夹选/(root)。 - 点击 Save。
- 稍等片刻,GitHub 会显示您的在线游戏链接!
-
部署后页面空白 (404 Error):
- 这通常是因为资源路径问题。本项目已预设
vite.config.js中的base: './'来解决此问题。 - 确保您使用的是
HashRouter(App.jsx 已配置)。
- 这通常是因为资源路径问题。本项目已预设
-
右上角显示 "DEMO MODE (OFFLINE)":
- 这表示游戏没有关联到 Google Apps Script。
- 请检查 GitHub 仓库的 Settings > Secrets and variables > Actions,确保已添加
VITE_GOOGLE_APP_SCRIPT_URL。 - 添加 Secret 后,您需要重新运行刚才的 Action 才能生效(或提交个空 commit)。