我的乒乓项目有一个问题。我尝试当球击中红色球棒时,它会随机反弹到另一边,但由于某种原因,它无法识别红色。在int = 10h中使用AH = 0Dh。检查的部分在hitcheck进程中。
下面是代码。与我的问题相关。
hitcheck PROC
;------batt and com check-------
MOV BH, 2H
MOV DX, ballx
MOV CX, bally
SUB CX, 2
MOV AH, 0Dh
INT 10H
CMP AL, 1
JE hitmovement
CMP AL, 3
JE comhitmovement
MOV BH, 2H
MOV DX, ballx
MOV CX, bally
ADD CX, 2
MOV AH, 0Dh
INT 10H
CMP AL, 1
JE hitmovement
CMP AL, 3
JE comhitmovement
MOV BH, 2H
MOV DX, ballx
MOV CX, bally
SUB DX, 2
MOV AH, 0Dh
INT 10H
CMP AL, 1
JE hitmovement
CMP AL, 3
JE comhitmovement
MOV BH, 2H
MOV DX, ballx
MOV CX, bally
ADD DX, 2
MOV AH, 0Dh
INT 10H
CMP AL, 1
JE hitmovement
CMP AL, 3
JE comhitmovement
MOV AL, 13H ;changes the num of pixels to 640X480 with 16 colors
此处注释与视频模式编号不匹配。模式13h的分辨率为320x200, 256色。
mov base, 0 printleftbase: printpixel 0, base, 2, 2 INC base CMP base, 199 JNE printleftbase
mov base, 0 printrightbase: printpixel 319, base, 2, 2 INC base CMP base, 199 JNE printrightbase
如果前面代码的目的是绘制与屏幕高度相等的垂直线,那么您需要与200而不是199进行比较。
;------batt and com check------- MOV BH, 2H MOV DX, ballx MOV CX, bally SUB CX, 2 MOV AH, 0Dh INT 10H
在你所有的ReadPixel调用中,你错误地把X轴放在DX
中,Y轴放在CX
中。这是反过来的。你的printpixel宏做得很好。
你也打印像素batt和com在第1页,但你检查碰撞在第2页!
问题:您的视频适配器是否支持模式13h下的多个页面?