2

我想在组装中做一个游戏(简单的东西,而不是复杂的蛇),我需要两个堆栈。如果你能告诉我如何创建和使用两个堆栈,我会很高兴。只是为了知识,我需要堆栈来检查蛇是否割伤了自己,还需要画蛇的身体。

4

1 回答 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 回答