没有合适的资源?快使用搜索试试~ 我知道了~
贪吃蛇汇编版源代码,可以实现暂停,也有不同的等级控制小蛇的速度
资源推荐
资源详情
资源评论
assume cs:Code,ds:Data,ss:Stack
Data segment
COLORW equ 7h ;颜色常量设置为白色 00000111b
COLORB equ 0h ;黑色 00000000b
COLORR equ 4h ;红色 00000100b
COLORG equ 2h ;绿色 00000010b
WCOLOR equ 71h ;边框颜色属性,白底蓝字 01110001b
szOver db '**game over!=.=**',0
szLevel db 'level: 1',0
szScore db 'scores: 0',0
szOwner db 'ChildlikeGan',0
szVersion db 'Version2.0',0
szName db 'SnakeGame',0
szDate db '2012.5.17',0
szArray0 db 0DH,0AH,'----------------------------',0DH,0AH,'$'
szArray1 db 0DH,0AH,'Control key:',0DH,0AH,'$'
szArray2 db 0DH,0AH,'Left: Arrow on the left or ‘a’','$'
szArray3 db 0DH,0AH,'Right: Arrow on the right or ‘d’' ,'$'
szArray4 db 0DH,0AH,'Up: Arrow on the up or ‘w’','$'
szArray5 db 0DH,0AH,'Down: Arrow on the down or ‘s’','$'
szArray6 db 0DH,0AH,'Begin the game or not?',0DH,0AH,'$'
szArray7 db 0DH,0AH,'y:begin,n:exit',0DH,0AH,'$'
szArray8 db 0DH,0AH,'input error!',0DH,0AH,'please select y or n!',0DH,0AH,'$'
szArray9 db 0DH,0AH,'Begin the game again or not?',0DH,0AH,'$'
szArraya db 0DH,0AH,'Stop: F1','$'
szArrayb db 0DH,0AH,'Continue: F2','$'
szArrayc db 0DH,0AH,'Exit: F10',0DH,0AH,'$'
szArrayd db 0DH,0AH,'Any key to continue!',0DH,0AH,'$'
bColor db ? ;存放当前蛇的颜色属性
bDirection db ? ;存放当前蛇的前进方向
bFoodLocation db ?,? ;存放当前食物行列数
bSnakeLen db ? ;存放蛇节数
bLevel dw 0 ;存放游戏级数
bScore dw 0 ;存放游戏得分
bScoreBuf db 8 dup (?) ;存放得分字符串缓冲区
bLevelBuf db 8 dup (?) ;存放级数字符串缓冲区
bSnake db 160 dup (?) ;蛇的每一节所在的地址(行列),蛇最大节数 80 节
Data ends
Stack segment
dw 32 dup (?) ;栈段
Stack ends
Code segment
start:
main proc
mov ax,Data
mov ds,ax
mov ax,Stack
mov ss,ax
mov sp,20h ;初始化段寄存器
mov ax,3h
int 10h ;读取光标位置
mov ah,9h ;游戏界面
mov dx,offset szArray0
int 21h
mov ah,9h
mov dx,offset szArray1
int 21h
mov ah,9h
mov dx,offset szArray2
int 21h
mov ah,9h
mov dx,offset szArray3
int 21h
mov ah,9h
mov dx,offset szArray4
int 21h
mov ah,9h
mov dx,offset szArray5
int 21h
mov ah,9h
mov dx,offset szArraya
int 21h
mov ah,9h
mov dx,offset szArrayb
int 21h
mov ah,9h
mov dx,offset szArrayc
int 21h
mov ah,9h
mov dx,offset szArray0
int 21h
mov ah,9h
mov dx,offset szArrayd
int 21h
mov cx,3h
mov al,0h
mov ah,01h
int 21h ;21 号中断例程的 11 号子程序实时判断键盘输入,结果返回 al
cmp al,0h
jnb again
press:
mov di,8000h
call Delay
loop press
again: ;容错机制,当输入非 y 和非 n 键时提示重新输入
mov ax,3h
int 10h ;读取光标位置
mov ah,9h
mov dx,offset szArray0
int 21h
mov ah,9h
mov dx,offset szArray6
int 21h
mov ah,9h
mov dx,offset szArray7
int 21h
mov ah,9h
mov dx,offset szArray0
int 21h
mov ah,1h
int 21h
cmp al,'y'
jz star
cmp al,'n'
jz exit
mov ax,3h
int 10h ;读取光标位置
mov ah,9h
mov dx,offset szArray8
int 21h
mov di,8000h
call Delay
mov di,8000h
call Delay
jmp again
star:
call GameStar ;开始进入游戏
exit:
mov ax,3h
int 10h
mov ax,4c00h
int 21h
ret
main endp
GameStar proc ;游戏主体函数,无参数、返回
mov ax,3h
int 10h ;读取光标位置
call ShowWall
call ShowLevelScore ;初始化游戏界面
mov al,COLORW
mov bx,offset bDirection
mov [bx],al
call ShowInitSnake
call Randrow ;初始化蛇和随机产生食物的行列值
snakeMove: ;实现蛇的运动(四个方向)
call ShowRanFood;显示随机食物星形
call HideSnakeTail;删除蛇尾
call ShowSnakeHead ;显示蛇头
call RunSpeechLevel ;级数函数,蛇长越长级数越高速率越快
call Delay ;控制速率
mov al,0h
mov ah,0bh
int 21h ;21 号中断例程的 11 号子程序实时判断键盘输入,结果返回 al
cmp al,0ffh
jz @f
jmp snakeMove
@@:
mov al,0
mov ah,7h
int 21h ;无回显的键盘输入,产生键盘扫描码并返回 al
mov bx,offset bDirection
cmp al,4bh ;4bh 为左箭头的键盘扫描码
jz runLeft
cmp al,4dh ;4dh 为右箭头的键盘扫描码
剩余21页未读,继续阅读
资源评论
- kasjfaaaaaa2014-05-30速度超慢,其它ok
C_my
- 粉丝: 3
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功