汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx

上传人:b****4 文档编号:17803577 上传时间:2022-12-10 格式:DOCX 页数:50 大小:60.47KB
下载 相关 举报
汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx_第1页
第1页 / 共50页
汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx_第2页
第2页 / 共50页
汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx_第3页
第3页 / 共50页
汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx_第4页
第4页 / 共50页
汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx

《汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx(50页珍藏版)》请在冰豆网上搜索。

汇编贪吃蛇课程设计附源码范本模板Word文档下载推荐.docx

食物坐标

foodYdw?

seeddw2;

随即数种子

键盘扫描码:

LEFTEQU4Bh

RIGHTEQU4Dh

UPEQU48h

DOWNEQU50h

QUITEQU01h

SPACEEQU39h

main函数

主函数首先加载定义好的数据,设置图形模式大小,调用显示开始提示信息的函数,中断等待用户按键输入,判断退出或开始游戏.进入游戏,重新设置图形模式,调用rec,clear_area,getfood,run_sanke函数分别打印边框,初始化蛇,随机食物,开始运动蛇。

当蛇死亡时,中断,等待用户输入,根据用户的输入继续游戏或退出程序。

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

Init_snake;

初始化蛇

callgetfood;

得到第一个食物

callrun_snake;

开始运动蛇

movdx,1010h;

设置光标

callSetGb;

设置光标位置

movbl,white;

显示死亡信息

leabp,msg3

movcx,13

callMsg;

显示字符串

movdx,1605h

显示提示信息

leabp,msg5

movcx,29

callMsg

exit_loop:

int16h;

cmpah,QUIT

jzstart

cmpah,SPACE

jzgame_start

jmpexit_loop;

返回开始

dos:

moval,03

设置文本模式

movah,4ch

int21h;

退出到DOS

mainendp

Run_snake函数

蛇一开始默认向右运动,当按下空格键时游戏暂停,再按空格键游戏开始。

用INT 

10H的1号功能检测是否有按键输入,改变蛇头前进的方向,没有保持当前的前进方向.在蛇运动过程中,不断检查是否撞墙或蛇头触碰到蛇身,如果是,跳转到stop,提示重新或退出。

当检查到食物坐标和蛇头坐标一致时,食物被吃,蛇身长度+1,保存当前前进方向。

run_snakeproc

pushax

pushbx

pushcx

pushdx

pushsi

pushdi

movdx,0005h

callSetGb

movbl,white

leabp,msg6

movcx,30

loop1:

callDelay

moval,1

cmpal,gameover

jzstop

movbx,offsetBody

movcx,0

movcl,Len

addbx,cx

subbx,2

A1:

movax,[bx]

mov[bx+2],ax

subbx,2

loopA1

addhead:

movbx,offsetBody;

增加新头部并改写数据

movax,[bx]

movdx,Direction

addah,dh;

坐标加方向

addal,dl;

mov[bx],ax;

存入头部

movdx,0;

为check_die准备参数si,di

movdl,ah

movsi,dx

movdl,al

movdi,dx

callcheck_die;

检查死亡

cmpal,gameover

jzstop

callcheck_eat;

检查吃

cmpcx,1

jzA2

movax,0

addLen,1

moval,Len

addbx,ax;

取到蛇尾

addbx,ax

subbx,2

movax,[bx]

movcx,0

mov[bx],cx

movdx,0

movdl,ah

movsi,dx

movdl,al

subLen,1

callclearcut

movbx,offsetBody

movax,[bx]

movdi,dx

callcutsnake

jmpA3

A2:

movax,[bx]

callcutsnake;

画新头部

callgetfood

A3:

callshow_point

callcheck_key;

检查按键

jmploop1;

蛇运动循环DATASSEGMENT

stop:

popdi

popsi

popdx

popcx

popbx

popax

ret

run_snakeendp

getfood函数

设置了一个随机数坐标x最大值50,调用Rand函数获取随机x轴坐标,同理可得随机y轴坐标,该坐标就是食物的随机坐标。

调用cutfood函数,将随机食物在显示屏输出

getfoodproc

M1:

movsi,50;

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

callRand;

产生随机数

movfoodx,ax;

赋予食物坐标x

movsi,50;

movfoody,ax;

赋予食物坐标y

movsi,foodx

