Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_parser
提交
f40fac90
S
skill_tree_parser
项目概览
CSDN 技术社区
/
skill_tree_parser
通知
5
Star
4
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_parser
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
f40fac90
编写于
3月 21, 2022
作者:
F
feilong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加 init 方法
上级
2f84db1a
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
183 addition
and
0 deletion
+183
-0
src/skill_tree/tree.py
src/skill_tree/tree.py
+183
-0
未找到文件。
src/skill_tree/tree.py
浏览文件 @
f40fac90
...
@@ -471,3 +471,186 @@ class TreeWalker:
...
@@ -471,3 +471,186 @@ class TreeWalker:
if
not
config
.
get
(
"keywords"
,
[]):
if
not
config
.
get
(
"keywords"
,
[]):
self
.
logger
.
error
(
f
"节点 [
{
full_path
}
] 的关键字为空,请修改配置文件写入关键字"
)
self
.
logger
.
error
(
f
"节点 [
{
full_path
}
] 的关键字为空,请修改配置文件写入关键字"
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
def
init
(
self
):
data_root
=
'data'
os
.
makedirs
(
data_root
,
exist_ok
=
True
)
node_dirs
=
[
os
.
path
.
join
(
data_root
,
f
'1.
{
self
.
title
}
初阶'
),
os
.
path
.
join
(
data_root
,
f
'2.
{
self
.
title
}
中阶'
),
os
.
path
.
join
(
data_root
,
f
'3.
{
self
.
title
}
高阶'
),
os
.
path
.
join
(
data_root
,
f
'1.
{
self
.
title
}
初阶'
,
f
"1.
{
self
.
title
}
入门"
,
f
"1.HelloWorld"
),
]
for
node_dir
in
node_dirs
:
os
.
makedirs
(
node_dir
,
exist_ok
=
True
)
md
=
[]
emit_head
(
md
)
emit_answer
(
md
,
None
)
emit_options
(
md
,
None
)
simple_list_md_dump
(
os
.
path
.
join
(
node_dirs
[
len
(
node_dirs
)
-
1
],
'helloworld.md'
),
md
)
self
.
walk
()
self
.
init_readme
()
with
open
(
'.gitignore'
,
'w'
,
encoding
=
'utf-8'
)
as
f
:
f
.
write
(
'
\n
'
.
join
([
".vscode"
,
".idea"
,
".DS_Store"
,
"__pycache__"
,
"*.pyc"
,
"*.zip"
,
"*.out"
,
"bin/"
,
"debug/"
,
"release/"
,
]))
with
open
(
'requirements.txt'
,
'w'
,
encoding
=
'utf-8'
)
as
f
:
f
.
write
(
'
\n
'
.
join
([
".pre_commit"
,
"skill-tree-parser"
,
]))
def
init_readme
(
self
):
md
=
[
f
'# skill_tree_
{
self
.
name
}
'
,
f
''
,
f
'`
{
self
.
title
}
技能树`是[技能森林](https://gitcode.net/csdn/skill_tree)的一部分。'
,
f
''
,
f
'## 编辑环境初始化'
,
f
''
,
f
'```'
,
f
'pip install -r requirements.txt'
,
f
'```'
,
f
''
,
f
'## 目录结构说明'
,
f
'技能树编辑仓库的 data 目录是主要的编辑目录,目录的结构是固定的'
,
f
''
,
f
'* 技能树`骨架文件`:'
,
f
' * 位置:`data/tree.json`'
,
f
' * 说明:该文件是执行 `python main.py` 生成的,请勿人工编辑'
,
f
'* 技能树`根节点`配置文件:'
,
f
' * 位置:`data/config.json`'
,
f
' * 说明:可编辑配置关键词等字段,其中 `node_id` 字段是生成的,请勿编辑'
,
f
'* 技能树`难度节点`:'
,
f
' * 位置:`data/xxx`,例如: `data/1.
{
self
.
title
}
初阶`'
,
f
' * 说明:'
,
f
' * 每个技能树有 3 个等级,目录前的序号是必要的,用来保持文件夹目录的顺序'
,
f
' * 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑'
,
f
'* 技能树`章节点`:'
,
f
' * 位置:`data/xxx/xxx`,例如:`data/1.
{
self
.
title
}
初阶/1.
{
self
.
title
}
简介`'
,
f
' * 说明:'
,
f
' * 每个技能树的每个难度等级有 n 个章节,目录前的序号是必要的,用来保持文件夹目录的顺序'
,
f
' * 每个目录下有一个 `config.json` 可配置关键词信息,其中 `node_id` 字段是生成的,请勿编辑'
,
f
'* 技能树`知识节点`:'
,
f
' * 位置:`data/xxx/xxx`,例如:`data/1.
{
self
.
title
}
初阶/1.
{
self
.
title
}
简介`'
,
f
' * 说明:'
,
f
' * 每个技能树的每章有 n 个知识节点,目录前的序号是必要的,用来保持文件夹目录的顺序'
,
f
' * 每个目录下有一个 `config.json`'
,
f
' * 其中 `node_id` 字段是生成的,请勿编辑'
,
f
' * 其中 `keywords` 可配置关键字字段'
,
f
' * 其中 `children` 可配置该`知识节点`下的子树结构信息,参考后面描述'
,
f
' * 其中 `export` 可配置该`知识节点`下的导出习题信息,参考后面描述'
,
f
''
,
f
'## `知识节点` 子树信息结构'
,
f
''
,
f
'例如 `data/1.
{
self
.
title
}
初阶/1.
{
self
.
title
}
简介/1.HelloWorld/config.json` 里配置对该知识节点子树信息结构,这个配置是可选的:'
,
f
'```json'
,
f
'{{'
,
f
' // ...'
,
f
''
,
f
' "children": ['
,
f
' {{'
,
f
' "XX开发入门": {{'
,
f
' "keywords": ['
,
f
' "XX开发",'
,
f
' ],'
,
f
' "children": [],'
,
f
' "keywords_must": ['
,
f
' "XX"'
,
f
' ],'
,
f
' "keywords_forbid": []'
,
f
' }}'
,
f
' }}'
,
f
' ],'
,
f
'}}'
,
f
'```'
,
f
''
,
f
'## `知识节点` 的导出习题编辑'
,
f
''
,
f
'例如 `data/1.
{
self
.
title
}
初阶/1.
{
self
.
title
}
简介/1.HelloWorld/config.json` 里配置对该知识节点导出的习题'
,
f
''
,
f
'```json'
,
f
'{{'
,
f
' // ...'
,
f
' "export": ['
,
f
' "helloworld.json"'
,
f
' ]'
,
f
'}}'
,
f
'```'
,
f
''
,
f
'helloworld.json 的格式如下:'
,
f
'```bash'
,
f
'{{'
,
f
' "type": "code_options",'
,
f
' "author": "xxx",'
,
f
' "source": "helloworld.md",'
,
f
' "notebook_enable": false,'
,
f
' "exercise_id": "xxx"'
,
f
'}}'
,
f
'```'
,
f
''
,
f
'其中 '
,
f
'* "type": "code_options" 表示是一个选择题'
,
f
'* "author" 可以放作者的 CSDN id,'
,
f
'* "source" 指向了习题 MarkDown文件'
,
f
'* "notebook_enable" 目前都是false'
,
f
'* "exercise_id" 是工具生成的,不填'
,
f
''
,
f
''
,
f
'习题格式模版如下:'
,
f
''
,
f
'````mardown'
,
f
'# {{标题}}'
,
f
''
,
f
'{{习题描述}}'
,
f
''
,
f
'以下关于上述游戏代码说法[正确/错误]的是?'
,
f
''
,
f
'## 答案'
,
f
''
,
f
'{{目标选项}}'
,
f
''
,
f
'## 选项'
,
f
''
,
f
'### A'
,
f
''
,
f
'{{混淆选项1}}'
,
f
''
,
f
'### B'
,
f
''
,
f
'{{混淆选项2}}'
,
f
''
,
f
'### C'
,
f
''
,
f
'{{混淆选项3}}'
,
f
''
,
f
'````'
,
f
''
,
f
'## 技能树合成'
,
f
''
,
f
'在根目录下执行 `python main.py` 会合成技能树文件,合成的技能树文件: `data/tree.json`'
,
f
'* 合成过程中,会自动检查每个目录下 `config.json` 里的 `node_id` 是否存在,不存在则生成'
,
f
'* 合成过程中,会自动检查每个知识点目录下 `config.json` 里的 `export` 里导出的习题配置,检查是否存在`exercise_id` 字段,如果不存在则生成'
,
f
'* 在 节 目录下根据需要,可以添加一些子目录用来测试代码。'
,
f
'* 开始游戏入门技能树构建之旅,GoodLuck! '
,
]
simple_list_md_dump
(
'README.md'
,
md
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录