版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)原理與接口技術(shù)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目: 貪吃蛇游戲姓名: 班級(jí): 自動(dòng)化 學(xué)號(hào): 同組人: 時(shí)間: 2010年12月 貪吃蛇游戲摘要:貪吃蛇游戲,運(yùn)行游戲后顯示提示界面,按任意鍵進(jìn)入游戲,按esc鍵退出程序。進(jìn)入游戲后有兩遍刷屏,之后進(jìn)入游戲,由方向鍵控制蛇的運(yùn)動(dòng),尋找食物,吃到食物得分,撞到墻壁或蛇身游戲結(jié)束,按空格鍵重新進(jìn)入游戲,按esc鍵回到提示界面,按任意鍵繼續(xù)進(jìn)入游戲,按esc退出程序。目錄1.設(shè)計(jì)任務(wù)和要求32.設(shè)計(jì)小組成員及分工33.軟件編程33.1 軟件流程圖3 3.2 匯編語言程序44.程序運(yùn)行結(jié)果335.設(shè)計(jì)過程中出現(xiàn)的問題及解決方法336.設(shè)計(jì)總結(jié)337.參考文獻(xiàn)34一
2、、設(shè)計(jì)任務(wù)和要求設(shè)計(jì)一個(gè)匯編語言的貪吃蛇游戲簡(jiǎn)要說明:用一個(gè)邊框作為基本顯示屏,連續(xù)移動(dòng)的方格表示一條蛇,用任意出現(xiàn)的一個(gè)方格表示食物,用4條線表示“墻”,用四個(gè)按鍵控制蛇的運(yùn)動(dòng)方向,完成貪食蛇游戲,蛇撞“墻”、邊或者游戲時(shí)間到,則游戲結(jié)束。1. 食物出現(xiàn)的地方是隨機(jī)的;2.顯示得分情況,每吃掉一個(gè)食物就加1100分;3. 游戲時(shí)間不限制。4. 選做:增加游戲難度或自擬其它功能。二、設(shè)計(jì)小組成員及分工成員:鄭瑋 蘇丹分工:鄭瑋:調(diào)試修改程序,擬出課程設(shè)計(jì)報(bào)告內(nèi)容 蘇丹:寫出并整理報(bào)告內(nèi)容三、 軟件編程1.軟件流程圖2.匯編語言程序.model small;*.stack 200;*.data
3、;蛇的參數(shù)以及游戲參數(shù)len db 5 ;蛇的長(zhǎng)度life db 1 ;蛇的生命body dw 200 dup(0) ;蛇的身體位置direction dw 256 ;(0,1)(o,-1)(1,0)(-1,0)score db 'score000000' ;得分snake_color db 09 ;蛇顏色speed db 0 ;速度gameover db 0 ;游戲結(jié)束標(biāo)記point db 0 ;得分?jǐn)?shù)food_color db 04 ;食物色foodx dw ? ;食物坐標(biāo) foody dw ?seed dw 200 ;隨即數(shù)種子;* ;顯示方面的參數(shù) topline dw
4、 20 ;上邊界leftline dw 60 ;左邊界cut_x dw 4 ;每格寬cut_y dw 3 ;每格長(zhǎng)max_x dw 49 ;最大格數(shù)(橫)max_y dw 49 ;最大格數(shù)(縱)msg2 db 'zi dong hua 08-3 ban zheng wei and su dan modify 'msg3 db 'game over!'msg4 db 'press any key to start! esc for exit'msg5 db 'esc for back, space for retry'flash d
5、b 04h ;字體顏色(紅)green db 02h ;字體顏色(綠)yellow db 8eh ;字體顏色(黃)white db 0fh ;字體顏色(白);* ;鍵盤掃描碼left equ 4bh right equ 4dhup equ 48hdown equ 50hquit equ 01hspace equ 39h;* ;logo by bsasciitit1 db ' zzzzzzzzzzzzz dddddddd hhh hhh ' tit2 db ' zzzzzzzzzzzzz dddddddddd hhh hhh'tit3 db ' zzz d
6、dd ddd hhh hhh'tit4 db ' zzz ddd ddd hhh hhh' tit5 db ' zzz ddd ddd hhh hhh'tit6 db ' zzz ddd ddd hhh hhh'tit7 db ' zzz ddd ddd hhh hhh'tit8 db ' zzz ddd ddd hhh hhh'tit9 db ' zzz ddd dddhhhhhhhhhh'tit10 db ' zzz ddd dddhhhhhhhhhh'tit11 db
7、' zzz ddd ddd hhh hhh 'tit12 db ' zzz ddd ddd hhh hhh 'tit13 db ' zzz ddd ddd hhh hhh 'tit14 db ' zzz ddd ddd hhh hhh 'tit15 db ' zzz ddd ddd hhh hhh 'tit16 db 'zzzzzzzzzzzzzzz ddddddddddhhh hhh'tit17 db 'zzzzzzzzzzzzzzz dddddddd hhh hhh'*.code
8、main proc far mov ax , data mov ds , axstart: mov ah , 00 mov al , 12h int 10h ;設(shè)置圖形模式640*480 call show_title ;顯示logo call show_start_msg ;顯示開始提示信息 mov ah , 00h int 16h ;等待按鍵 cmp ah , quit jz dos ;esc則退出,否則進(jìn)入游戲game_start:mov ah , 00;設(shè)置圖形模式320*200,游戲在此模式下運(yùn)行 mov al , 13h int 10h mov cl , 10 ;邊框顏色 mov
9、si , 59 mov bx , 19 mov di , 260 mov dx , 170 call rec ;打印邊框 call clear_area ;游戲區(qū)域清空(效果) call init_snake ;初始化蛇 call getfood ;得到第一個(gè)食物 call run_snake ;開始運(yùn)動(dòng)蛇exit: mov dx , 0c0fh ;設(shè)置光標(biāo) call setgb mov bl , flash ;顯示游戲結(jié)束 lea bp , msg3 mov cx , 11 call msg mov dx , 1605h mov bl , white ;顯示提示信息 lea bp , msg
10、5 mov cx , 29 call msgexit_loop: mov ah , 00h int 16h ;等待按鍵 cmp ah , quit jz start cmp ah , space jz game_start jmp exit_loop ;返回開始dos: mov ah , 00 mov al , 03 int 10h ;設(shè)置文本模式 mov ah , 4ch int 21h ;退出到dosmain endp;*;函數(shù)名: show_start_msg;功能: 顯示開始提示信息;傳遞參數(shù): ;函數(shù)返回: 空;*show_start_msg proc near push ax pu
11、sh bx push cx push dx push si push di mov dx , 190ch ;設(shè)置光標(biāo) call setgb mov bl , white lea bp , msg2 ;顯示作者信息 mov cx , 54 call msg ;顯示字符串 mov dx , 1616h ;設(shè)置光標(biāo) call setgb mov bl , 0a8h lea bp , msg4 ;顯示提示信息 mov cx , 36 call msg ;顯示字符串 pop di pop si pop dx pop cx pop bx pop ax retshow_start_msg endp;*;函數(shù)
12、名: cutsnake;功能: 顯示蛇一段;傳遞參數(shù): ; si/di 游戲空間行/游戲空間列(50*50);函數(shù)返回: 空;*cutsnake proc near push ax push bx push cx push dx push si push di mov cl , snake_color;置顏色 mov ax,di;取坐標(biāo)值 mul cut_y;乘每格長(zhǎng) add ax,topline ;加上邊界 mov bx , ax add ax , 2 mov dx , ax push bx push dx mov ax,si;取坐標(biāo)值 mul cut_x;乘每格寬 add ax,leftl
13、ine ;加左邊界 mov si , ax add ax , 3 mov di , ax pop dx pop bx call rec ;rec的參數(shù)是cl顏色 si左邊 bx上邊 di右邊 dx下邊 pop di pop si pop dx pop cx pop bx pop ax retcutsnake endp;*;函數(shù)名: cutfood;功能: 顯示食物;傳遞參數(shù): ; si/di 游戲空間行/游戲空間列(50*50);函數(shù)返回: 空;*cutfood proc near push ax push bx push cx push dx push si push di mov cl ,
14、 food_color ;置顏色 mov ax,di;取坐標(biāo)值 mul cut_y;乘每格長(zhǎng) add ax,topline ;加上邊界 mov bx , ax add ax , 2 mov dx , ax push bx push dx mov ax,si;取坐標(biāo)值 mul cut_x;乘每格寬 add ax,leftline ;加左邊界 mov si , ax add ax , 3 mov di , ax pop dx pop bx call rec ;rec的參數(shù)是cl顏色 si左邊 bx上邊 di右邊 dx下邊 pop di pop si pop dx pop cx pop bx pop
15、 ax retcutfood endp;*;函數(shù)名: clearcut;功能: 清除格;傳遞參數(shù): ; si/di 游戲空間行/游戲空間列(50*50);函數(shù)返回: 空;*clearcut proc near push ax push bx push cx push dx push si push di mov cl, 0 ;置顏色(黑) mov ax,di ;取坐標(biāo)值 mul cut_y ;乘每格長(zhǎng) add ax,topline ;加上邊界 mov bx , ax add ax , 2 mov dx , ax push bx push dx mov ax,si;取坐標(biāo)值 mul cut_x;
16、乘每格寬 add ax,leftline ;加左邊界 mov si , ax add ax , 3 mov di , ax pop dx pop bx call rec pop di pop si pop dx pop cx pop bx pop ax retclearcut endp;*;函數(shù)名: rand ;功能: 產(chǎn)生指定范圍大小的隨機(jī)數(shù);傳遞參數(shù): ; si 數(shù)字的范圍最大值+1 ;函數(shù)返回: ax 返回隨機(jī)數(shù)的值;*rand proc push bx push cx push dx push si push di sti mov ah,0 ;讀時(shí)鐘計(jì)數(shù)器值 int 1ah mov a
17、x , seed add ax , dx and ax , 8fffh mov seed , ax ;產(chǎn)生新種子 mov dx , 0 mov bx , si ;指定隨機(jī)數(shù)的范圍 div bx mov ax , dx pop di pop si pop dx pop cx pop bx retrand endp;*;函數(shù)名: getfood ;功能: 產(chǎn)生新食物,即隨機(jī)產(chǎn)生一組49*49的坐標(biāo);傳遞參數(shù): ; ;函數(shù)返回: foodx與foody的值;*getfood proc push ax push bx push cx push dx push si push di mov si,50;
18、置隨機(jī)數(shù)范圍(最大值+1) call rand ;產(chǎn)生隨機(jī)數(shù) mov foodx,ax ;賦予食物坐標(biāo)x mov si,50;置隨機(jī)數(shù)范圍(最大值+1) call rand ;產(chǎn)生隨機(jī)數(shù) mov foody,ax ;賦予食物坐標(biāo)y mov si,foodx mov di,foody call cutfood ;畫食物 pop di pop si pop dx pop cx pop bx pop ax retgetfood endp;*;函數(shù)名: delay;功能: 延時(shí);傳遞參數(shù): ;函數(shù)返回: ;*delay proc push ax push cx mov ax , 0ah sub ax
19、, cx mov cx , axm3_1: push cx ;外層循環(huán)來控制延時(shí)速度 mov cx , 5000 m3_2: in al , 61h ;讀8255a的b口 and al , 10h cmp al , ah je m3_1 mov ah , al loop m3_2 pop cx loop m3_1 pop cx pop ax retdelay endp;*;函數(shù)名: check_key;功能: 處理鍵盤響應(yīng);傳遞參數(shù): 無;函數(shù)返回: direction的值,gameover的值(按esc時(shí));*check_key proc push ax push bx push cx pu
20、sh dx push si push di mov ah , 01h int 16h jz check_nokey ;如果沒有按鍵就繼續(xù) mov ah , 00h ;取得掃描碼 int 16h cmp ah , left ;往左移動(dòng) jz check_left cmp ah , right ;往右移動(dòng) jz check_right cmp ah , up;往上移動(dòng) jz check_up cmp ah , down ;往下移動(dòng) jz check_down cmp ah , quit ;結(jié)束游戲 jz check_quit jmp check_nokeycheck_left: mov ah ,
21、-1 ;(-1,0) mov al , 0 mov bx , ax ;檢查是否反向 add bx , direction jz check_nokey mov direction , ax jmp check_nokeycheck_right: mov ah , 1 ;(1,0) mov al , 0 mov bx , ax ;檢查是否反向 add bx , direction jz check_nokey mov direction , ax jmp check_nokeycheck_up: mov ah , 0 ;(0,-1) mov al , -1 mov bx , direction
22、;檢查是否反向 sub bl , 1 jz check_nokey mov direction , ax jmp check_nokeycheck_down:mov ah , 0 ;(0,1) mov al , 1 mov bx , direction ;檢查是否反向 add bl , 1 jz check_nokey mov direction , ax jmp check_nokeycheck_quit:jmp check_exit check_exit:mov al,1 ;按下esc鍵的情況 mov gameover,alcheck_nokey: pop di pop si pop dx
23、 pop cx pop bx pop ax retcheck_key endp;*;函數(shù)名: check_die;功能: 處理死亡的響應(yīng);傳遞參數(shù): si,di為當(dāng)前蛇頭部的坐標(biāo);函數(shù)返回: 蛇參數(shù)的值;*check_die proc push ax push bx push cx push dx push si push di cmp si , 50 ;檢查是否到達(dá)邊界 jz dead cmp si , 255 jz dead cmp di , 50 jz dead cmp di , 255 jz dead mov ax,si;檢查是否接觸蛇身 mov dh,al;dx中獲得當(dāng)前坐標(biāo) mov
24、 ax,di mov dl,al xor cx , cx mov cl , len sub cl , 1 mov bx , offset body check_die_loop: mov ax , bx+2 cmp ax , dx ;取出蛇身信息進(jìn)行比較 jz dead ;觸及蛇身即死亡 dec cl jz next add bx , 2 jmp check_die_loopdead: mov al,1 ;死亡即賦gameover值1 mov gameover,al jmp nextnext: pop di pop si pop dx pop cx pop bx pop ax retcheck
25、_die endp;*;函數(shù)名: check_eat;功能: 處理吃到食物的響應(yīng);傳遞參數(shù): si,di為當(dāng)前蛇頭部的坐標(biāo);函數(shù)返回: 蛇參數(shù)的值;*check_eat proc push ax push bx push cx push dx push si push di mov ax , foodx mov bx , foody cmp ax , si jz ok1 jmp check_eat_outok1: ;橫坐標(biāo)相等 cmp bx , di jz ok2 jmp check_eat_outok2: ;縱坐標(biāo)也相等 mov al , point add al , 1 mov point
26、 , al ;加分 mov bx , offset body;增加蛇長(zhǎng) xor ax , ax mov al , len add bx , ax add bx , ax ;取到蛇尾 sub bx , 2 mov ax , bx mov dx , direction sub ah , dh ;坐標(biāo)減方向 sub al , dl ;坐標(biāo)減方向 add bx , 2 ;新格的存儲(chǔ)位置 mov bx , ax mov al , len ;len+1 add al , 1 mov len , al call getfood ;得到新食物check_eat_out: pop di pop si pop d
27、x pop cx pop bx pop ax retcheck_eat endp;*;函數(shù)名: show_point;功能: 打印分?jǐn)?shù)(進(jìn)制轉(zhuǎn)換);傳遞參數(shù): ;函數(shù)返回: ;*show_point proc push ax push bx push cx push dx push si push di mov al, point ;二進(jìn)制數(shù) mov ah, al ;ah中放高4位 mov al, point and al, 0fh ;al中放低4位 mov bx, offset score;取得目標(biāo)字符串地址 add bx, 7;更改的末位在字串中的位置(后面保留2個(gè)0)b1: cmp al,09h ;低4位大于9跳往b2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年鋼筋行業(yè)產(chǎn)品質(zhì)量保證合同3篇
- 二零二五年度360有錢聯(lián)盟(協(xié)同版)供應(yīng)鏈金融合作框架協(xié)議3篇
- 2025年上教版二年級(jí)語文上冊(cè)月考試卷含答案
- 二零二五年度高端酒店用品定制與分銷合作協(xié)議3篇
- 二零二五版E管材全球市場(chǎng)拓展銷售合同3篇
- 二零二五年度安防監(jiān)控系統(tǒng)工程監(jiān)理合同
- 2025年中圖版七年級(jí)科學(xué)上冊(cè)月考試卷
- 2025年北師大版共同必修2物理下冊(cè)月考試卷含答案
- 2025年冀教新版八年級(jí)科學(xué)上冊(cè)階段測(cè)試試卷含答案
- 2025年湘教新版九年級(jí)生物下冊(cè)階段測(cè)試試卷含答案
- 國家安全教育高教-第六章堅(jiān)持以經(jīng)濟(jì)安全為基礎(chǔ)
- 2024年城市環(huán)衛(wèi)一體化服務(wù)合同
- 工地春節(jié)安全培訓(xùn)
- 2024年代持房屋合作協(xié)議書模板
- 2024短視頻剪輯雇傭合同
- 一年級(jí)數(shù)學(xué)20以內(nèi)加減法口算題(4500道)
- 新概念英語第一冊(cè)Lesson103-104筆記(語法點(diǎn)+配套練習(xí)+答案)
- (正式版)JBT 3300-2024 平衡重式叉車 整機(jī)試驗(yàn)方法
- 產(chǎn)業(yè)園區(qū)活動(dòng)方案策劃
- mil-std-1916抽樣標(biāo)準(zhǔn)(中文版)
- 2024年安徽省合肥市瑤海區(qū)中考語文一模試卷
評(píng)論
0/150
提交評(píng)論