汇编语言与接口技术课程设计实验报告基于汇编的贪食蛇游戏

上传人:桔**** 文档编号:470233009 上传时间:2023-06-27 格式:DOC 页数:27 大小:1.77MB
返回 下载 相关 举报
汇编语言与接口技术课程设计实验报告基于汇编的贪食蛇游戏_第1页
第1页 / 共27页
汇编语言与接口技术课程设计实验报告基于汇编的贪食蛇游戏_第2页
第2页 / 共27页
汇编语言与接口技术课程设计实验报告基于汇编的贪食蛇游戏_第3页
第3页 / 共27页
汇编语言与接口技术课程设计实验报告基于汇编的贪食蛇游戏_第4页
第4页 / 共27页
汇编语言与接口技术课程设计实验报告基于汇编的贪食蛇游戏_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《汇编语言与接口技术课程设计实验报告基于汇编的贪食蛇游戏》由会员分享,可在线阅读,更多相关《汇编语言与接口技术课程设计实验报告基于汇编的贪食蛇游戏(27页珍藏版)》请在金锄头文库上搜索。

1、一、 实验目的:本次实验是汇编语言与接口技术这门课程的综合试验。目的是熟练掌握并能综合应用所学的汇编语言与接口技术,同时也熟悉了汇编语言的程序的调试方法,发现并纠正了平时编写汇编程序时一些不好的习惯,养成了较好的编程习惯,同时在实践中加深对这门课程的理解,也为后面进一步的学习以及实验打下扎实的基础。二、 实验环境Masm for Windows 集成实验环境。三、 实验内容用所学的汇编语言与接口技术的知识,用汇编语言编写一贪 食蛇的游戏。 实验要求:贪吃蛇能正常运动; 贪吃蛇能够有指定的四个方向键控制方向; 贪吃蛇吃掉豆子能自动加分; 贪吃蛇能够在碰到边界死亡; 其余可以根据自己的想法扩展功能

2、;。四、 实验步骤与调试方法程序初始化部分:在数据段定义好相关的提示信息以及储存蛇身的数组,主要有游戏之前的提示信息,游戏之中的相关输出信息,例如得分等。画点部分: 屏幕显示采用320*200的图形16色显示模式,点的画出采用写像素的方式,每个点占用4*3像素。同蛇移动程序: 采用不断刷屏的方式,通过延迟,程序没执行一次,蛇便会在相应的方向往前移动一个格。此时可以通过记录蛇头位置并重画擦屏的方式显示出蛇身的新位置。蛇的位置重置: 由于蛇是不断运动的,此时可以采用将新的蛇身的位置覆盖原先的数组。随即豆的产生: 利用系统时间的变化,根据秒和百分之一秒的部分,此时可以通过一系列运算产生在要求范围内的

3、的随机数,此时的随机数便是随即点,可以通过产生的随即点的坐标画出随即点。蛇吃食物: 当蛇头的位置可以与随即点的位置坐标判断,如果此时两点的坐标是相同的,那么便可以将此时的食物点加到蛇头位置上。判断游戏结束的条件: 当蛇的头部位置到达边界或者蛇头的位置与自身相重合,那么变产生结束的条件了。五、 源程序清单、测试数据、运行结果.model small.stack 200.dataLen db ? ;蛇的长度Body dw 200 dup(0) ;蛇的身体位置Direction dw 256Score db Score00000 ;得分snake_color db 0ah ;蛇颜色food_colo

4、r db 0ch ;食物色speed db 0 ;速度gameover db 0 ;游戏结束标记Point db 0 ;得分数foodX dw ? ;食物坐标foodY dw ?seed dw 2 ;随即数种子;* ;显示方面的参数topline dw 20 ;上边界leftline dw 60 ;左边界cut_x dw 4 ;每格宽cut_y dw 3 ;每格长max_x dw 49 ;最大格数(横)max_y dw 49 ;最大格数(纵)msg1 db Greedy Snakesmsg2 db by:tangxingmsg3 db Game is over!msg4 db Press an

