我正在组装一个蛇游戏,并将蛇体的坐标(用于碰撞目的)存储在一维数组中。我将 x 和 y 坐标存储在一个字节中。每次移动时,我都会存储蛇头的坐标。这是我的代码:
;(ROW * WIDTH) + COL
MOV AL, 80 ; 80 IS THE WIDTH
MUL ROW
ADD AL, COL
MOV SI, AX
CMP TRAIL[SI], 0
JE @GAME_OVER
我制作了一个名为 TRAIL 的一维数组来保存数据。
TRAIL DB 2000 dup (1)
我的问题是,有时,即使没有与身体碰撞,蛇也会死亡。我认为问题在于将 ROW 乘以 AL(有时大于 AL)然后添加 COL 会给出错误的答案。我无法将 ROW 和 COL 更改为 dw,所以我唯一的选择是让该计算工作。请帮忙。