我想要在装配中做一个游戏(简单的事情,而不是复杂的蛇),我需要两个堆栈。如果你能告诉我如何创建和使用两个堆栈,我将很高兴。 只是为了知识,我需要堆栈来检查蛇是否切割自己,还要画蛇的身体。
答案 0 :(得分:3)
。创建蛇阵。转移他们。然后添加头部snake[0] (x;y ofhead)
,然后清除尾部的snake[snake_size]
。
如果它与地图一起你可以在地图[x,y]区域上标记蛇体并绘制整个地图循环使用地图值抛出它
伪代码:
map[x,y]=1 //snake body
map[x,y]=0 //nothing
map[x,y]=2 //fruit
map[x,y]=-1 //fench
在这里移动蛇的是简单的代码:(将蛇形阵列向右移动):
(注意:我们的蛇数组元素字(2字节)。所以写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]
并在地图上标记这些位置:
看看他是否吃水果你应该用地图[head.x,head.y] == 2检查头部位置,或者用你检查的fench检查-1
看他是否切。你应该循环扔掉整个身体,看看是否与身体发生碰撞
即将筹码:
;mem[index]=value;++index;
;--index;return mem[index]