Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

画图模式构想 #1

Open
Miigon opened this issue Jul 23, 2016 · 5 comments
Open

画图模式构想 #1

Miigon opened this issue Jul 23, 2016 · 5 comments

Comments

@Miigon
Copy link
Member

Miigon commented Jul 23, 2016

画图模式构想

说明

根据“计算需要其所依赖的值都就绪后才可进行”的原则
为每个指令赋予一个层级,决定绘图时的水平位置(电路从图左往右联通)。
每个指令对某个先前存在的值的使用称为依赖。
赋予层级的方法为:

  • 输入值(INA,INB,etc)固定处于第0层
  • 指令的层级为其所依赖的所有的值各自所在层级的最大值+1

实例

假设指令

INA                --输入皆为0层
INB

01 NOR1(INA,INB)   --依赖于INA[0],INB[0],最大为0,所以本指令层级为NOR1[0+1=1]
02 AND1(NOR1,INA)  --依赖于NOR1[1],INA[0],最大为1,本指令为AND1[1+1=2]
03 OR1(AND1,NOR1)  --依赖于AND1[2],NOR1[1],最大为2,本指令为OR1[2+1=3]
04 AND2(NOR1,INB)  --依赖于NOR1[1],INB[0],最大为1,本指令为AND2[1+1=2],与AND1同级
05 OR2(INA,INB)    --依赖于INA[0],INB[0],本指令OR2[1],与NOR1同级
06 AND3(OR2,OR1)   --依赖于OR2[1],OR1[3],本指令为AND3[4],为末端
07 OUT(AND3)

整理结果

层状态

  • 第0层
INA
INB
  • 第1层
01 NOR1(INA,INB)
05 OR2(INA,INB)
  • 第2层
02 AND1(NOR1,INA)
04 AND2(NOR1,INB)
  • 第3层
03 OR1(AND1,NOR1)
  • 第4层(末端)
06 AND3(OR2,OR1)

电路图

大概就是这种感觉了(飞线图,2333)
untitled 2
然后用canvas把每个层都绘出,连上线,就好了

@harrynull
Copy link
Member

画图如果很麻烦,可以考虑预先设计好各个模块的位置,然后json导入(我原来就是这么预想的)
动态画图难度很高

@Miigon
Copy link
Member Author

Miigon commented Jul 24, 2016

存储当然是数据格式导入,但是让玩家看一条一条的指令未免太难玩
动态画图还是必须的,这种数据量,让客户端画也没太大问题

@harrynull
Copy link
Member

@Miigon 我的意思是人工录入坐标(或者是相对坐标)

@Miigon
Copy link
Member Author

Miigon commented Jul 24, 2016

内容人工填入与否与画图无关

@harrynull
Copy link
Member

@Miigon 是坐标,不是内容

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants