讨论区 老师答疑区 主题详情
201725050221龙志涛
老师参与 能不能再说一下那个双向链表的数据结构 pre是记录蛇的前一个位置 next是下一个的位置 然后那六个字节的分布是 pre body next 吗
课时90

所有回复(5)

可以看我的代码的修改内存的顺序 

2019-8-8

看图 思考  可以参考我的代码

2019-8-8

pre  前一个节点内存地址


body  你的body 的解释是错误的...      中间这个是 屏幕位置

next  后一个节点内存地址



第一次内存分布是这样的


pre   屏幕位置                  next[这部分没有用到]

0      160*10+40*2          6                头                            0    内存偏移位置

0      160*10+40*2 -2     12               身体                        6    内存偏移位置   

6      160*10+40*2 - 4    18              尾巴                         12  内存偏移位置



你移动的时候自己手动算一下


我的代码表示的是 什么意思   next  其实没有用到......


允许移动的时候  


我们先把  SNAKE_STERN 的内容 到   当前的 头内存pre  这个位置  为什么?  因为 我们开始的时候是


内存  中的分布是  

头  身体 尾巴


经过一次移动后

身体 尾巴 头


头内存中的 pre  要变成尾巴的内存位置   尾巴会变成新的头  而 原来的头 会变成身体   而原来的身体 要变成 尾巴...


pre                                       屏幕位置                            next

12[修改=SANKE_STERN]     160*10+40*2                      6                头

0                                          160*10+40*2 -2                 12               身体

0[修改]                                   新的头的位置[修改]           0[修改=SNAKE_HEAD 其实这里无所谓 我根本没用到...]              尾巴




然后我们第一个拿到的是 尾巴的内存 位置  用 SNAKE_STERN 记录   然后修改后   它里面的内容是 新的头部


观察内存!

pre   屏幕位置                  next[这部分没有用到]

0(1)      160*10+40*2          6                头 -> 变成身体

0      160*10+40*2 -2     12               身体 ->变成尾巴

6(4)     160*10+40*2 - 4(2)    18(3)              尾巴  -> 新的头 


修改的顺序 


尾巴内存修改情况

push  pre    保存 前一个位置 6           因为6 这个内存位置 也就是当前的身体  会变成   新的 尾巴 


然后呢?得到屏幕位置  删掉 尾巴的颜色   在新的移动的屏幕位置 放上颜色               

然后呢?


push  SNAKE_HEAD

pop ds:[bx+4]  这个是修改 next   虽然没用...


尾巴变成新的脑袋

push SANKE_STERN      

pop SANKE_HEAD


身体变成 新的尾巴 

pop SNAKE_STERN    -> 6



每次都这样循环的做修改

每次用头内存的 屏幕位置进行判断是否允许移动


头->身体

身体->尾巴

尾巴->头


循环


别急  先看看     我回复的也比较仓促


2019-6-20

开始的数据 

SANKE_HEAD  = 0

SNAKE_STERN = 12


然后再通过 pre 屏幕位置 next  这3块内存   主要是 pre  这个内存地址中的内容   和 上面 的 SNAKE_HEAD 和 SNAKE_STERN 进行修改

2019-6-20

你只要 想 这个逻辑 怎么用指令 表示出来即可


我的目的就是  将允许移动的 点  用尾巴代替 成为新的头 而头成为身体      原来的身体 成为 新的尾巴.....   



2019-6-20

回复

发布

发表观点要登录哦!

最近活动:2019-8-8
创建时间:2019-6-17
浏览次数:146
关注人数:0

使用协议与隐私政策

感谢您使用网易云课堂!

为了更好地保障您的个人权益,请认真阅读《使用协议》《隐私政策》《服务条款》的全部内容,同意并接受全部条款后开始使用我们的产品和服务。若不同意,将无法使用我们的产品和服务。

同意
手机课堂
下载App
返回顶部