基于汇编的贪食蛇游戏Word文件下载.docx

上传人:b****5 文档编号:21146044 上传时间:2023-01-27 格式:DOCX 页数:37 大小:1.67MB
下载 相关 举报
基于汇编的贪食蛇游戏Word文件下载.docx_第1页
第1页 / 共37页
基于汇编的贪食蛇游戏Word文件下载.docx_第2页
第2页 / 共37页
基于汇编的贪食蛇游戏Word文件下载.docx_第3页
第3页 / 共37页
基于汇编的贪食蛇游戏Word文件下载.docx_第4页
第4页 / 共37页
基于汇编的贪食蛇游戏Word文件下载.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

基于汇编的贪食蛇游戏Word文件下载.docx

《基于汇编的贪食蛇游戏Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于汇编的贪食蛇游戏Word文件下载.docx(37页珍藏版)》请在冰豆网上搜索。

基于汇编的贪食蛇游戏Word文件下载.docx

Bodydw200dup(0);

蛇的身体位置

Directiondw256

Scoredb'

Score00000'

得分

snake_colordb0ah;

蛇颜色

food_colordb0ch;

食物色

speeddb0;

速度

gameoverdb0;

游戏结束标记

Pointdb0;

得分数

foodXdw?

食物坐标

foodYdw?

seeddw2;

随即数种子

;

******************************************************************************************

显示方面的参数

toplinedw20;

上边界

leftlinedw60;

左边界

cut_xdw4;

每格宽

cut_ydw3;

每格长

max_xdw49;

最大格数(横)

max_ydw49;

最大格数(纵)

msg1db'

GreedySnakes'

msg2db'

by:

tangxing'

msg3db'

Gameisover!

'

msg4db'

Pressanykeyforstart!

Escforexit'

msg5db'

ESCforback,Spaceforretry'

msg6db'

pressspaceforpause/continue'

msg7db'

'

title1db6dup(20h),5dup(0dch),5dup(20h),5dup(0dch),5dup(20h)

title2db6dup(20h),0dbh,3dup(20h),0dbh,5dup(20h),0dbh,3dup(20h),0dbh,5dup(20h)

title3db6dup(20h),0dbh,3dup(20h),0dbh,5dup(20h),0dbh,3dup(20h),0dbh,5dup(20h)

title4db7dup(0dfh),3dup(20h),7dup(0dfh),3dup(20h),5dup(0dfh),0fdh

yellodb0eh

greendb02h

whitedb0fh

bluedb01h

键盘扫描码

LEFTEQU4Bh

RIGHTEQU4Dh

UPEQU48h

DOWNEQU50h

QUITEQU01h

SPACEEQU39h

.code

mainprocfar

movax,@data

movds,ax

start:

movah,00

moval,12h

int10h;

设置图形模式640*480

callshow_start_msg;

显示开始提示信息

callshow_title

movah,00h

int16h;

等待按键

cmpah,QUIT

jzdos;

ESC则退出,否则进入游戏

game_start:

movah,00;

设置图形模式320*200,游戏在此模式下运行

moval,13h

int10h

movcl,7;

边框颜色

movsi,59

movbx,19

movdi,260

movdx,170

callrec;

打印边框

callclear_area;

游戏区域清空(效果)

callInit_snake;

初始化蛇

callgetfood;

得到第一个食物

callrun_snake;

开始运动蛇

exit:

movdx,1010h;

设置光标

callSetGb;

设置光标位置

movbl,white;

显示死亡信息

leabp,msg3

movcx,13

callMsg;

显示字符串

movdx,1605h

显示提示信息

leabp,msg5

movcx,29

callMsg

exit_loop:

cmpah,QUIT

jzstart

cmpah,SPACE

jzgame_start

jmpexit_loop;

返回开始

dos:

moval,03

设置文本模式

movah,4ch

int21h;

退出到DOS

mainendp

函数名:

SetGb

功能:

设置光标位置

传递参数:

dh/dl行/列

SetGbprocnear

