【发布时间】:2021-01-08 08:40:49
【问题描述】:
我能够用汇编语言和星星创建一个游戏,当它撞到墙上时,它就像蛇游戏一样结束,但我想给它添加另一件事,当星星撞到自己时游戏结束。我有一个解决问题的部分,我希望你能帮忙。
gotoxy macro x,y
mov dl,x
mov dh,y
mov bh,0
mov ah,2
int 10h
endm
printchar macro n
mov dl,n
mov ah,2
int 21h
endm
printstring macro n
lea dx,n
mov ah,9
int 21h
endm
.model small
.stack 64
.data
x db 40
y db 12
deltax db 0
deltay db -1
msg1 DB "GAME OVER !!!$"
.code
main:
mov ax,@data
mov ds,ax
gotoxy x,y
printchar '*'
mov ah,7
int 21h
l1:
gotoxy x,y
mov al,x
add al,deltax
mov x,al
mov al,y
add al,deltay
mov y,al
gotoxy x,y
printchar '*'
mov ah,0bh
int 21h
cmp al,0
je l2
mov ah,0
int 16h
cmp al,'w'
je L_W
cmp al,'s'
je L_S
cmp al,'a'
je L_A
cmp al,'d'
je l_D
jmp l2
L_W:
mov deltax,0
mov deltay,-1
jmp L2
L_S:
mov deltax,0
mov deltay,1
jmp L2
L_A:
mov deltax,-1
mov deltay,0
jmp L2
L_D:
mov deltax,1
mov deltay,0
L2:
cmp y,0
je LEND
cmp y,23
je LEND
cmp x,0
je LEND
cmp x,79
je LEND
jmp l1
LEND:
gotoxy 35,12
printstring msg1
mov ah,7
int 21h
mov ah,4ch
int 21h
end main
【问题讨论】:
-
您可以使用自己的数组跟踪游戏状态,或者在写入角色之前读取视频内存以查看该点是否已绘制。 (例如 xchg 而不是 mov store,使用直接 VGA 文本访问而不是 DOS 或 BIOS 字符输出函数)
-
我想在我编写的相同代码中进行一些更改,以将我想要的项目添加到输出中
-
是的,很明显。但是您需要一个全新的数据结构,或者对 I/O 进行更改,但仍然保留(并构建)在哪里绘制什么的逻辑。实际上可能有一个 BIOS 功能来查询当前屏幕位置的字符;如果是这样,您可以使用它。
-
你能帮我更多吗?
-
我认为这是家庭作业,所以我绝对不会为您编写它(尽管可能没有人会这样做;功能缺失太大)。如果您对如何做某事有具体问题,请提出问题,但 Stack Overflow 不是辅导服务,而且 cmets 不适合来回辅导课程。 Beginner's snake game using PyGame(在 Python 中)是您可以用来跟踪蛇状态的数据结构的一个示例,但请参阅答案以了解更简单的方法。
标签: assembly dos x86-16 emu8086