汇编贪吃蛇课程设计附源码

上传人:仙*** 文档编号:43754161 上传时间:2021-12-04 格式:DOC 页数:38 大小:145.01KB
收藏 版权申诉 举报 下载
汇编贪吃蛇课程设计附源码_第1页
第1页 / 共38页
汇编贪吃蛇课程设计附源码_第2页
第2页 / 共38页
汇编贪吃蛇课程设计附源码_第3页
第3页 / 共38页
资源描述:

《汇编贪吃蛇课程设计附源码》由会员分享,可在线阅读,更多相关《汇编贪吃蛇课程设计附源码(38页珍藏版)》请在装配图网上搜索。

1、目录1程序简介12程序设计12.1程序分析程序初始化:12.2游戏流程22.3程序流程图32.4数据定义及重要函数43系统测试及改进123.1程序测试123.2系统改进144源码151程序简介贪吃蛇游戏是一个经典小游戏,在封闭的围墙里面,通过键盘的上下左右控制蛇的方向,寻找随机出现的食物。蛇头撞到食物,则食物被吃掉,蛇身体长度+1,同时记100分,蛇的身子越吃越长,身子越长玩的难度就越大,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。2程序设计2.1程序分析程序初始化:加载在数据段定义好相关的提示信息以及储存蛇身的数组,主要是如何开始游戏的提示信息蛇的移动:程序的关键是表示蛇的图形以

2、及蛇的移动。一开始用4个小矩形表示蛇的身体,每吃一个食物,身体增加一个矩形,移动时必须从蛇头开始,所以蛇不能向相反方向移动,蛇头的前进方向也就是蛇的方向,蛇尾不能改作蛇头。设置一个等待时间,如果不按任何按键,蛇在当前方向上前进。按了有效的方向键后,先确定蛇头的位置然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,这时由于没有清屏的原因,原来蛇的位置和新蛇的位置相差一个单位,所以看起来蛇会多一节身体。食物的产生:通过一系列运算产生在要求范围内的的随机数,此时的随机数便是随即点,可以通过产生的随即点的坐标画出随即点,也就是食物了。蛇吃食物: 蛇头的位置可以与随即点的位置坐标判断,如果此

3、时两点的坐标是相同的,那么该食物被蛇吃掉,蛇的长度+1。判断游戏结束的条件: 当蛇的头部位置坐标与边界坐标重合或者蛇头的位置与自身相重合,游戏结束 暂停: 游戏过程中,按空格键可以使游戏暂停,在按空格键进入被暂停的游戏2.2游戏流程 由程序分析知,该游戏是用方向键实现贪吃蛇的移动,游戏大概流程分为:游戏初始化(描绘围墙、蛇体、食物等及其颜色),游戏过程(通过四个方向键控制蛇头带动身体移动),游戏结束(显示总分并判断是否重新游戏)。2.3程序流程图 2.4数据定义及重要函数 数据定义及键盘扫描码 数据定义: Len db ? ;蛇的长度Body dw 200 dup(0) ;蛇的身体位置Dire

4、ction dw 256Score db Score00000 ;得分snake_color db 0ah ;蛇颜色food_color db 0ch ;食物色speed db 0 ;速度gameover db 0 ;游戏结束标记Point db 0 ;得分数foodX dw ? ;食物坐标foodY dw ?seed dw 2 ;随即数种子 键盘扫描码:LEFT EQU 4BhRIGHT EQU 4DhUP EQU 48hDOWN EQU 50hQUIT EQU 01hSPACE EQU 39h main函数 主函数首先加载定义好的数据,设置图形模式大小,调用显示开始提示信息的函数,中断等待

5、用户按键输入,判断退出或开始游戏。进入游戏,重新设置图形模式,调用rec,clear_area,getfood,run_sanke函数分别打印边框,初始化蛇,随机食物,开始运动蛇。当蛇死亡时,中断,等待用户输入,根据用户的输入继续游戏或退出程序。 main proc farmov ax , datamov ds , axstart:mov ah , 00mov al , 12hint 10h ;设置图形模式640*480call show_start_msg ;显示开始提示信息call show_titlemov ah , 00hint 16h ;等待按键cmp ah , QUIT jz do

6、s ;ESC则退出,否则进入游戏game_start:mov ah , 00 ;设置图形模式320*200,游戏在此模式下运行mov al , 13hint 10h mov cl , 7 ;边框颜色mov si , 59mov bx , 19Init_snake ;初始化蛇call getfood ;得到第一个食物call run_snake ;开始运动蛇mov dx , 1010h ;设置光标call SetGb ;设置光标位置mov bl , white ;显示死亡信息lea bp , msg3mov cx , 13call Msg ;显示字符串mov dx , 1605hmov bl ,

