我想在组装中做一个游戏(简单的东西,而不是复杂的蛇),我需要两个堆栈。如果你能告诉我如何创建和使用两个堆栈,我会很高兴。只是为了知识,我需要堆栈来检查蛇是否割伤了自己,还需要画蛇的身体。
问问题
259 次
1 回答
4
.创建蛇数组。并转移它们。并添加 headsnake[0] (x;y ofhead)
然后清除snake[snake_size]
哪个是 tail 。如果是地图,您可以在该 maps[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] 添加值并在推送时增加索引
;mem[index]=value;++index;
- 并且在弹出时减少索引并返回 mem[index]
;--index;return mem[index]
于 2013-05-12T14:35:02.893 回答