movdi,foody

movax,di;

取坐标值

mulcut_y;

乘象素值

addax,topline

movdx,ax

movax,si;

mulcut_x;

addax,leftline

movcx,ax

movah,0dh

movbh,0

int10h

cmpal,snake_color

jzM1

callcutfood;

画食物

getfoodendp

Check_key函数

响应键盘输入,控制蛇的移动以及控制游戏退出

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)

moval,0

movbx,ax;

检查是否反向

addbx,Direction

jzcheck_nokey

movDirection,ax

check_RIGHT:

movah,1;

(1,0)

movbx,ax;

movDirection,ax

check_UP:

movah,0;

(0,—1)

moval,—1

movbx,Direction;

subbl,1

jzcheck_nokey

check_DOWN:

(0,1)

moval,1

movbx,Direction;

addbl,1

check_QUIT:

jmpcheck_exit

check_exit:

按下ESC键的情况

movgameover,1

check_nokey:

movah,0ch

moval,0

int21h

Check_keyendp

3系统测试及改进

3.1程序测试

打开程序,显示欢迎界面,提醒用户输入,

按任意键进入程序,游戏开始时,贪吃蛇默认向右移动,使用键盘的上下左右控制贪吃蛇的前进的方向,最下方的Score实时更新分数,游戏过程中空格键可以暂停和继续

每吃一个食物,Socre+100,蛇身长度+1

当蛇头撞墙之后,弹出信息-Gameisover!

程序中断,提示并等待用户操作,当按ESC键时退回主界面,按空格键重新开始游戏,此时分数归零,蛇身长度也恢复到开始时的默认值

如图,当蛇头撞上蛇身时,等同蛇头撞上墙壁

3。

2系统改进

(1)游戏制作的精细度和画面的质量有待提高,改善蛇和食物的样子

(2)联机,可以多台机器联机比赛,

(3)可以记录历史最好成绩

(4)某些食物具有特效,比如缩短蛇身的长度,可以穿墙

(5)可以改变游戏的速度,

(6)长时间游戏提醒玩家休息

(7)实现背景音乐

(8)可以选择不同形状的蛇身,改变蛇的颜色

(9)可以保存当前游戏,玩家下次可以继续当前游戏

4源码

modelsmall

.stack200

data

Lendb?

Score00000'

speeddb0;

gameoverdb0;

foodYdw?

;

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

显示方面的参数

toplinedw20;

上边界

leftlinedw60;

左边界

cut_xdw4;

每格宽

cut_ydw3;

每格长

max_xdw49;

最大格数(横)

max_ydw49;

最大格数(纵)

msg1db'

GreedySnakes’

msg2db’by:

xiaobin’

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

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

键盘扫描码

.code

mainprocfar

movax,@data

movah,00

movah,00h

jzdoes;

game_start:

movah,00;

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

moval,13h

movcl,7;

movsi,59

movdi,260

movdx,170

callrec;

打印边框

callclear_area;

游戏区域清空(效果)

callInit_snake;

callgetfood;

callrun_snake;

exit:

movdx,1010h;

movbl,white;

movcx,13

movdx,1605h

movbl,white;

exit_loop:

cmpah,SPACE

does:

movah,4ch

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

函数名:

SetGb

功能:

设置光标位置

传递参数:

dh/dl行/列

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

SetGbprocnear

movbh,0

movah,02h

popax

SetGbendp

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

Msg

输出字符串

bl颜色号(BLRGBIRGB)

bp字符串偏移地址

cx字符串长度

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

Msgprocnear

pushes

pushds

popes;

将数据段ds送es

moval,0

movah,13h

movbh,0

popes

ret

Msgendp

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

show_title

功能:

显示开始提示信息

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

show_titleprocnear

movdl,10h

movcx,10h

yidong:

decdl

movdh,0fh

moval,020h

movah,0eh

incdl

movdh,0ch

movbl,yello

leabp,title1

movcx,26

movdh,0dh

leabp,title2

movdh,0eh

movbl,yello

leabp,title3

movcx,26

leabp,title4

calldelay

callshow_start_msg

loopyidong

moval,0

show_titleendp

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

函数名:

show_start_msg

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

show_start_msgprocnear

p

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

当前位置:首页 > 求职职场 > 简历

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

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