From 54fd94173f83b0f415966ebdf4738db8981ac3ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=81=E6=B3=93=E5=AE=81?= Date: Mon, 21 Sep 2026 18:31:53 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E7=94=A8=E8=AF=B4=E6=98=8E=E9=9B=86?= =?UTF-8?q?=E4=B8=AD=E5=88=B0=E9=A2=98=E9=9D=A2=EF=BC=8Cdevelopment=20?= =?UTF-8?q?=E4=BB=85=E4=BF=9D=E7=95=99=E6=95=B0=E7=8B=AC=E6=9D=90=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- development/README.md | 15 +++++---------- development/project-notes.md | 12 ------------ development/requirements.md | 30 +++++++----------------------- tasks/03-development.md | 10 ++++++---- 5 files changed, 20 insertions(+), 51 deletions(-) delete mode 100644 development/project-notes.md diff --git a/README.md b/README.md index a896f59..e778ee3 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ 1. 阅读对应题面,尤其是每题的完成要求、提交材料和 AI 规则。 2. 第一题的学习资源见题面;第二题可以复制[App 设计说明书(简版模板)](templates/design-document.md),在熟悉的文档工具中完成并导出 PDF。 -3. 第三题需要 Fork [本仓库](https://git.itouc.cn/ITStudio_OUC/iOS_2026_National_Day),在个人 Fork 的 [development/](development/README.md) 目录开发,保留原题文件。 +3. 第三题需要 Fork [本仓库](https://git.itouc.cn/ITStudio_OUC/iOS_2026_National_Day),在个人 Fork 中自行组织项目目录,保留原题文件;[development/](development/README.md) 提供数独路线的详细需求和基础材料。 ## 提交安排 @@ -41,7 +41,7 @@ tasks/ 三道题的题面 templates/ 第二题简版设计说明书模板 submissions/ 前两题个人提交文件夹与提交说明 -development/ 第三题详细需求、辅助材料与个人 Fork 开发目录 +development/ 数独路线的详细需求与基础材料 README.md 考核入口与统一说明 .gitignore Swift/Xcode 常见临时文件忽略规则 ``` diff --git a/development/README.md b/development/README.md index 749b72e..f36a358 100644 --- a/development/README.md +++ b/development/README.md @@ -1,15 +1,10 @@ -# 第三题开发目录 +# 数独开发材料 -先阅读[第三题简要题面](../tasks/03-development.md),再 Fork 仓库,在个人 Fork 的本目录中开发。无需向原仓库提交材料或 PR;最好在面谈前提前告知负责人仓库链接和项目位置,方便预先看代码。 +本目录仅提供路线 B 数独游戏的详细需求和基础材料。 -## 开发材料 - -- [开发需求](requirements.md):两条路线共用标准、路线 A 说明、路线 B 数独的基础需求与验收示例。 +- [数独游戏详细需求](requirements.md):游戏规则、功能要求、边界行为与功能检查示例。 - [数独题库](sudoku-puzzles.json):3 道固定的标准 9×9 数独;每题具有唯一解,不含答案与求解代码。 -- [作品说明模板](project-notes.md):在个人 Fork 中填写,帮助负责人打开项目、了解完成情况。 + +## 题库格式 题库采用 JSON:`id` 为题目标识,`name` 为显示名称,`grid` 为按行排列的 9×9 整数数组,`0` 表示空格,`1`–`9` 为不能修改的初始数字。数组下标从 0 开始。可以读取该文件,也可以将数据转成适合自己项目的结构;不限定存储或界面实现方式。 - -建议保留本目录材料,将 Swift 项目及所需资源放在 `App/` 下,并填写 `project-notes.md`。不要把构建产物或账号凭据放进仓库。设备与运行环境安排之后再统一说明。 - -不要求提交录屏、制作汇报 PPT 或上架应用。面谈以真实运行、代码和交流为准;工具或 AI 生成的结果需要自己检查。 diff --git a/development/project-notes.md b/development/project-notes.md deleted file mode 100644 index 5130075..0000000 --- a/development/project-notes.md +++ /dev/null @@ -1,12 +0,0 @@ -# 作品说明 - -在个人 Fork 中简要填写,供负责人提前看代码和当面交流使用。无需提交到原仓库。 - -- **作品名称与路线**:[路线 A / 路线 B] -- **项目位置与运行方法**:[打开哪个文件,怎样运行;实际使用的工具版本与设备或模拟器] -- **需求与完成情况**:[路线 A 简述核心流程、保存的数据、两种边界情况及设计调整;路线 B 对照 R1–R6 写明已完成和未完成项] -- **已知问题**:[如实写明;尚未验证的功能请注明] -- **运行与检查经历**:[简述自己实际验证了什么,以及遇到的问题或一次调整] -- **AI 使用情况**:[用了哪些工具,具体帮助完成了什么,自己完成了什么;未使用则写“未使用”。仅用于了解工作过程,不单独评分] - -面谈前最好提前告知负责人仓库链接和项目位置,并确认能够访问;不要求另外准备录屏或汇报材料。 diff --git a/development/requirements.md b/development/requirements.md index e27ff66..fae925a 100644 --- a/development/requirements.md +++ b/development/requirements.md @@ -1,28 +1,12 @@ -# 第三题开发需求 +# 数独游戏详细需求 -## 两条路线共用标准 - -1. 用 Swift 做出可交互的 App,界面优先采用 SwiftUI;能从开始到结束完成一条核心流程。 -2. 用户输入或选择会改变应用内容,并获得明确反馈。 -3. 核心用户数据保存在本地,彻底退出并重新启动后仍可恢复。 -4. 处理与本场景相关的异常或边界情况,不能只展示静态页面。 -5. 在[作品说明](project-notes.md)写清运行方法、实际完成情况与已知问题,能当面演示并讲解。 - -不要求登录、服务器、云同步、复杂架构或应用商店上架。额外功能不能代替核心流程。 - -## 路线 A:开发第二题方案 - -选择第二题中一个可完成的小版本。简要说明用户、核心操作、要保存的数据、至少两种边界情况的预期行为,以及与第二题设计不同的地方;可以引用第二题 PDF,不必重写长文。实现上述共同标准,功能应自然服务于自己的用途。 - -## 路线 B:数独游戏 - -### 游戏规则与范围 +## 游戏规则与范围 棋盘由 9 行、9 列组成,分为 9 个 3×3 宫。将空格填入 1–9,使每行、每列、每宫中的数字均不重复。初始数字不可修改。只有全部填满且满足规则才算完成;填满但有冲突不能判胜。 使用提供的[固定题库](sudoku-puzzles.json)即可,不要求随机生成数独或编写求解器。题库中的 0 表示空格,不能作为玩家填写的数字。 -### 必须实现的功能 +## 必须实现的功能 | 编号 | 需求 | 可以检查的结果 | | --- | --- | --- | @@ -35,19 +19,19 @@ 只需保留当前一局,不要求保存每道题的独立进度。重新打开 App 不应自动清空棋盘;完成后重新打开仍应显示已完成的棋盘或完成状态。 -### 边界行为 +## 边界行为 - 没有选中格子或选中初始数字时,输入与擦除不改变棋盘。 - 只允许填写 1–9;采用数字键盘或屏幕按钮均可,其他输入不得造成非法数据或崩溃。 - 检查重复时忽略空格,并排除格子自身;不能把“不重复但尚未证明正确”直接当成完成。 - 首次启动无保存记录时能正常选题或进入默认题;重新开始、换题与继续当前局应有清楚区分。 -### 当面演示参考 +## 功能检查示例 选一题 → 尝试修改初始数字(应无效)→ 填入一个会重复的数字并检查 → 修改或擦除,反馈随之更新 → 退出并重新启动,题目及填写恢复 → 重新开始但取消,进度保留 → 确认重新开始,只保留初始数字 → 换题并重启,恢复新题。 -另外准备展示一次合法完成,并验证“填满但有冲突”不会误判完成。可以提前准备接近完成的真实游戏进度;不要用固定成功页面代替判断逻辑。 +另外检查一次合法完成,并验证“填满但有冲突”不会误判完成。可用接近完成的棋盘进行检查,完成提示应由真实棋盘状态触发。 -### 可选扩展 +## 可选扩展 计时、笔记候选数、撤销、提示、难度分级、随机出题、动画等均不要求。先完成基础需求,再按兴趣扩展。 diff --git a/tasks/03-development.md b/tasks/03-development.md index 666d97f..fdc1ff3 100644 --- a/tasks/03-development.md +++ b/tasks/03-development.md @@ -10,18 +10,20 @@ - **路线 A:开发第二题的设计。** 从自己的方案中选择一个范围可控的版本实现,可以在开发时调整,并简述与原设计的不同。 - **路线 B:开发数独游戏。** 制作一个可以选择题目、填写与擦除数字、检查冲突、判断完成并保存进度的数独 App。提供固定题库,不要求编写出题算法。 -详细开发要求、题库和作品说明模板均放在 [development/](../development/README.md)。两条路线都以完成可实际操作的核心流程为目标,不以堆叠功能或复杂架构为要求。 +路线 B 的[数独详细需求与基础材料](../development/README.md)放在 `development/`,路线 A 按自己的第二题方案开发。 + +两条路线都应完成可实际操作的核心流程:输入或选择能够改变应用内容并获得反馈,核心数据可本地保存并在重启后恢复,能处理相关边界情况。路线 A 简要说明核心功能、保存的数据、至少两种边界情况及设计调整即可。不要求堆叠功能、复杂架构、登录、服务器或上架。 ## 怎样参与与当面考察 -先 Fork 本仓库,在个人 Fork 的 `development/` 中开发并保留题目材料。代码保存在自己的仓库即可,**无需向原仓库提交材料、发起 PR 或登记作品入口**,也不要求录屏。 +先 Fork 本仓库,在个人 Fork 中自行组织项目目录(例如 `App/`),保留原题及 `development/` 数独材料。代码保存在自己的仓库即可,**无需向原仓库提交材料、发起 PR 或登记作品入口**,也不要求录屏。 -有做这道题的同学,最好在面谈前提前告知负责人个人仓库的链接和项目位置,并确认负责人能够访问,方便先看代码。具体联系与面谈安排后续通知。面谈时展示实际运行的作品,交流实现、验证过程和遇到的问题;未完成的部分也可以如实展示。 +有做这道题的同学,最好在面谈前提前告知负责人个人仓库的链接和项目位置,并确认负责人能够访问,方便先看代码。在项目中简要写明打开与运行方法、已完成和未完成的功能及已知问题,方便预先阅读,不要求专门的作品说明模板。具体联系与面谈安排后续通知。面谈时展示实际运行的作品,交流实现、验证过程和遇到的问题;未完成的部分也可以如实展示。 ## AI 与考察重点 可以让 AI 帮助拆分开发任务、生成主要代码、解释、排错和修改。你需要亲自运行和检查结果,并能结合自己的作品说明核心操作怎样实现、数据怎样变化和保存,以及怎样发现和处理问题。现场可能讨论一个小变化及如何实现、验证,实践环节允许继续使用 AI,不要求背诵全部代码或按手写代码比例评判。 -路线 A 中作为第二题提交的设计文档仍遵守[第二题的 AI 使用范围](02-design.md),开发阶段按本题规则使用 AI。作品说明中的 AI 使用情况仅用于了解工作过程,不单独评分。 +路线 A 中作为第二题提交的设计文档仍遵守[第二题的 AI 使用范围](02-design.md),开发阶段按本题规则使用 AI。交流中的 AI 使用情况仅用于了解工作过程,不单独评分。 选做与否不影响前两题成绩。挑战完成标记根据实际作品与当面考察确认,记录为“未选做”“已尝试”“作品完成待面谈确认”或“挑战通过”。