Assembly 组装中的两个堆栈
我想做一个组装游戏(简单的,而不是复杂的蛇),我需要两个堆栈。如果您能告诉我如何创建和使用两个堆栈,我将非常高兴。Assembly 组装中的两个堆栈,assembly,graphics,x86,stack,Assembly,Graphics,X86,Stack,我想做一个组装游戏(简单的,而不是复杂的蛇),我需要两个堆栈。如果您能告诉我如何创建和使用两个堆栈,我将非常高兴。 只是为了了解情况,我需要这些堆栈来检查蛇是否割伤了自己,还需要绘制蛇的身体。.create snake array。然后转移它们。并添加头部snake[0](头部的x;y)然后清除snake[snake\u size],这是尾部。 如果是地图,你可以在地图[x,y]区域标记蛇身,并绘制整个地图循环,使用地图值投掷它 伪代码: map[x,y]=1 //snake body map
只是为了了解情况,我需要这些堆栈来检查蛇是否割伤了自己,还需要绘制蛇的身体。.create snake array。然后转移它们。并添加头部
snake[0](头部的x;y)
然后清除snake[snake\u size]
,这是尾部。
如果是地图,你可以在地图[x,y]区域标记蛇身,并绘制整个地图循环,使用地图值投掷它
伪代码:
map[x,y]=1 //snake body
map[x,y]=0 //nothing
map[x,y]=2 //fruit
map[x,y]=-1 //fench
下面是移动snake的简单代码:(向右移动snake数组):
(注意:我们的snake数组元素是单词(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\u size]
,并在地图上标记这些位置:
为了看他是否吃水果,你应该用map[head.x,head.y]==2检查头部位置,或者用-1检查芬奇的头部位置
看他是否割伤。你们应该把整个身体打圈,看看头部是否和身体相撞
并进入堆栈:
- 它是具有Filo行为的数组
- 您需要存储索引
- 向该mem[index]添加值,并在按下
时增加索引;mem[index]=value;++index;
- 当弹出减少索引并返回mem[index]
时;--index;返回mem[index]
蛇[0](头部的x;y)
,然后清除蛇[snake\u size]
,这是尾部。
如果是地图,你可以在地图[x,y]区域标记蛇身,并绘制整个地图循环,使用地图值投掷它
伪代码:
map[x,y]=1 //snake body
map[x,y]=0 //nothing
map[x,y]=2 //fruit
map[x,y]=-1 //fench
下面是移动snake的简单代码:(向右移动snake数组):
(注意:我们的snake数组元素是单词(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\u size]
,并在地图上标记这些位置:
为了看他是否吃水果,你应该用map[head.x,head.y]==2检查头部位置,或者用-1检查芬奇的头部位置
看他是否割伤。你们应该把整个身体打圈,看看头部是否和身体相撞
并进入堆栈:
- 它是具有Filo行为的数组
- 您需要存储索引
- 向该mem[index]添加值,并在按下
时增加索引;mem[index]=value;++index;
- 当弹出减少索引并返回mem[index]
时;--index;返回mem[index]