アセンブリでスネーク ゲームを作成しており、スネークの体の座標を (衝突目的で) 1 次元配列に格納しています。x 座標と y 座標を 1 バイトで格納しています。ヘビが動くたびに頭の座標を保存しています。これが私のコードです:
;(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 という名前の 1 次元配列を作成しました。
TRAIL DB 2000 dup (1)
私の問題は、体に衝突していないのにヘビが死ぬことがあるということです。問題は、ROW を AL (AL よりも大きい場合もあります) に掛けてから、COL を追加すると間違った答えが得られることだと思います。ROW と COL を dw に変更できないので、その計算を機能させるしかありません。助けてください。