pushax

pushbx

movbh,0

movah,02h

int10h

popbx

popax

ret

SetGbendp

Msg

输出字符串

bl颜色号(BLRGBIRGB)

bp字符串偏移地址

cx字符串长度

Msgprocnear

pushes

pushds

popes;

将数据段ds送es

moval,0

movah,13h

movbh,0

popes

popax

ret

Msgendp

show_title

显示开始提示信息

show_titleprocnear

pushcx

pushdx

movdl,10h

movcx,10h

yidong:

decdl

movdh,0fh

callSetGb

moval,020h

movah,0eh

incdl

movdh,0ch

movbl,yello

leabp,title1

movcx,26

movdh,0dh

leabp,title2

movdh,0eh

leabp,title3

leabp,title4

calldelay

popcx

callshow_start_msg

loopyidong

movah,0ch

moval,0

int21h

popdx

show_titleendp

show_start_msg

show_start_msgprocnear

movdx,1426h

movbl,0a1h

leabp,msg1

movcx,12

movdx,190bh

movbl,08h

leabp,msg2;

显示作者信息

movcx,11

movdx,1619h;

movbl,white

leabp,msg4;

movcx,37

show_start_msgendp

cutsnake

显示蛇的一格

si/di游戏空间列/游戏空间行(50*50)

cutsnakeprocnear

pushsi

pushdi

movcl,snake_color;

置颜色

movax,di;

取坐标值

mulcut_y;

乘象素值

addax,topline;

加上边界

movbx,ax

addax,2

movdx,ax

movax,si;

mulcut_x;

addax,leftline;

movsi,ax

addax,3

movdi,ax

callRec;

Rec的参数是cl颜色si左边bx上边di右边dx下边

popdi

popsi

cutsnakeendp

cutfood

显示食物

函数返回:

cutfoodprocnear

movcl,food_color;

movbx,ax

addax,2

pushbx

cutfoodendp

clearcut

清除格

clearcutprocnear

movcl,0;

置颜色(黑)

clearcutendp

Rand

产生指定范围大小的随机数

si数字的范围最大值+1

ax返回随机数的值

Randproc

movah,2ch

movax,dx

movdx,0

movbx,si;

指定随机数的范围

divbx

ret

Randendp

getfood

产生新食物,即随机产生一组49*49的坐标

foodx与foody的值

getfoodproc

M1:

movsi,50;

置随机数范围(最大值+1)

callRand;

产生随机数

movfoodx,ax;

赋予食物坐标x

movfoody,ax;

赋予食物坐标y

movsi,foodx

movdi,foody

addax,topline

movdx,ax

addax,leftline

movcx,ax

movah,0dh

movbh,0

cmpal,snake_color

jzM1

callcutfood;

画食物

getfoodendp

Delay

延时

Delayproc

pushcx

pushdx

movcx,33144

waitf:

inal,61h

andal,10h

cmpal,ah

jewaitf

movah,al

loopwaitf

Delayendp

Check_key

处理键盘响应

Direction的值,gameover的值(按ESC时)

Check_keyproc

movah,01h

int16h

jzcheck_nokey;

如果没有按键就继续

movah,0;

取得扫描码

pushax

jnzS2

S1:

movah,0

cmpah,SPACE

jnzS1

S2:

cmpah,LEFT;

往左移动

jzcheck_LEFT

cmpah,RIGHT;

往右边移动

jzcheck_RIGHT

cmpah,UP;

往上移动

jzcheck_UP

cmpah,DOWN;

往下移动

jzcheck_DOWN

cmpah,QUIT;

结束游戏

jzcheck_QUIT

jmpcheck_nokey

check_LEFT:

movah,-1;

(-1,0)

movbx,ax;

检查是否反向

addbx,Direction

jzcheck_nokey

movDirection,ax

check_RIGHT:

movah,1;

(1,0)

check_UP:

(0,-1)

moval,-1

movbx,Direction;

subbl,1

jzcheck_nokey

movDirection

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1