7、 white ;显示提示信息lea bp , msg5mov cx , 29call Msgexit_loop:mov ah , 00hint 16h ;等待按键cmp ah , QUITjz startcmp ah , SPACEjz game_startjmp exit_loop ;返回开始dos:mov ah , 00mov al , 03int 10h ;设置文本模式mov ah , 4chint 21h ;退出到DOSmain endp Run_snake函数 蛇一开始默认向右运动,当按下空格键时游戏暂停,再按空格键游戏开始。用INT10H的1号功能检测是否有按键输入,改变蛇头前进的

8、方向,没有保持当前的前进方向。在蛇运动过程中,不断检查是否撞墙或蛇头触碰到蛇身,如果是,跳转到stop,提示重新或退出。当检查到食物坐标和蛇头坐标一致时,食物被吃,蛇身长度+1,保存当前前进方向。run_snake procpush axpush bxpush cxpush dxpush sipush dimov dx, 0005hcall SetGbmov bl,whitelea bp,msg6mov cx,30call Msgloop1:call Delaymov al,1cmp al,gameoverjz stopmov bx , offset Bodymov cx,0mov cl,Le

9、nadd bx,cxadd bx,cxsub bx,2A1:mov ax,bx mov bx+2,axsub bx,2loop A1addhead: mov bx , offset Body ;增加新头部并改写数据mov ax , bxmov dx , Directionadd ah , dh ;坐标加方向add al , dl ;坐标加方向mov bx , ax ;存入头部mov dx,0 ;为check_die准备参数si,dimov dl , ahmov si , dxmov dl , almov di , dxcall check_die ;检查死亡mov al,1cmp al,gam

10、eoverjz stop call check_eat ;检查吃cmp cx,1jz A2 mov bx , offset Bodymov ax,0add Len,1mov al , Lenadd bx , ax ;取到蛇尾add bx , axsub bx , 2mov ax , bxmov cx,0mov bx,cxmov dx,0mov dl , ahmov si , dxmov dl , almov di , dxsub Len,1call clearcutmov bx , offset Bodymov ax, bxmov dx,0mov dl , ahmov si , dxmov d

11、l , almov di , dxcall cutsnakejmp A3A2:add Len,1mov bx , offset Bodymov ax, bxmov dx,0mov dl , ahmov si , dxmov dl , almov di , dxcall cutsnake ;画新头部call getfoodA3:call show_pointcall check_key ;检查按键jmp loop1 ;蛇运动循环DATAS SEGMENTstop:pop dipop sipop dxpop cxpop bxpop axretrun_snake endp getfood函数 设置了

12、一个随机数坐标x最大值50,调用Rand函数获取随机x轴坐标,同理可得随机y轴坐标,该坐标就是食物的随机坐标。调用cutfood函数,将随机食物在显示屏输出getfood procpush axpush bxpush cxpush dxpush sipush diM1:mov si,50 ;置随机数范围(最大值+1)call Rand ;产生随机数mov foodx,ax ;赋予食物坐标xmov si,50 ;置随机数范围(最大值+1)call Rand ;产生随机数mov foody,ax ;赋予食物坐标ymov si,foodxmov di,foodymov ax,di ;取坐标值mul

13、cut_y ;乘象素值add ax,topline mov dx,axpush dxmov ax,si ;取坐标值mul cut_x ;乘象素值add ax,leftline mov cx,axpop dxmov ah,0dhmov bh,0int 10hcmp al,snake_colorjz M1call cutfood ;画食物pop dipop sipop dxpop cxpop bxpop axretgetfood endp Check_key函数响应键盘输入,控制蛇的移动以及控制游戏退出 Check_key procpush axpush bxpush cxpush dxpush

14、sipush dimov ah , 01hint 16hjz check_nokey ;如果没有按键就继续mov ah , 0 ;取得扫描码 int 16hpush ax cmp ah , SPACEjnz S2S1:mov ah,0int 16hcmp ah, SPACEjnz S1S2:pop axcmp ah , LEFT ;往左移动jz check_LEFTcmp ah , RIGHT ;往右边移动jz check_RIGHTcmp ah , UP ;往上移动jz check_UPcmp ah , DOWN ;往下移动jz check_DOWNcmp ah , QUIT ;结束游戏jz

