版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 1 需求分析</b></p><p><b> 1.1 設(shè)計背景</b></p><p> 幾乎每個人都玩過這個游戲,也是人們接觸最多的一款游戲,諾基亞手機的流行使它成為大家隨手就能玩的經(jīng)典游戲,它一直為大家所愛,以前的俄羅斯方塊程序都是采用的是黑白色,顏色單調(diào)乏味,現(xiàn)如今彩屏技術(shù)的成熟運用,更使這款小游戲的種類
2、變化到無法統(tǒng)計,畫面更加炫麗,功能更加完善,玩法也是層出不窮。在當今色彩斑斕的信息時代不能在在顏色方面吸引更多的玩家,特別是喜歡畫面鮮艷的小朋友的注意,這就意味著將失去很多的市場,鑒于此編寫一個變換顏色的方塊就可以符合廣大玩家對色彩的需求。</p><p><b> 1.2 設(shè)計目的</b></p><p> 盡管這是一項十分成熟的技術(shù),但是對于匯編程序的初學者來
3、說還是值得學習的,因為這款經(jīng)典的小游戲包含了對計時、功能鍵、圖像顯示、背景音樂、邏輯跳轉(zhuǎn)等眾多的編程基礎(chǔ)技術(shù),具有代表性意義。</p><p> 按照匯編語言程序設(shè)計的基本原理,綜合運用所學的知識,以小組為單位,設(shè)計開發(fā)一個小型的俄羅斯方塊。通過對一個實際問題的分析、設(shè)計與實現(xiàn),將原理與應用相結(jié)合,使學生學會如何把書本上學到的知識用于解決實際問題,培養(yǎng)學生的動手能力;另一方面,使學生能深入理解和靈活掌握教學內(nèi)容
4、。</p><p><b> 1.3 設(shè)計內(nèi)容</b></p><p> 方塊移動、旋轉(zhuǎn);顯示分數(shù);參數(shù)設(shè)置;菜單功能;文件操作。</p><p><b> 1.4 設(shè)計要求</b></p><p> ?。?)方塊左右移動、落下、旋轉(zhuǎn);</p><p> (2)顯示分
5、數(shù)、游戲進行時間和當前時間日期;</p><p> ?。?)參數(shù)設(shè)置:如修改功能鍵、音樂、改變顏色、速度、屏幕分辨率等;</p><p> ?。?)菜單功能:如開始、結(jié)束、暫停、設(shè)置環(huán)境參數(shù)等;</p><p> ?。?)文件操作:讀文件、寫文件等(如環(huán)境和參數(shù)設(shè)置等);</p><p> ?。?)預先顯示下一個方塊;</p>
6、<p><b> 2 設(shè)計方案</b></p><p><b> 2.1 設(shè)計思想</b></p><p> 玩家在開始游戲前會選擇游戲難度級別,難度通過方塊下落的速度分為快、中、慢三類。以中為例,進入游戲之后方塊開始掉落,每種方塊的顏色都不同,但其在移動、變形等操作時只改變形狀,不改變顏色,每個方塊下落開始同時右上方會顯示下一個
7、要掉落的方塊及其顏色;當方塊不能再落下,即與已落下的方塊堆在一起時顏色會變?yōu)楹椭奥湎碌姆綁K一樣的顏色,表明這個方塊已不能操作,此時分數(shù)加1;若某一行堆滿,則消去這一行,此時分數(shù)加10,;這期間方塊下落一行,每消除一行都有聲音提示。當方塊不能再掉下時,游戲結(jié)束,按任意鍵結(jié)束游戲。</p><p><b> 2.2 設(shè)計模塊</b></p><p> 對俄羅斯方塊游
8、戲項目計劃劃分為四個模塊,分別為初始化設(shè)置和窗口函數(shù)相關(guān)模塊、繪制表格模塊、方塊左右移動旋轉(zhuǎn)模塊、方塊下落模塊。其中繪制表格模塊、方塊左右移動旋轉(zhuǎn)模塊、方塊下落模塊是先決條件。在該模塊完成的基礎(chǔ)上,初始化設(shè)置和窗口函數(shù)相關(guān)模塊才能得以實現(xiàn)。</p><p> 對初始化設(shè)置和窗口函數(shù)相關(guān)模塊:該模塊實現(xiàn)對全局變量的初始化,對窗口中菜單進行設(shè)置。窗口函數(shù)則實現(xiàn)對窗口類的注冊,生成窗口,以及對窗口事件的處理。其具體功
9、能的實現(xiàn)是要用的其他功能模塊的子程序。</p><p> 該模塊還需要實現(xiàn)背景音樂、游戲等級、方塊背景色更改等附加功能。</p><p><b> 3 詳細設(shè)計</b></p><p> 3.1 程序設(shè)計流程圖</p><p> 3.2 程序參數(shù)說明</p><p> 表3.1 程序參數(shù)
10、表</p><p><b> 3.3 程序源代碼</b></p><p> DATA SEGMENT</p><p> SEGMENT1C DW 0</p><p> OFF1C DW 0</p><p> BOARD DW 24 DUP(?),0FFF
11、FH</p><p> Y DB ?</p><p> TY DB ?</p><p> XR DB ?</p><p> XL DB ?</p><p> NOW DB ?</p><p> DIRE DB ?<
12、;/p><p> NXT DB ?</p><p> TIM DB 0</p><p> SPEED DB 0</p><p> CON DB 0</p><p> DV DB 0</p><p> FLG DB 0</p>&
13、lt;p> PAD DW 0H,3C0H,0H,0H ;第1個方塊形狀(長條)</p><p> DW 100H,100H,100H,100H</p><p> DW 0H,3C0H,0H,0H</p><p> DW 100H,100H,100H,100H</p><p> DW 0
14、H,180H,180H,0H ;第2個方塊形狀(“田”)</p><p> DW 0H,180H,180H,0H</p><p> DW 0H,180H,180H,0H</p><p> DW 0H,180H,180H,0H</p><p> DW 0H,380H,200H,0H
15、 ;第3個方塊形狀(“7”)</p><p> DW 200H,200H,300H,0H</p><p> DW 0H,80H,380H,0H</p><p> DW 0H,300H,100H,100H</p><p> DW 0H,380H,80H,0H ;第4個方塊形狀(
16、反“7”)</p><p> DW 300H,200H,200H,0H</p><p> DW 0H,200H,380H,0H</p><p> DW 100H,100H,300H,0H</p><p> DW 0H,180H,300H,0H ;第5個方塊形狀(反“Z”)</p>&
17、lt;p> DW 100H,180H,80H,0H</p><p> DW 0H,180H,300H,0H</p><p> DW 100H,180H,80H,0H</p><p> DW 0H,300H,180H,0H ;第6個方塊形狀(“Z”)</p><p> DW 80H,180H
18、,100H,0H</p><p> DW 0H,300H,180H,0H</p><p> DW 80H,180H,100H,0H</p><p> DW 0H,380H,100H,0H ;第7個方塊形狀(“⊥”)</p><p> DW 100H,180H,100H,0H</p>
19、<p> DW 100H,380H,0H,0H </p><p> DW 100H,300H,100H,0H</p><p> P1 DW 4 DUP(?)</p><p> P2 DW 4 DUP(?)</p><p> COLOR DB 00001001b,00001010b,00001011b,00001100
20、b,00001101b,00001110b,00000001b </p><p><b> ;七種顏色</b></p><p> NCOLOR DB ?</p><p> SCORE DB 5 DUP('0'),'$'
21、;界面圖形數(shù)據(jù)構(gòu)建</p><p> PADMSG DB 25 DUP(219)</p><p> TMPMSG DB 25 DUP(?)</p><p> STARTMSG1 DB 0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,' ******
22、***********Wellcome*****************',0DH,0AH,'$'</p><p> STARTMSG2 DB ' Please select speed.',0DH,0AH,'$'</p><p> STARTMSG3 DB 20H,20
23、H,' 0. Exit',0DH,0AH,'$'</p><p> STARTMSG4 DB 20H,20H,' 1. Fast',0DH,0AH,'$'</p><p> STARTMS
24、G5 DB 20H,20H,' 2. Middle',0DH,0AH,'$'</p><p> STARTMSG6 DB 20H,20H,' 3. Slow',0DH,0AH,'$'</p><
25、p> STARTMSG7 DB 20H,20H,' ******************************************',0DH,0AH,'$'</p><p> ENDMSG DB 0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,0DH,0AH,'
26、 Thank you for your use!',0DH,0AH,'$'</p><p> SCOREMSG1 DB 201,19 dup(205),187 </p><p> SCOREMSG2 DB
27、 186,' Score: ',186</p><p> SCOREMSG3 DB 204,19 dup(205),185</p><p> SCOREMSG4 DB 186,19 dup(32),186</p><p> SCOREMSG5 DB 18
28、6,19 dup(32),186</p><p> SCOREMSG6 DB 186,19 dup(32),186</p><p> SCOREMSG7 DB 186,19 dup(32),186</p><p> SCOREMSG8 DB 204,19 dup(205),185</p&g
29、t;<p> SCOREMSG9 DB 186,' Left : A ',186</p><p> SCOREMSG10 DB 186,' Right : D ',186</p><p> SCOREMSG11 DB 186,' R
30、otate: W ',186</p><p> SCOREMSG12 DB 186,' Pause : S ',186</p><p> SCOREMSG13 DB 186,'-------------------',186</p><p> SCORE
31、MSG14 DB 186,' Exit : Esc ',186</p><p> SCOREMSG15 DB 200,19 dup(205),188 </p><p> ;186等數(shù)字表示的是形狀</p><p> DATA ENDS </p><p&g
32、t; STACK SEGMENT STACK</p><p> DB 200 DUP(?)</p><p> STACK ENDS </p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK</p><p> START:
33、 MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> PUSH DS ;保存原有1ch中斷</p><p> MOV AL,1CH</p><p> MOV AH,35H </p&g
34、t;<p><b> INT 21H</b></p><p> MOV SEGMENT1C,ES</p><p> MOV OFF1C,BX ;設(shè)置新的1ch中斷 </p><p> MOV DX,OFFSET INT1C</p><
35、p> MOV AX,SEG INT1C</p><p><b> MOV DS,AX</b></p><p> MOV AL,1CH</p><p> MOV AH,25H</p><p><b> INT 21H</b></p><p><b>
36、 POP DS </b></p><p> GAMEOVER: </p><p> MOV AH,00H</p><p> MOV AL,03H</p><p> INT 10H ;游戲結(jié)束 </p><p> SEL
37、ECTSPEED:</p><p> MOV AH,09H</p><p> MOV DX,OFFSET STARTMSG1</p><p><b> INT 21H</b></p><p> MOV DX,OFFSET STARTMSG2</p><p><b> INT 2
38、1H</b></p><p> MOV DX,OFFSET STARTMSG3</p><p><b> INT 21H</b></p><p> MOV DX,OFFSET STARTMSG4</p><p><b> INT 21H</b></p><p&
39、gt; MOV DX,OFFSET STARTMSG5</p><p><b> INT 21H</b></p><p> MOV DX,OFFSET STARTMSG6</p><p><b> INT 21H</b></p><p> MOV DX,OFFSET STARTMSG7&l
40、t;/p><p> INT 21H ;顯示首頁</p><p> MOV AH,08H ;從鍵盤讀入一個數(shù)(8號功能調(diào)用)</p><p><b> INT 21H</b></p><p> SUB AL,'0'</p>
41、;<p><b> MOV CL,AL</b></p><p><b> AND AL,3</b></p><p><b> CMP AL,CL</b></p><p> JNE SELECTSPEED ;以上判斷鍵盤輸入值0到3 就是這句話才</p&g
42、t;<p> ;出現(xiàn)輸入其他數(shù)值重復出現(xiàn)</p><p><b> INC AL</b></p><p><b> INC CL</b></p><p><b> MUL CL</b></p><p> CMP AL,1H</p><
43、;p><b> JE EXIT</b></p><p> MOV SPEED,AL </p><p> MOV AH,00H ;設(shè)置圖形界面,定義成640*480 16色圖形模式</p><p> MOV AL,12H</p><p> INT 10H </p>
44、;<p> MOV AH,0BH ;設(shè)置調(diào)色板: BH 調(diào)色板ID, BL=和ID配套使用的顏色</p><p> MOV BH,01</p><p> MOV BL,00H</p><p> INT 10H </p><p> CALL INITGAME ;開始游戲(
45、屏幕的初始化)</p><p> CALL BEGIN ;開始</p><p> CALL DELAY ;延時</p><p> MOV TIM,0H</p><p> LOOP1: STI</p><p> MOV AL,TIM</p>&
46、lt;p> CMP AL,SPEED</p><p> JG TIME ;大于跳轉(zhuǎn)</p><p><b> MOV AH,1</b></p><p> INT 16H ;取鍵盤緩沖區(qū)狀態(tài)</p><
47、p> JZ LOOP1 ;結(jié)果為0則轉(zhuǎn)移</p><p><b> MOV AH,0</b></p><p> INT 16H ;從鍵盤讀字符 AL=字符碼(A、W、S、D)</p><p> CMP AL,1BH</p>&
48、lt;p><b> JZ EXIT</b></p><p> CMP AL,'a'</p><p><b> JZ KA</b></p><p> CMP AL,'w'</p><p><b> JZ KW</b></p&
49、gt;<p> CMP AL,'d'</p><p><b> JZ KD</b></p><p> CMP AL,'s'</p><p><b> JZ KS</b></p><p> CMP AL,09H</p><
50、p> JNZ TIME</p><p> KS: ;按下S后的操作</p><p> CALL EXIT2</p><p> JMP LOOP1</p><p><b> KA: </b></p><
51、p> CALL LEFT ;按下A后的操作 </p><p> JMP LOOP1</p><p><b> KW: </b></p><p> CALL ROTATE ;按下W后的操作</p><p
52、><b> JMP LOOP1</b></p><p><b> KD: </b></p><p> CALL RIGHT ;按下D后的操作</p><p><b> JMP LOOP1</b></p><p>
53、;<b> TIME: </b></p><p> MOV TIM,0H</p><p><b> CALL DOWN</b></p><p><b> CMP CON,0</b></p><p><b> JE LOOP1</b></p&
54、gt;<p> CALL BEGIN</p><p><b> JMP LOOP1</b></p><p> EXIT: ;80*25的16色文本</p><p> MOV AX,0003H</p><p><b>
55、INT 10H</b></p><p> MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> MOV DX,OFFSET ENDMSG</p><p> MOV AH,09H</p><p> INT 21H
56、 </p><p> MOV DX,OFF1C ;設(shè)置新的1ch中斷</p><p> MOV AX,SEGMENT1C</p><p><b> MOV DS,AX</b></p><p> MOV AL,1CH&
57、lt;/p><p> MOV AH,25H</p><p> INT 21H ;設(shè)置中斷向量</p><p> MOV AX,4C00H</p><p> INT 21H ;帶返回碼終止 AL=返回碼</p
58、><p> INT1C PROC</p><p><b> STI</b></p><p><b> PUSH AX</b></p><p><b> PUSH DX</b></p><p> MOV AX,DATA</p><
59、p><b> MOV DS,AX</b></p><p><b> INC TIM</b></p><p><b> POP DX</b></p><p><b> POP AX</b></p><p><b> IRET<
60、;/b></p><p> INT1C ENDP </p><p> ;*****************************暫停游戲程序**************************</p><p> EXIT2 PROC NEAR</p><p> JMP SHORT EXIT2BEGIN</p>&
61、lt;p> EXIT2BEGIN:</p><p><b> PUSH AX</b></p><p><b> PUSH DS</b></p><p> MOV AX,SEG EXIT2</p><p><b> MOV DS,AX</b></p>
62、<p><b> MOV AH,7</b></p><p><b> INT 21H</b></p><p><b> POP DS</b></p><p><b> POP AX</b></p><p><b> RET&
63、lt;/b></p><p> EXIT2 ENDP</p><p> DELAY PROC NEAR ;延時子程序 </p><p><b> PUSH CX</b></p><p> MOV CX,00FFH</p>
64、<p><b> LOOP20: </b></p><p> LOOP LOOP20 </p><p><b> POP CX</b></p><p><b> RET</b></p><p> DELAY ENDP</p><p&
65、gt; ROTATE PROC NEAR ;方塊變形功能</p><p> MOV SI,OFFSET PAD </p><p> MOV AL,NOW</p><p><b> MOV AH,0H</b></p><p><b> MOV CL,32<
66、/b></p><p><b> MUL CL</b></p><p><b> ADD SI,AX</b></p><p> MOV AL,DIRE</p><p><b> INC AL</b></p><p> AND AL,03H
67、</p><p><b> MOV AH,0H</b></p><p><b> MOV CL,8</b></p><p><b> MUL CL</b></p><p><b> ADD SI,AX</b></p><p>
68、; MOV DI,OFFSET P2</p><p> MOV CX,04H</p><p><b> CLD</b></p><p><b> LOOP12: </b></p><p> PUSH CX</p><p><b> LODSW<
69、;/b></p><p> MOV CL,XR</p><p> SHR AX,CL</p><p> MOV CL,XL</p><p> SHL AX,CL</p><p><b> STOSW</b></p><p>
70、 POP CX</p><p> LOOP LOOP12 </p><p> CALL CHECK</p><p> CMP AL,0H</p><p> JNE SKIP10</p><p> MOV BX,0000H</p><p> CALL DI
71、SPPAD</p><p> CALL COPY21</p><p><b> INC DIRE</b></p><p> AND DIRE,3H </p><p> MOV BH,00H</p><p> MOV BL,NCOLOR</p><p> CAL
72、L DISPPAD</p><p><b> SKIP10: </b></p><p><b> RET</b></p><p> ROTATE ENDP </p><p> RIGHT PROC NEAR ;向右移動功能</p
73、><p> CALL COPY12</p><p> MOV SI,OFFSET P2</p><p> MOV CX,04H</p><p> LOOP7: MOV AX,[SI]</p><p><b> SHR AX,1</b></p><p> MOV [
74、SI],AX</p><p><b> INC SI</b></p><p><b> INC SI</b></p><p> LOOP LOOP7</p><p> CALL CHECK</p><p> CMP AL,0H</p><
75、p> JNE SKIP6</p><p> MOV BX,0000H</p><p> CALL DISPPAD</p><p> CALL COPY21</p><p> CMP XL,0</p><p> JE SKIP7</p><p><b&
76、gt; DEC XL</b></p><p><b> DEC XR</b></p><p> SKIP7: INC XR </p><p> MOV BH,00H</p><p> MOV BL,NCOLOR</p><p> CALL DISPPAD
77、 </p><p><b> SKIP6:</b></p><p><b> RET</b></p><p> RIGHT ENDP </p><p> LEFT PROC NEAR ;向左移動功能</p><
78、p> CALL COPY12 </p><p> MOV SI,OFFSET P2</p><p> MOV CX,04H</p><p> LOOP10: MOV AX,[SI]</p><p><b> SHL AX,1</b></p><p> MOV [SI],AX&l
79、t;/p><p><b> INC SI</b></p><p><b> INC SI</b></p><p> LOOP LOOP10</p><p> CALL CHECK</p><p><b> CMP AL,0H</b></p
80、><p><b> JNE SKIP8</b></p><p> MOV BX,0000H</p><p> CALL DISPPAD</p><p> CALL COPY21</p><p><b> CMP XR,0</b></p><p>
81、;<b> JE SKIP9</b></p><p><b> DEC XR</b></p><p><b> DEC XL</b></p><p><b> SKIP9: </b></p><p><b> INC XL </
82、b></p><p> MOV BH,00H</p><p> MOV BL,NCOLOR</p><p> CALL DISPPAD </p><p><b> SKIP8: </b></p><p><b> RET</b></p><
83、;p> LEFT ENDP </p><p> DOWN PROC NEAR ;下落功能</p><p> CALL COPY12 </p><p><b> INC TY</b></p><p> CALL CHECK</p><
84、p> CMP AL,0H ;判斷是否還能下落</p><p> JNE SKIP5</p><p> MOV BX,0000H</p><p> CALL DISPPAD</p><p> CALL COPY21</p><p> M
85、OV BH,00H</p><p> MOV BL,NCOLOR</p><p> CALL DISPPAD</p><p> MOV CON,00H</p><p><b> RET</b></p><p> SKIP5:
86、 ;不能下落</p><p> CALL PUT ;調(diào)用放置方塊程序</p><p> MOV CON,01H</p><p><b> RET</b></p><p> DOWN ENDP </p><
87、;p> ;***************************放置方塊程序***********************************</p><p> PUT PROC NEAR</p><p> MOV BH,0H</p><p> MOV BL,0h</p><p> CALL DISPPAD<
88、/p><p> MOV BH,0H</p><p> MOV BL,01011001b</p><p> CALL DISPPAD </p><p> INC SCORE[4]</p><p> MOV DV,01H</p><p> MOV AH,0H</p>
89、<p><b> MOV AL,Y</b></p><p><b> ADD AL,Y</b></p><p> MOV SI,OFFSET BOARD</p><p> ADD SI,AX</p><p> MOV DI,00H</p><p>
90、; MOV CX,04H</p><p><b> CLD</b></p><p><b> LOOP15: </b></p><p><b> LODSW</b></p><p> OR AX,P1[DI]</p><p> M
91、OV [SI-2],AX</p><p><b> INC DI</b></p><p><b> INC DI</b></p><p> LOOP LOOP15 </p><p> MOV SI,OFFSET BOARD</p><p> A
92、DD SI,23*2</p><p> MOV DI,SI</p><p> MOV CX,20</p><p> MOV BH,00H </p><p> MOV FLG,00H</p><p><b> STD</b></p&g
93、t;<p><b> LOOP13: </b></p><p><b> LODSW</b></p><p> CMP AX,0FFFFH</p><p> JNE SKIP12</p><p> MOV FLG,0FFH</p><p><b&
94、gt; MOV AL,DV</b></p><p><b> SAL AL,1</b></p><p><b> MOV DV,AL</b></p><p> JMP LOOP13</p><p><b> SKIP12: </b></p>
95、<p> STOSW </p><p><b> ;PUSH AX</b></p><p> CMP FLG,0H</p><p> JE SKIP70</p><p> PUSH CX</p><
96、p> MOV DH,CL</p><p> ADD DH,03H </p><p> MOV DL,0AH</p><p> MOV BX,0000H</p><p> MOV BP,OFFSET PADMSG</p><p> MOV CX,20<
97、;/p><p> PUSH AX</p><p> MOV AX,1300H</p><p> INT 10H</p><p> POP AX </p><p> MOV CL,03H</p><p> SHL AX,CL</p>
98、<p> MOV CX,0AH</p><p> MOV DL,08H</p><p><b> LOOP14: </b></p><p> INC DL</p><p> INC DL</p><p> MOV BL,0H<
99、/p><p> SHL AX,1</p><p> JNC SKIP11</p><p> MOV BL,01011001b</p><p><b> SKIP11: </b></p><p> CALL DISPCELL</p><p>
100、; LOOP LOOP14</p><p> POP CX</p><p><b> SKIP70: </b></p><p> LOOP LOOP13 </p><p> MOV AL,DV</p><p> SAR AL,1</p>
101、<p> ADD SCORE[3],AL</p><p> MOV CX,05H</p><p> MOV SI,04H</p><p><b> LOOP16:</b></p><p> CMP SCORE[SI],'9'</p><p> JN
102、G SKIP13</p><p> INC SCORE[SI-1]</p><p> SUB SCORE[SI],0AH</p><p><b> SKIP13:</b></p><p><b> DEC SI</b></p><p> LOOP LOOP16<
103、;/p><p><b> RET</b></p><p> PUT ENDP </p><p> ;*******************************顯示得分子程序*******************************</p><p> DISPSCORE PROC NEAR
104、 </p><p> MOV AX,DATA</p><p><b> MOV ES,AX</b></p><p> MOV BP,OFFSET SCORE</p><p> MOV CX,05H ;字符串的長度</p><p
105、> MOV DX,0635H ;DH/DL起始行/列</p><p> MOV BH,0H ;BH頁號</p><p> MOV AL,0H ;BH頁號</p><p> MOV BL,00110100B
106、 ;BL屬性</p><p> MOV AH,13H</p><p> INT 10H ;顯示字符串</p><p><b> RET</b></p><p> DISPSCORE ENDP </p>&l
107、t;p> ;***************************顯示下一個要出現(xiàn)的方塊形狀************************</p><p> DISPNEXT PROC NEAR </p><p> MOV AX,DATA</p><p><b> MOV ES,AX</b></p>
108、<p> MOV BP,OFFSET TMPMSG</p><p><b> MOV DI,BP</b></p><p> MOV SI,OFFSET PAD</p><p> MOV AL,NXT</p><p><b> MOV AH,0</b></p>&l
109、t;p><b> MOV BL,32</b></p><p><b> MUL BL</b></p><p> ADD SI,AX </p><p><b> CLD</b></p><p> MOV CX,04H</p><p> L
110、OOP8: ;循環(huán)隨機取下一個方塊</p><p><b> PUSH CX </b></p><p> LODSW ;塊裝入指令 </p><p> MOV CL,06H</p><p><b
111、> SHL AX,CL</b></p><p> MOV CX,04H</p><p><b> LOOP9:</b></p><p> MOV BL,20H</p><p><b> SHL AX,1</b></p><p><b&
112、gt; JNC SKIP2</b></p><p> MOV BL,219 ;負責右邊提示框中的下一個圖形顯示的像素</p><p> SKIP2: MOV [DI],BL</p><p><b> INC DI</b></p><p> MOV [D
113、I],BL</p><p><b> INC DI</b></p><p> LOOP LOOP9</p><p> MOV DX,0c30H</p><p><b> POP CX</b></p><p> SUB DH,CL</p><
114、p><b> PUSH CX</b></p><p> MOV CX,08H</p><p><b> MOV BH,0H</b></p><p><b> PUSH SI</b></p><p> MOV AH,0H</p><p>
115、; MOV AL,NXT</p><p> MOV SI,AX</p><p> MOV BL,COLOR[SI]</p><p><b> POP SI</b></p><p> MOV AX,1300H</p><p><b> INT 10H</b>
116、;</p><p><b> POP CX</b></p><p><b> MOV DI,BP</b></p><p> LOOP LOOP8</p><p><b> RET</b></p><p> DISPNEXT ENDP </
117、p><p> ;********************************************************************</p><p> COPY21 PROC NEAR</p><p><b> CLD</b></p><p> MOV SI,OFFSET P2</p>
118、<p> MOV DI,OFFSET P1</p><p><b> MOV CX,08</b></p><p> REP MOVSB ;移下一行</p><p><b> MOV CL,TY</b></p><p>&
119、lt;b> MOV Y,CL</b></p><p><b> RET</b></p><p> COPY21 ENDP </p><p> ;*********************************************************************</p><p&g
120、t; COPY12 PROC NEAR</p><p><b> CLD</b></p><p> MOV SI,OFFSET P1</p><p> MOV DI,OFFSET P2</p><p><b> MOV CX,08</b></p><p> REP
121、 MOVSB ;移下一行</p><p><b> MOV CL,Y</b></p><p><b> MOV TY,CL</b></p><p><b> RET</b></p><p> COPY12 EN
122、DP </p><p> ;*********************************************************************</p><p> BEGIN PROC NEAR</p><p> MOV AL,NXT</p><p> MOV NOW,AL</p><p>
123、; CALL RANDOM</p><p> CALL DISPSCORE</p><p> CALL DISPNEXT</p><p> ;FORMAT VALUE</p><p> MOV DIRE,0</p><p><b> MOV Y,4</b></p><
124、;p><b> MOV TY,4</b></p><p><b> MOV XR,0</b></p><p><b> MOV XL,0</b></p><p><b> MOV AH,0</b></p><p> MOV AL,NOW&l
125、t;/p><p><b> MOV SI,AX</b></p><p> MOV CL,COLOR[SI]</p><p> MOV NCOLOR,CL</p><p> MOV DI,OFFSET P2</p><p> MOV SI,OFFSET PAD</p><p
126、><b> MOV BL,32</b></p><p><b> MUL BL</b></p><p> ADD SI,AX </p><p><b> MOV CX,08</b></p><p><b> CLD</b></p>
127、;<p> REP MOVSB ;移下一行</p><p> CALL COPY21</p><p> MOV BH,0H</p><p> MOV BL,NCOLOR</p><p> CALL DISPPAD</p><p> CALL CHECK
128、</p><p><b> CMP AL,0</b></p><p> JE SKIP1</p><p> MOV DL,07H</p><p> MOV AH,02H</p><p><b> INT 21H</b></p><p&
129、gt; MOV AH,08H</p><p><b> INT 21H</b></p><p> JMP GAMEOVER</p><p><b> SKIP1: </b></p><p> CALL DELAY</p><p> MOV TIM,0H<
130、;/p><p><b> RET</b></p><p> BEGIN ENDP </p><p> ;**************************判斷是否能放置方塊 ***************************</p><p> CHECK PROC NEAR ;RETU
131、RN AL=0/F 0:能 F:不能</p><p><b> MOV AH,0H</b></p><p><b> MOV AL,TY</b></p><p><b> ADD AL,TY</b></p><p> MOV SI,OFFSET BOARD<
132、/p><p><b> ADD SI,AX</b></p><p> MOV DI,00H</p><p> MOV CX,04H</p><p><b> CLD</b></p><p> LOOP6: LODSW</p><p> AND
133、 AX,P2[DI]</p><p> JNZ SKIP4</p><p><b> INC DI</b></p><p><b> INC DI</b></p><p> LOOP LOOP6</p><p> MOV AL,00H</p>
134、<p><b> RET</b></p><p><b> SKIP4: </b></p><p> MOV AL,0FH</p><p><b> RET</b></p><p> CHECK ENDP </p><p> ;
135、**************************顯示下落的方塊形狀*****************************</p><p> DISPPAD PROC NEAR ;BX BH=PAGE BL=COLOR</p><p> MOV SI,OFFSET P1</p><p> MOV CX,04H</p>
136、<p> MOV DL,08H</p><p><b> MOV DH,Y</b></p><p> ADD DH,04H</p><p><b> PUSH DX</b></p><p><b> CLD</b></p><p&
137、gt; LOOP2: LODSW </p><p><b> POP DX</b></p><p><b> PUSH DX</b></p><p> SUB DH,CL</p><p><b> PUSH CX</b></p><p&
138、gt; MOV CL,03H</p><p> SHL AX,CL</p><p> MOV CX,0AH</p><p> LOOP3: INC DL</p><p><b> INC DL</b></p><p><b> SHL AX,1</b&g
139、t;</p><p> JNC SKIP3</p><p> CALL DISPCELL </p><p> SKIP3: LOOP LOOP3</p><p><b> POP CX</b></p><p> LOOP LOOP2</p><p>&l
140、t;b> POP DX</b></p><p><b> RET</b></p><p> DISPPAD ENDP </p><p> ;***************************方塊在下降時界面的保護***********************</p><p> DISP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《c++俄羅斯方塊》課程設(shè)計--俄羅斯方塊
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 課程設(shè)計---俄羅斯方塊
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- c課程設(shè)計--俄羅斯方塊
- 俄羅斯方塊單片機課程設(shè)計作品說明書
- 俄羅斯方塊課程設(shè)計報告
- 俄羅斯方塊課程設(shè)計報告
- 簡單俄羅斯方塊課程設(shè)計
- java俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計論文
- arm課程設(shè)計俄羅斯方塊
- 課程設(shè)計--俄羅斯方塊設(shè)計報告
- c_課程設(shè)計-俄羅斯方塊
- c++俄羅斯方塊課程設(shè)計
評論
0/150
提交評論