.创建蛇数组。并转移它们。并添加 head snake[0] (x;y ofhead) 然后清除 snake[snake_size] 这是 tail 。
如果是地图,您可以在该地图[x,y]区域上标记蛇体并绘制整个地图循环使用地图值抛出它
伪代码:
map[x,y]=1 //snake body
map[x,y]=0 //nothing
map[x,y]=2 //fruit
map[x,y]=-1 //fench
这里是移动蛇的简单代码:(将蛇数组向右移动):
(注意:我们的蛇数组元素 Word(2bytes) 。所以写snake[x] 实际上应该指向snake[x*2] 地址;
mov cx, snake_size
; di=snake_size*2
mov di, snake_size
add di,di ;// di=di*2
move_array:
; snake[x]=snake[x-1];
mov ax, snake[di-2] ;
mov snake[di], ax
; --x (x=x-1)
sub di, 2
loop move_array
//c style loop code will be
for(int i=snake_size;i>0;i--){
snake[i]=snake[i-1];
}
在这个动作之后添加新的头部位置snake[0] 并清除tail=snake[snake_size] 并在地图上标记它们:
要查看他是否吃水果,您应该使用 map[head.x,head.y] ==2 检查头部位置,或者使用 -1 检查 fench
看他有没有剪。你应该循环抛出整个身体,看看头部是否与身体碰撞
并入栈:
- 它是具有 Filo 行为的数组。
- 您需要存储索引。
- 在推送
;mem[index]=value;++index;时为该mem[index]添加值并增加索引
- 并且在弹出时减少索引并返回 mem[index]
;--index;return mem[index]