15、 check_QUITjmp check_nokeycheck_LEFT:mov ah , -1 ;(-1,0)mov al , 0mov bx , ax ;检查是否反向add bx , Directionjz check_nokeymov Direction , axjmp check_nokeycheck_RIGHT:mov ah , 1 ;(1,0)mov al , 0mov bx , ax ;检查是否反向add bx , Directionjz check_nokeymov Direction , axjmp check_nokeycheck_UP:mov ah , 0 ;(0,-1)

16、mov al , -1mov bx , Direction ;检查是否反向sub bl , 1jz check_nokey mov Direction , axjmp check_nokeycheck_DOWN:mov ah , 0 ;(0,1)mov al , 1 mov bx , Direction ;检查是否反向add bl , 1jz check_nokeymov Direction , axjmp check_nokeycheck_QUIT:jmp check_exitcheck_exit: ;按下ESC键的情况mov gameover,1check_nokey:mov ah,0ch

17、mov al,0int 21hpop dipop sipop dxpop cxpop bxpop axretCheck_key endp3系统测试及改进3.1程序测试打开程序,显示欢迎界面,提醒用户输入,按任意键进入程序,游戏开始时,贪吃蛇默认向右移动,使用键盘的上下左右控制贪吃蛇的前进的方向,最下方的Score实时更新分数,游戏过程中空格键可以暂停和继续、每吃一个食物,Socre+100,蛇身长度+1当蛇头撞墙之后,弹出信息Game is over!程序中断,提示并等待用户操作,当按ESC键时退回主界面,按空格键重新开始游戏,此时分数归零,蛇身长度也恢复到开始时的默认值如图,当蛇头撞上蛇身时

18、,等同蛇头撞上墙壁3.2系统改进(1)游戏制作的精细度和画面的质量有待提高,改善蛇和食物的样子(2)联机,可以多台机器联机比赛,(3)可以记录历史最好成绩(4)某些食物具有特效,比如缩短蛇身的长度,可以穿墙(5)可以改变游戏的速度,(6)长时间游戏提醒玩家休息(7)实现背景音乐(8)可以选择不同形状的蛇身,改变蛇的颜色(9)可以保存当前游戏,玩家下次可以继续当前游戏4源码.model small.stack 200.dataLen db ? ;蛇的长度Body dw 200 dup(0) ;蛇的身体位置Direction dw 256Score db Score00000 ;得分snake_c

19、olor db 0ah ;蛇颜色food_color 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:xiaobinmsg3 db Game

20、is over!msg4 db Press any 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