5、y key for start! Esc for exitmsg5 db ESC for back, Space for retrymsg6 db press space for pause/continuemsg7 db title1 db 6 dup(20h), 5 dup(0dch), 5 dup(20h) ,5 dup(0dch), 5 dup(20h) title2 db 6 dup(20h), 0dbh,3 dup(20h),0dbh,5 dup(20h),0dbh,3 dup(20h),0dbh ,5 dup(20h) title3 db 6 dup(20h), 0dbh,3 d

6、up(20h),0dbh,5 dup(20h) ,0dbh,3 dup(20h),0dbh,5 dup(20h)title4 db 7 dup(0dfh), 3 dup(20h),7 dup(0dfh), 3 dup(20h),5 dup(0dfh),0fdhyello db 0eh green db 02h white db 0fh blue db 01h;* ;键盘扫描码LEFT EQU 4BhRIGHT EQU 4DhUP EQU 48hDOWN EQU 50hQUIT EQU 01hSPACE EQU 39h.codemain proc farmov ax , datamov ds ,

7、 axstart:mov ah , 00mov al , 12hint 10h ;设置图形模式640*480call show_start_msg ;显示开始提示信息call show_titlemov ah , 00hint 16h ;等待按键cmp ah , QUIT jz dos ;ESC则退出,否则进入游戏game_start:mov ah , 00 ;设置图形模式320*200,游戏在此模式下运行mov al , 13hint 10h mov cl , 7 ;边框颜色mov si , 59mov bx , 19mov di , 260mov dx , 170call rec ;打印边

8、框call clear_area ;游戏区域清空(效果)call Init_snake ;初始化蛇call getfood ;得到第一个食物call run_snake ;开始运动蛇exit:mov dx , 1010h ;设置光标call SetGb ;设置光标位置mov bl , white ;显示死亡信息lea bp , msg3mov cx , 13call Msg ;显示字符串mov dx , 1605hmov bl , white ;显示提示信息lea bp , msg5mov cx , 29call Msgexit_loop:mov ah , 00hint 16h ;等待按键cm

9、p ah , QUITjz startcmp ah , SPACEjz game_startjmp exit_loop ;返回开始dos:mov ah , 00mov al , 03int 10h ;设置文本模式mov ah , 4chint 21h ;退出到DOSmain endp;*;函数名: SetGb;功能: 设置光标位置;传递参数: dh/dl 行/列;*SetGb proc nearpush axpush bxmov bh , 0mov ah , 02hint 10hpop bxpop ax retSetGb endp;*;函数名: Msg;功能: 输出字符串;传递参数: ; bl

10、 颜色号(BL RGB IRGB); bp 字符串偏移地址; cx 字符串长度; dh/dl 行/列;*Msg proc near push axpush bxpush espush dspop es ;将数据段ds送esmov al , 0mov ah , 13hmov bh , 0 int 10hpop espop bxpop axret Msg endp;*;函数名: show_title;功能: 显示开始提示信息;*show_title proc nearpush axpush bxpush cxpush dxmov dl,10hmov cx,10hyidong:push cxdec

11、dlmov dh,0fhcall SetGbmov al,020hmov ah,0ehint 10hinc dlmov dh,0chcall SetGbmov bl,yellolea bp,title1mov cx,26call Msgmov dh,0dhcall SetGbmov bl,yellolea bp,title2mov cx,26call Msgmov dh,0ehcall SetGbmov bl,yellolea bp,title3mov cx,26call Msgmov dh,0fhcall SetGbmov bl,yellolea bp,title4mov cx,26call Msgcall delayinc dlpop cxcall show_start_msgloop yidongmov ah,0chmov al,0int 21hpop dxpop cxpop bxpop ax retshow_title endp;*;函数名: show_start_msg;功能: 显示开始提示信息;*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号