导图社区 sudoku
这是一篇关于sudoku的思维导图,主要内容包括:command,display_symbol.h,utility实用工具,CBlock,common文件(普遍的),input输入操作管理,I18n文字管理,main,Scene数独场景类。
社区模板帮助中心,点此进入>>
电商部人员工作结构
电费水费思维导图
D服务费结算
组织架构-单商户商城webAPP 思维导图。
博弈的理解与运用
批判性思维导图
第三章 外国行政组织理论
培训计划思维导图
车队管理
《我不是药神》电影影评导图
sudoku
Scene数独场景类
成员函数
setMode
给那个结构体指针赋值
generate初始化
使用map_pattern先固定数独位置
使用char数组生成对应字母到数字的映射
然后填入map[81]里面
init
被构造函数调用
重置map数组
给col_block和row_block数组推入元素
给xy_block赋值,初始化九个九宫格
eraseRandimGrids
随机选择count个格子清空
定义一个81大小的vector
循环count次(删除次数)
弄出随机数0~v.size()
把对应map置空后删除对应v的value
show
执行cls清除终端
执行一次传参为-1的printUnderline
循环9次,交替打印.print,然后printUderline
play
调用show
while循环从终端获取字符
如果是数字
用this指针创建一个控制器
然后执行execute操作
如果成功了就把控制器push进command数组
再次调用show
如果是keyMap->ESC
从终端获取y或n
while询问是否保存直到保存成功或者不保存
exit(0)终止程序
如果是keyMap->U
如果command的vector为空
输出不可撤回
获取数组尾部的控制器实例
执行undo
弹出尾部的控制器
执行show
如果是上下左右
对当前cur_point当前点的xy进行更改
如果是keyMap->ENTER
调用isComplete查看是否完成
setPointValue
本质上调用setValue
getCurPoint
isComplete
检查全部map是否都有值
检查三种行政单位的isValid都是true
save
load
setCurValue
第二参是控制器传进来的pre值引用,在内部更新为当前值
然后更新当前值
setValue
给_map对应的位置赋值
传入point获得x,y坐标,然后传入value
printUnderline
意思是打印一行下划线
+---是一组,当扫描到当前列且也是传参的行时变成+-^-
然后一行结束的时候再添加一个+和换行
传参为打印第几行
成员变量
KeyMap结构体指针,用于映射按键
point_t,内部是坐标,表示当前位置
默认(0,0)
CBlock column_block[9],行政区域数组
CBlock row_block[9]
CBlock一个相当于一个一整排,故为9排
CBlock xy_block[3][3]
相当于九个九宫格,一个九宫格是一个行政单位
point_value_t 的map[81]的数组
具体值
CCommand的vector数组
用于执行和保存pre值
max_column
默认为9
main
初始化环境(如果是windows)
创建数独场景类scene
如果是argc是1
设置语言
inputdifficulty设置难度
生成场景
调用erase挖出空格(由inputdifficulty获取要挖空数目)
调用inputKeyMode
调用setMode设置操作方式
执行play
如果是3
调用scene.load载入文件
调用setMode设置难度
如果其他
打印帮助文档
I18n文字管理
全局有个语言枚举
公有
Key枚举(对应代号和int的枚举)
Dict字典:map<key,stirng>
和Key配合在全局生成中英字典
setlangage
把私有字典指针指向全局其中一个字典
Instance单例函数
获取单例
get
返回对应string
input输入操作管理
inputDifficulty
从控制台获取难度的string
调用stoi变成int再转成Difficulty枚举
根据难度枚举返回对应需要挖空数目
inputKeyMode
从控制台获取string模式
string转成int再转成Mode枚举
返回Mode枚举
inputLanguage
输入语言string
同样强转成Language枚举
调用I18n::Instance().SetLanguage(l);
主题
command
相当于一个遥控器,且用于保存pre值
execute
调用getCurPoint获取当前point,给stPoint赋值
调用setCurValue设置当前值和先前值
undo
调用setPointValue,传入坐标和先前值
各种get/set数据成员
数据成员
CScene场景类指针
point_t
每个控制器都有一个自己控制的点的坐标
preValue
默认先前值是0
curValue
common文件(普遍的)
Difficulty难度枚举
KeyMode模式枚举
Keymap映射按键枚举
派生Normal
派生vim
point_t类
int X,Y坐标
state状态枚举
point_value_t格子类
int的value
CPointSort比较坐标类
operator(point_t,point_t)
CBlock
表示一整排或者一整列,或者一个九宫格
成员数据
count计数
point_value_t指针数组[9]
即一个行政区域内有9个格子
isValid是否可用
isFull是否满了
print
打印一个PIPE
循环_count次
如果value是0,则打印| |
如果不是0
如果是正常情况,打印| ? |
如果是空值则也是打印| |
push_back
传参是point_value_t指针(格子状态和value)
把传入的东西count++给内部的numbers数组
utility实用工具
cls
执行系统调用clear清除终端
随机数
randon两个
AverageRandom
massage输出消息
二参是是否换行
getch
用于读取一个字符但不回显
display_symbol.h
PIPE竖线
LINE横线
CORNER边角
ARROW箭头