21、 db 6 dup(20h), 0dbh,3 dup(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

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

23、mov dx , 170call rec ;打印边框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:mo

24、v ah , 00hint 16h ;等待按键cmp ah , QUITjz startcmp ah , SPACEjz game_startjmp exit_loop ;返回开始does: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;*;函数名

25、: Msg;功能: 输出字符串;传递参数: ; bl 颜色号(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,10hmo

26、v cx,10hyidong:push cxdec 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,yello

27、lea 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;功能: 显示开始提示信息;*show_start_msg proc nearpush axpush bxpush cxpush dxmov dx,1426hcall SetGbmov bl,0a1hlea bp,msg1mov cx,12call Msg

28、mov dx , 190bhcall SetGb ;设置光标mov bl,08hlea bp,msg2 ;显示作者信息mov cx,11call Msg ;显示字符串mov dx , 1619h ;设置光标call SetGbmov bl , whitelea bp , msg4 ;显示提示信息mov cx , 37call Msg ;显示字符串pop dxpop cxpop bxpop ax retshow_start_msg endp;*;函数名: cutsnake;功能: 显示蛇的一格;传递参数: ; si/di 游戏空间列/游戏空间行(50*50);*cutsnake proc nea

29、rpush axpush bxpush cxpush dxpush sipush dimov cl, snake_color ;置颜色mov ax,di ;取坐标值mul cut_y ;乘象素值add ax,topline ;加上边界mov bx , ax add ax , 2 mov dx , axpush bxpush dxmov ax,si ;取坐标值mul cut_x ;乘象素值add ax,leftline ;加上边界mov si , axadd ax , 3mov di , axpop dxpop bxcall Rec ;Rec的参数是cl颜色 si左边 bx上边 di右边 dx下

30、边pop dipop sipop dxpop cxpop bxpop ax retcutsnake endp;*;函数名: cutfood;功能: 显示食物;传递参数: ; si/di 游戏空间列/游戏空间行(50*50);函数返回: 空;*cutfood proc nearpush axpush bxpush cxpush dxpush sipush dimov cl , food_color ;置颜色mov ax,di ;取坐标值mul cut_y ;乘象素值add ax,topline ;加上边界mov bx , axadd ax , 2mov dx , axpush bx push d

31、xmov ax,si ;取坐标值mul cut_x ;乘象素值add ax,leftline ;加上边界mov si , axadd ax , 3mov di , axpop dxpop bxcall Rec ;Rec的参数是cl颜色 si左边 bx上边 di右边 dx下边pop dipop sipop dxpop cxpop bxpop ax retcutfood endp;*;函数名: clearcut;功能: 清除格;传递参数: ; si/di 游戏空间列/游戏空间行(50*50);函数返回: 空;*clearcut proc nearpush axpush bxpush cxpush

32、dxpush sipush dimov cl , 0 ;置颜色(黑)mov ax,di ;取坐标值mul cut_y ;乘象素值add ax,topline ;加上边界mov bx , axadd ax , 2mov dx , axpush bxpush dxmov ax,si ;取坐标值mul cut_x ;乘象素值add ax,leftline ;加上边界mov si , axadd ax , 3mov di , axpop dxpop bxcall Rec ;Rec的参数是cl颜色 si左边 bx上边 di右边 dx下边pop dipop sipop dxpop cxpop bxpop

33、ax retclearcut endp;*;函数名: Rand;功能: 产生指定范围大小的随机数;传递参数: si 数字的范围最大值+1;函数返回: ax 返回随机数的值;*Rand procpush bxpush cxpush dxpush simov ah,2chint 21hmov ax,dxmov dx,0mov bx,si ;指定随机数的范围div bx mov ax,dxpop sipop dxpop cxpop bx retRand endp;*;函数名: getfood;功能: 产生新食物,即随机产生一组49*49的坐标 ;函数返回: foodx与foody的值;*getfoo

34、d procpush axpush bxpush cxpush dxpush sipush diM1:mov si,50 ;置随机数范围(最大值+1)call Rand ;产生随机数mov foodx,ax ;赋予食物坐标xmov si,50 ;置随机数范围(最大值+1)call Rand ;产生随机数mov foody,ax ;赋予食物坐标ymov si,foodxmov di,foodymov ax,di ;取坐标值mul cut_y ;乘象素值add ax,topline mov dx,axpush dxmov ax,si ;取坐标值mul cut_x ;乘象素值add ax,leftl

35、ine mov cx,axpop dxmov ah,0dhmov bh,0int 10hcmp al,snake_colorjz M1call cutfood ;画食物pop dipop sipop dxpop cxpop bxpop axretgetfood endp;*;函数名: Delay;功能: 延时;*Delay procpush axpush bxpush cx push dx mov cx,33144waitf:in al,61hand al,10hcmp al,ahje waitfmov ah,alloop waitfpop dxpop cxpop bxpop axretDel

36、ay endp;*;函数名: Check_key;功能: 处理键盘响应 ;函数返回: Direction的值,gameover的值(按ESC时);*Check_key procpush axpush bxpush cxpush dxpush sipush dimov ah , 01hint 16hjz check_nokey ;如果没有按键就继续mov ah , 0 ;取得扫描码 int 16hpush ax cmp ah , SPACEjnz S2S1:mov ah,0int 16hcmp ah, SPACEjnz S1S2:pop axcmp ah , LEFT ;往左移动jz check

37、_LEFTcmp ah , RIGHT ;往右边移动jz check_RIGHTcmp ah , UP ;往上移动jz check_UPcmp ah , DOWN ;往下移动jz check_DOWNcmp ah , QUIT ;结束游戏jz check_QUITjmp check_nokeycheck_LEFT:mov ah , -1 ;(-1,0)mov al , 0mov bx , ax ;检查是否反向add bx , Directionjz check_nokeymov Direction , axjmp check_nokeycheck_RIGHT:mov ah , 1 ;(1,0)

38、mov al , 0mov bx , ax ;检查是否反向add bx , Directionjz check_nokeymov Direction , axjmp check_nokeycheck_UP:mov ah , 0 ;(0,-1)mov al , -1mov bx , Direction ;检查是否反向sub bl , 1jz check_nokey mov Direction , axjmp check_nokeycheck_DOWN:mov ah , 0 ;(0,1)mov al , 1 mov bx , Direction ;检查是否反向add bl , 1jz check_

39、nokeymov Direction , axjmp check_nokeycheck_QUIT:jmp check_exitcheck_exit: ;按下ESC键的情况mov gameover,1check_nokey:mov ah,0chmov al,0int 21hpop dipop sipop dxpop cxpop bxpop axretCheck_key endp;*;函数名: Check_die;功能: 处理死亡的响应;传递参数: SI,DI为当前蛇头部的坐标 ;函数返回: 蛇参数的值;*Check_die procpush axpush bxpush cxpush dxpush

40、 sipush dicmp si , 50 ;检查是否到达边界jz deadcmp si , 255jz deadcmp di , 50jz deadcmp di , 255jz deadmov ax,si ;检查是否接触蛇身mov dh,al ;DX中获得当前坐标mov ax,dimov dl,almov cx,0mov cl, Lensub cl,1 mov bx,offset Bodycheck_die_loop:add bx , 2mov ax , bxcmp ax , dx ;取出蛇身信息进行比较jz dead ;触及蛇身即死亡loop check_die_loopjmp nextd

41、ead:mov gameover,1 ;死亡即赋gameover值1next:pop dipop sipop dxpop cxpop bxpop axretCheck_die endp;*;函数名: Check_eat;功能: 处理吃到食物的响应;传递参数: SI,DI为当前蛇头部的坐标 ;函数返回: cx;*Check_eat procpush axpush bxpush dxpush sipush dimov cx,0mov ax , foodxmov bx , foodycmp ax , sijz ok1jmp check_eat_outok1: ;横坐标相等cmp bx , dijz

42、ok2jmp check_eat_outok2: ;纵坐标也相等 add point,1 ;加分mov cx,1check_eat_out:pop dipop sipop dxpop bxpop axretCheck_eat endp;*;函数名: Run_snake;功能: 蛇运动;*run_snake procpush axpush bxpush cxpush dxpush sipush dimov dx, 0005hcall SetGbmov bl,whitelea bp,msg6mov cx,30call Msgloop1:call Delaymov al,1cmp al,gameov

43、erjz stopmov bx , offset Bodymov cx,0mov cl,Lenadd bx,cxadd bx,cxsub bx,2A1:mov ax,bx mov bx+2,axsub bx,2loop A1addhead: mov bx , offset Body ;增加新头部并改写数据mov ax , bxmov dx , Directionadd ah , dh ;坐标加方向add al , dl ;坐标加方向mov bx , ax ;存入头部mov dx,0 ;为check_die准备参数si,dimov dl , ahmov si , dxmov dl , almov

44、 di , dxcall check_die ;检查死亡mov al,1cmp al,gameoverjz stop call check_eat ;检查吃cmp cx,1jz A2 mov bx , offset Bodymov ax,0add Len,1mov al , Lenadd bx , ax ;取到蛇尾add bx , axsub bx , 2mov ax , bxmov cx,0mov bx,cxmov dx,0mov dl , ahmov si , dxmov dl , almov di , dxsub Len,1call clearcutmov bx , offset Bod

45、ymov ax, bxmov dx,0mov dl , ahmov si , dxmov dl , almov di , dxcall cutsnakejmp A3A2:add Len,1mov bx , offset Bodymov ax, bxmov dx,0mov dl , ahmov si , dxmov dl , almov di , dxcall cutsnake ;画新头部call getfoodA3:call show_pointcall check_key ;检查按键jmp loop1 ;蛇运动循环DATAS SEGMENTstop:pop dipop sipop dxpop

46、 cxpop bxpop axretrun_snake endp;*;函数名: Init_snake;功能: 蛇初始化;*Init_snake procpush axpush bxpush cxpush dxpush sipush dimov al , 4mov Len, al ;蛇的初始大小为4mov ax,256 ;初始方向为右mov Direction,axmov gameover,0mov point,0mov bx , offset Bodymov ch , 25 ;蛇的初始位置设为25,25mov cl , 25mov bx , cxmov cx,3init_first: ;生成第

47、一个蛇mov ax , bxmov dx , Directionsub ah , dh ;坐标x减方向sub al , dl ;坐标y减方向add bx , 2mov bx , ax ;保存一格蛇的信息loop init_firstinit_print: ;开始画第一个蛇mov cx,0mov cl, Lenmov dx,0mov bx , offset Bodyinit_print_loop:mov ax , bxmov dl , ahmov si , dxmov dl , almov di , dxcall cutsnake ;画一格add bx , 2loop init_print_loopInit_over:pop dipop sipop dxpop cxpop bxpop axretInit_snake endp;*;函数名: clear_area;功

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!