linux编写弹球游戏,汇编写的DOS弹球游戏
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
;左移右移End鍵結(jié)束游戲
;編譯環(huán)境?TASM3.0?編譯成.com文件比較好!
sleep?macro?timeb;延時宏指令
push?cx
mov?cx,?timeb
call?waits
pop??cx
endm
cls?macro?;清屏宏指令
push?ax
push?bx
push?cx
push?dx
mov?ah,?06H
mov?al,?0
mov?ch,?0
mov?cl,??0
mov?dh,?30h
mov?dl,??5fh
mov?bh,?0fh
int?10H
pop?dx
pop?cx
pop?bx
pop?ax
endm
drawRect?macro?x,?y,?w,?h,?att;繪圖宏指令
push?ax
push?bx
push?cx
push?dx
mov?ah,?06h
mov?ch,??y
mov?cl,???x
Call?SafeXY;保證坐標(biāo)安全
mov?dl,??cl
mov?dh,?ch
add??dl,???w
add??dh,??h
mov?al,???dh
sub??al,???ch
mov?bh,?att
int?10H
pop?dx
pop?cx
pop?bx
pop?ax
endm;==========主程序開始===========
Code?segment?USE16
assume?cs:code,?ds:code
org?100H
start:
mov?dl,??1;dl,dh寄存器作為全局坐標(biāo)增量
mov?dh,?1
for1:?cls;所有操作全部在for1?循環(huán)里
push?cx;雙For繪制磚塊
mov?cx,??4
mov?byte?ptr[recy],??0
mov?si,?offset?rec_array
rec1:
push?cx
mov?cx,?12
mov?byte?ptr[recx],?0
rec2:
cmp?byte?ptr[si],?0;判斷是否已經(jīng)被銷毀
JZ?go4;已經(jīng)不存在了
drawRectrecx,?recy,?6,?2,?clr1;還存在
mov?bh,?byte?ptr[ypos];判斷小球的臨時坐標(biāo)
mov?bl,??byte?ptr[xpos]
cmp?bh,??recy;
JG?go4;是否進(jìn)入磚塊區(qū)
push?ax
mov?ah,?0
mov?al,??recx
cmp?bl,??al
JL?te
add??al,??6
cmp?bl,?al
JG?te;是否撞上磚塊
mov??byte?ptr[si],??0;將此坐標(biāo)置為0
NOT?dh;小球要反彈
te:?pop???ax
go4:
add?byte??ptr[recx],??6
add?byte??ptr[clr1],??0fh
cmp?byte?ptr[clr1],??7fh
JL?go3
mov?byte?ptr[clr1],??1fh
go3:?inc?si
loop?rec2
pop???cx
add??byte?ptr[recy],??3
loop?rec1
pop???cx
IN?AL,?60H;讀取鍵盤操作左右
CMP?AL,?79
jne?ifL
jmp?Exit0
ifL:?cmp?al,?75;操作擋板左右移動
jne?ifR
cmp?byte?ptr[ballx],?6
JL?go2
sub?byte?ptr[ballx],?6
ifR:?cmp?al,?77
jne?go2
cmp?byte?ptr[ballx],?64
JG?go2
add?byte?ptr[ballx],?6
go2:?;移動小球
add?byte?ptr?[xpos],?dl
add?byte?ptr?[ypos],?dh
drawRect???xpos,??ypos,??1,?1,??2eh
drawRect???ballx,??bally,??12,1,?3eh
sleep??60
push?bx
mov?bl,??byte?ptr[xpos]
mov?bh,?byte?ptr[ypos]
b1:?cmp?bl,?72;撞上右邊界?
JL?b2
NOT?dl
b2:?cmp?bl,???1;撞上左邊界?
JG?b3
add?byte?ptr[xpos],?4
NOT?dl
b3:?cmp?bh,??46;掉到下邊界,程序結(jié)束!
JL?b4
jmp?Exit0
b4:?cmp?bh,??1;撞上頂?
JG?b5
add?byte?ptr[ypos],?2
NOT?dh
b5:?push?ax;判斷小球是否撞到擋板
mov?ah,?0
mov?al,??bally
sub??al,??12
cmp?bh,?al
JL?be
mov?al,??ballx
cmp?bl,??al
JL?be
add??al,???6
cmp?bl,??al
JG?be
NOT?dh
be:???pop?ax
go1:?pop???bx
jmp?for1;返回for1
Exit0:?mov?ah,?4ch
int?21h
;===========延時子程序===========
waits?proc?near
w1:?Wait
push?cx
mov?cx,?0ffh
w2:?Wait
push?cx
mov?cx,?0fffh
w3:?Wait
Loop?w3
pop???cx
Loop?w2
pop???cx
Loop?w1
RET
waits?endp
SafeXY?proc?near;保證坐標(biāo)安全子程序
d0:?cmp?ch,?1
jg?d1
mov?ch,?1
d1:?cmp?cl,??1
jg?d2
mov?cl,?1
d2:?cmp?cl,?64
jl?d3
mov?cl,?64
d3:?ret
SafeXY?endp
;============數(shù)據(jù)段=============
rec_arraydb?4*12?dup(1)
recxdb2
recydb0
clr1db1fh
xpos?db12
ypos?db7
xddb2
yddb1
ballxdb32
ballydb44
code?ends
end?start
總結(jié)
以上是生活随笔為你收集整理的linux编写弹球游戏,汇编写的DOS弹球游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何应对阿里、美团、Oracle等大厂的
- 下一篇: linux 其他常用命令