單片機(jī)課程設(shè)計(jì)報(bào)告俄羅斯方塊_第1頁
單片機(jī)課程設(shè)計(jì)報(bào)告俄羅斯方塊_第2頁
單片機(jī)課程設(shè)計(jì)報(bào)告俄羅斯方塊_第3頁
單片機(jī)課程設(shè)計(jì)報(bào)告俄羅斯方塊_第4頁
單片機(jī)課程設(shè)計(jì)報(bào)告俄羅斯方塊_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、單片機(jī)原理及應(yīng)用課程設(shè)計(jì)報(bào)告基于mcs-51單片機(jī)的俄羅斯方塊游戲設(shè)計(jì)學(xué) 號(hào) u200911880 姓 名 楊 欣 同 組 成 員 黃 濤 專 業(yè) 電氣工程及其自動(dòng)化 班 級(jí) 0905 班 指 導(dǎo) 教 師 黃 勁 院(系、所) 電氣與電子工程學(xué)院 華中科技大學(xué)教務(wù)處制目錄一、課程設(shè)計(jì)的目的4二、題目要求4三、原理概述4四、調(diào)試過程4五、驗(yàn)收結(jié)果4六、個(gè)人體會(huì)10七、參考文獻(xiàn)10八、致謝10附錄一:外電路原理圖11附錄二:程序清單12一、課程設(shè)計(jì)的目的1. 加深對(duì)單片機(jī)的理解,熟悉單片機(jī)的原理,掌握單片機(jī)的編程方法與技巧2. 靈活運(yùn)用單片機(jī)的基礎(chǔ)知識(shí),增強(qiáng)利用理論知識(shí)解決實(shí)際問題的能力二、題目要

2、求 1.驗(yàn)收時(shí),先在仿真機(jī)的led上顯示自己學(xué)號(hào)的后6位,再進(jìn)行相應(yīng)內(nèi)容驗(yàn)收。 2.能在單片機(jī)實(shí)驗(yàn)箱通用板上的液晶顯示屏(lcd)上玩俄羅斯方塊游戲,使用4*4鍵盤輸入,能夠完美實(shí)現(xiàn)俄羅斯方塊的基本游戲內(nèi)容,界面優(yōu)美,最后可以顯示分?jǐn)?shù)和級(jí)別,如果游戲失敗顯示“game over”,最后顯示本人姓名“yang xin”和學(xué)號(hào)“200911880”。3、 原理概述1. 程序整體思路單片機(jī)上的程序設(shè)計(jì)一般是一個(gè)大循環(huán)結(jié)構(gòu),對(duì)于俄羅斯方塊的程序設(shè)計(jì),首先產(chǎn)生一個(gè)偽隨機(jī)數(shù),其范圍是0-6,分別對(duì)應(yīng)俄羅斯方塊中隨機(jī)產(chǎn)生的七種方塊,然后程序根據(jù)此數(shù)值所對(duì)應(yīng)的圖形模塊裝入ram的固定區(qū)域內(nèi),緊接著將此圖像寫入

3、lcd所對(duì)應(yīng)的顯示緩沖區(qū)中,顯示程序?qū)⒕彌_區(qū)內(nèi)的內(nèi)容顯示在顯示屏上,如果沒有控制鍵按下,圖形將自動(dòng)向下移動(dòng)。如果有鍵按下,程序?qū)⒏鶕?jù)按下的鍵來改變圖形存儲(chǔ)區(qū)的值,同時(shí)程序?qū)⑴袛鄨D形是否已到達(dá)邊界,當(dāng)圖形最上層到達(dá)顯示區(qū)頂部,則游戲結(jié)束,此時(shí)將清除顯示緩沖的內(nèi)容,游戲重新開始。2圖形顯示 qh12864t液晶顯示器一共有128*64個(gè)像素點(diǎn),本程序中每個(gè)像素點(diǎn)用一個(gè)坐標(biāo)表示,左上角為(0,0),右下角為(128,64)。對(duì)于顯示類的基本操作是任意點(diǎn)亮一個(gè)點(diǎn),熄滅一個(gè)點(diǎn),任意點(diǎn)亮n個(gè)點(diǎn),滅掉n個(gè)點(diǎn),如此一來游戲的第一個(gè)關(guān)鍵點(diǎn)就完成了。 我們將ram中選取一段為顯示緩沖區(qū),這里面的每一位對(duì)應(yīng)lcd上

4、的的一個(gè)點(diǎn),lcd將實(shí)時(shí)顯示緩沖區(qū)的內(nèi)容,也就是當(dāng)此緩沖區(qū)內(nèi)容一改變,lcd上看到的也會(huì)做出相應(yīng)的改變。同時(shí)游戲中的那些方塊被存放在一個(gè)類似于一維的數(shù)組之中,每一個(gè)方塊對(duì)應(yīng)四個(gè)小方塊,根據(jù)偽隨機(jī)數(shù)將這四個(gè)小方塊對(duì)應(yīng)的值裝入ram固定的區(qū)域內(nèi)。如果要顯示方塊只需將這些方塊所對(duì)應(yīng)的點(diǎn)寫入緩沖區(qū)就可以了。3消層算法 設(shè)置循環(huán)變量數(shù)r2=128,即總共要掃描128次,每一次循環(huán)過程中檢測此行是否已滿,也就是檢測這一行所對(duì)應(yīng)的存儲(chǔ)單元是否全為1,如果全為1則將此行消去,即將此行對(duì)應(yīng)的ram清零。同時(shí)將此行上面ram的內(nèi)容按每列依次下移,下移完之后重新令r2=0,又從第一行開始檢測。此行不全為零時(shí)只需令r

5、2=r2+1,直到r2=128消層過程結(jié)束。4旋轉(zhuǎn)算法首先要確定一個(gè)旋轉(zhuǎn)中心,假如旋轉(zhuǎn)中心的編號(hào)是n,將n除以64,商是m存入r1余數(shù)是l存入r2,及時(shí)用商和余數(shù)建立坐標(biāo)系。此時(shí)若以此為旋轉(zhuǎn)中心的圖形需要旋轉(zhuǎn),則將每一個(gè)小方塊對(duì)應(yīng)編號(hào)除以64,商減去r1,余數(shù)減去r2,而每一個(gè)方塊一次將旋轉(zhuǎn)90度,所以有公式x1,y1,x2,y2 , x2= - y1,y2= x1,其中x1,y1為旋轉(zhuǎn)之前的坐標(biāo),x2,y2為旋轉(zhuǎn)之后的坐標(biāo)。旋轉(zhuǎn)完之后將x2加上r1將y2加上r2,然后將x2乘以64再加上y2。執(zhí)行四次,此過程旋轉(zhuǎn)結(jié)束。4、 調(diào)試過程1、學(xué)號(hào)顯示部分單獨(dú)調(diào)試 這個(gè)在之前的很多實(shí)驗(yàn)中都有涉及,程

6、序較為簡單,語句也不復(fù)雜,本實(shí)驗(yàn)中才用的是并行動(dòng)態(tài)顯示,調(diào)試一次成功。2、 游戲程序調(diào)試相關(guān)5、 驗(yàn)收結(jié)果下圖為當(dāng)時(shí)的整個(gè)實(shí)驗(yàn)裝置:實(shí)驗(yàn)中,游戲隨機(jī)產(chǎn)生方塊按下控制鍵,方塊旋轉(zhuǎn):按下控制鍵,方塊加速下落方塊下落到底部,最底層被填滿:最底層填滿后,自動(dòng)消去這一層:隨機(jī)產(chǎn)生下一個(gè)方塊,每次產(chǎn)生方塊完全隨機(jī):最后一幅圖為游戲結(jié)束后,顯示所得分?jǐn)?shù),每消去一行得到一分,顯示“game over”和游戲者姓名學(xué)號(hào)。本次實(shí)驗(yàn)?zāi)J(rèn)游戲者為本人yang xin(楊欣),學(xué)號(hào)(u)200911880六、個(gè)人體會(huì) 在這次實(shí)驗(yàn)過程中,特別是調(diào)試的時(shí)候,如果能夠順利排除bug實(shí)現(xiàn)程序預(yù)定功能是最讓人開心的,這個(gè)過程也會(huì)

7、讓我很享受。但是如果由于一些搞不清楚的原因遲遲達(dá)不到目標(biāo),也是最讓人煩躁的。而其中的問題,只能漫無目的地去嘗試,無法在邏輯中得到答案,我個(gè)人遇到了這種狀況,確實(shí)很無奈。不知道是否是因?yàn)槲业姆治霾坏轿?,而?shí)際上有一個(gè)合乎邏輯的答案在那里呢?這次課程設(shè)計(jì),第一周主要是在修改程序的驅(qū)動(dòng)部分,從第二周開始上機(jī)調(diào)試,用了差不多半個(gè)月的時(shí)間,最終也沒有成功調(diào)試出結(jié)果,實(shí)在很受打擊,讓我很沮喪。從單片機(jī)課程到單片機(jī)實(shí)驗(yàn)到如今的單片機(jī)課程設(shè)計(jì),我感觸最深的一點(diǎn)就是:必須有耐心、足夠細(xì)心。單片機(jī)程序前前后后有不少聯(lián)系,可能前面用的的某個(gè)變量跟后面重復(fù)、字與字節(jié)搞亂等等細(xì)小的問題,如果不能耐心、細(xì)心地去尋找,很難

8、發(fā)現(xiàn)。最后,我還體會(huì)到了,硬件學(xué)習(xí)是編寫程序前最重要的部分,只有對(duì)所使用的硬件設(shè)備完全了解才能編寫出適合使用的程序,否則會(huì)做很多無用功,浪費(fèi)很多時(shí)間和精力。以后一定要謹(jǐn)記這個(gè)道理!七、主要參考文獻(xiàn)【1】單片機(jī)原理及應(yīng)用 姜志海主編【2】mcs-51系列單片機(jī)原理及應(yīng)用實(shí)驗(yàn)指導(dǎo)書 八、致謝感謝黃勁老師的耐心指導(dǎo)!感謝管理實(shí)驗(yàn)室的老師多日來為我們開放實(shí)驗(yàn)室!附錄一:電路原理圖按鍵與單片機(jī)連接:按照4*4鍵盤上的布置,游戲控制鍵分別為:move_left 8 ,move_right a,add_speed 9,change_shape d,game_star c,game_pause e液晶顯示器與

9、單片機(jī)的連接:附錄二:程序清單:(因程序繁多,此處只列出.c文件程序,如果老師要看完成程序,請(qǐng)看電子檔報(bào)告)1. starpup.c$nomod51;-; this file is part of the c51 compiler package; copyright (c) 1988-2005 keil elektronik gmbh and keil software, inc.; version 8.01; * <<< use configuration wizard in context menu >>> *;-; startup.a51: this

10、 code is executed after processor reset.; to translate this file use a51 with the following invocation:; a51 startup.a51; to link the modified startup.obj file to your application use the following; lx51 invocation:; lx51 your object file list, startup.obj controls;-; user-defined <h> power-on

11、 initialization of memory; with the following equ statements the initialization of memory; at processor reset can be defined:; <o> idatalen: idata memory size <0x0-0x100> <i> note: the absolute start-address of idata memory is always 0; <i> the idata space overlaps physically

12、 the data and bit areas.idatalen equ 80h; <o> xdatastart: xdata memory start address <0x0-0xffff> ; <i> the absolute start address of xdata memoryxdatastart equ 0 ; <o> xdatalen: xdata memory size <0x0-0xffff> ; <i> the length of xdata memory in bytes.xdatalen equ

13、 0 ; <o> pdatastart: pdata memory start address <0x0-0xffff> ; <i> the absolute start address of pdata memorypdatastart equ 0h; <o> pdatalen: pdata memory size <0x0-0xff> ; <i> the length of pdata memory in bytes.pdatalen equ 0h;</h>-;<h> reentrant sta

14、ck initialization; the following equ statements define the stack pointer for reentrant; functions and initialized it:; <h> stack space for reentrant functions in the small model.; <q> ibpstack: enable small model reentrant stack; <i> stack space for reentrant functions in the small

15、 model.ibpstack equ 0 ; set to 1 if small reentrant is used.; <o> ibpstacktop: end address of small model stack <0x0-0xff> <i> set the top of the stack to the highest location.ibpstacktop equ 0xff +1 ; default 0ffh+1 ; </h> <h> stack space for reentrant functions in the

16、 large model. ; <q> xbpstack: enable large model reentrant stack; <i> stack space for reentrant functions in the large model.xbpstack equ 0 ; set to 1 if large reentrant is used.; <o> xbpstacktop: end address of large model stack <0x0-0xffff> <i> set the top of the stac

17、k to the highest location.xbpstacktop equ 0xffff +1 ; default 0ffffh+1 ; </h> <h> stack space for reentrant functions in the compact model. ; <q> pbpstack: enable compact model reentrant stack; <i> stack space for reentrant functions in the compact model.pbpstack equ 0 ; set

18、to 1 if compact reentrant is used.; <o> pbpstacktop: end address of compact model stack <0x0-0xffff> <i> set the top of the stack to the highest location.pbpstacktop equ 0xff +1 ; default 0ffh+1 ; </h></h>-; memory page for using the compact model with 64 kbyte xdata ra

19、m; <e>compact model page definition; <i>define the xdata page used for pdata variables. ; <i>ppage must conform with the ppage set in the linker invocation.; enable pdata memory page initalizationppageenable equ 0 ; set to 1 if pdata object are used.; <o> ppage number <0x0

20、-0xff> ; <i> uppermost 256-byte address of the page used for pdata variables.ppage equ 0; <o> sfr address which supplies uppermost address byte <0x0-0xff> ; <i> most 8051 variants use p2 as uppermost address byteppage_sfr data 0a0h; </e>-; standard sfr symbols acc da

21、ta 0e0hb data 0f0hsp data 81hdpl data 82hdph data 83h name ?c_startup?c_c51startup segment code?stack segment idata rseg ?stack ds 1 extrn code (?c_start) public ?c_startup cseg at 0?c_startup: ljmp startup1 rseg ?c_c51startupstartup1:if idatalen <> 0 mov r0,#idatalen - 1 clr aidataloop: mov r

22、0,a djnz r0,idataloopendifif xdatalen <> 0 mov dptr,#xdatastart mov r7,#low (xdatalen) if (low (xdatalen) <> 0 mov r6,#(high (xdatalen) +1 else mov r6,#high (xdatalen) endif clr axdataloop: movx dptr,a inc dptr djnz r7,xdataloop djnz r6,xdataloopendifif ppageenable <> 0 mov ppage_s

23、fr,#ppageendifif pdatalen <> 0 mov r0,#low (pdatastart) mov r7,#low (pdatalen) clr apdataloop: movx r0,a inc r0 djnz r7,pdataloopendifif ibpstack <> 0extrn data (?c_ibp) mov ?c_ibp,#low ibpstacktopendifif xbpstack <> 0extrn data (?c_xbp) mov ?c_xbp,#high xbpstacktop mov ?c_xbp+1,#l

24、ow xbpstacktopendifif pbpstack <> 0extrn data (?c_pbp) mov ?c_pbp,#low pbpstacktopendif mov sp,#?stack-1; this code is required if you use l51_bank.a51 with banking mode 4;<h> code banking; <q> select bank 0 for l51_bank.a51 mode 4#if 0 ; <i> initialize bank mechanism to code

25、 bank 0 when using l51_bank.a51 with banking mode 4.extrn code (?b_switch0) call ?b_switch0 ; init bank mechanism to code bank 0#endif;</h> ljmp ?c_start end2. fangkuai.c#include "t6963c.h"#include "typedef.h"#include "key.h"#define x_start 5#define y_start 0#defi

26、ne min_slow_speed 300#define bx_start 30#define by_start 15#define nothing 100/全局?jǐn)?shù)據(jù)code uchar game_char=0x27,0x41,0x4d,0x45;code uchar over_char=0x2f,0x56,0x45,0x52; static uchar xx,yy; /方塊的位置static uint game_score=0;static uchar xdata platform1421; /游戲平臺(tái)數(shù)據(jù)static uchar this_shape;/當(dāng)前形狀static uchar n

27、ext_shape=0;static uint game_speed=min_slow_speed; /等級(jí)速度,正常情況,方塊下降的速度static uchar game_stop=1;static uchar game_level=0;/方塊形狀的定義/struct point uchar x; uchar y; ;struct shape struct point point4; uchar next;/下一個(gè)形狀 xdata shape19= 1,0,0,1,1,1,2,1,1 , 1,0,1,1,2,1,1,2,2 , 0,0,1,0,2,0,1,1,3 , 1,0,0,1,1,1,

28、1,2,0 , 1,0,2,0,1,1,1,2,5 , 0,0,1,0,2,0,2,1,6 , 2,0,2,1,2,2,1,2,7 , 0,0,0,1,1,1,2,1,4 , 1,0,2,0,2,1,2,2,9 , 2,0,0,1,1,1,2,1,10 , 1,0,1,1,1,2,2,2,11 , 0,0,1,0,2,0,0,1,8 , 0,0,0,1,1,1,1,2,13 , 1,0,2,0,0,1,1,1,12 , 2,0,1,1,2,1,1,2,15 , 0,0,1,0,1,1,2,1,14 , 1,0,1,1,1,2,1,3,17 , 0,1,1,1,2,1,3,1,16 , 1,0,

29、2,0,1,1,2,1,18 , ; /*/= 函數(shù)原型:void init_gameplatform()/= 功 能: 初始化游戲平臺(tái)/= 參 數(shù): 無/= 返 回 值: 無/= 函數(shù)性質(zhì):公有函數(shù)/= 注 意:/* void show_score(uchar);void init_gameplatform() uchar i; uchar j;/ uchar n_hanzi; wr_line(1,33,13,64,1 );/初始化游戲平臺(tái)邊界畫游戲區(qū)域 wr_line(1,33,14,64,1 ); /畫上橫線 wr_line(0,33,15,100,1); wr_line(0,34,15

30、,100,1); /畫左豎線 wr_line(1,33,115,64,1); wr_line(1,33,116,64,1); /畫下橫線 wr_line(0,95,15,100,1); wr_line(0,96,15,100,1); /畫右豎線/- for(i=1;i<13;i+)/游戲平臺(tái)數(shù)據(jù)清零 for(j=0;j<20;j+) platformij=0; for(i=1;i<13;i+) platformi20=1; /游戲平臺(tái)最下面一行的每一個(gè)方塊位置為,作為下邊界 for(j=0;j<20;j+)/游戲平臺(tái)左右方塊位置置,作為左右邊界 platform0j=1

31、; platform13j=1; /- hanzhi(13,3,6,1); /輸入“分”漢字 hanzhi(13,8,8,1); /輸入“級(jí)”漢字 show_score(0); /顯示初始分?jǐn)?shù) show_num(13,11,game_level); /顯示初始等級(jí)水平 game_speed=min_slow_speed/(game_level+1); /根據(jù)水平確定速度/- game_score=0; xx=x_start ; yy=y_start ;/init_game/void init_game() game_stop=1; init_gameplatform(); hanzhi(7,3

32、,9,1); /輸入“按”漢字 show_num(7,6,7); /顯示7 hanzhi(7,8,10,1); /輸入“開”漢字 hanzhi(7,10,11,1); /輸入“始”漢字/*/= 函數(shù)原型:void xiaofengkuai(uchar x,uchar y,uchar mode)/= 功 能: 顯示一個(gè)小方塊/= 參 數(shù): 小方塊的橫x,堅(jiān)坐標(biāo)y,mode=1:顯示小方塊,mode=0:刪除小方塊/= 返 回 值:/= 函數(shù)性質(zhì):私有函數(shù)/= 注 意:/* void xiaofengkuai(uchar x,uchar y,bit mode) uchar x1=5*x+bx_st

33、art;/將方塊在平臺(tái)的位置轉(zhuǎn)化成的點(diǎn)坐標(biāo)(地址轉(zhuǎn)換) uchar y1=5*y+by_start; uchar i; if(mode=1) for(i=0;i<5;i+) point(x1+i,y1,1); /畫一條橫線 y1+=4; for(i=0;i<5;i+) point(x1+i,y1,1); /畫第二條橫線 for(i=0;i<5;i+) point(x1,y1-i,1); /畫第1條堅(jiān)線 x1+=4; for(i=0;i<5;i+) point(x1,y1-i,1); /畫第2條堅(jiān)線 y1-=4; for(i=0;i<5;i+) point(x1-i

34、,y1+i,1); /畫斜線 else for(i=0;i<5;i+) point(x1+i,y1,0); /畫一條橫線 y1+=4; for(i=0;i<5;i+) point(x1+i,y1,0); /畫第二條橫線 for(i=0;i<5;i+) point(x1,y1-i,0); /畫第1條堅(jiān)線 x1+=4; for(i=0;i<5;i+) point(x1,y1-i,0); /畫第2條堅(jiān)線 y1-=4; for(i=0;i<5;i+) point(x1-i,y1+i,0); /畫斜線 /左沖突檢測/bit left_anti() uchar i; for(

35、i=0;i<4;i+) if(platformxx+shapethis_shape.pointi.x-1yy+shapethis_shape.pointi.y=1) return 1; return 0; /右沖突檢測/bit right_anti() uchar i; for(i=0;i<4;i+) if(platformxx+shapethis_shape.pointi.x+1yy+shapethis_shape.pointi.y=1) return 1; return 0; /下沖突檢測/bit bottom_anti() uchar i; for(i=0;i<4;i+

36、) if(platformxx+shapethis_shape.pointi.xyy+shapethis_shape.pointi.y+1=1) return 1; return 0; /改變形狀時(shí)產(chǎn)生的沖突檢測/bit change_shape_anti() uchar i; for(i=0;i<4;i+) if(platformxx+shapeshapethis_shape.next.pointi.xyy+shapeshapethis_shape.next.pointi.y=1) return 1; /檢測一個(gè)形狀的沖突情況 return 0;/產(chǎn)生一個(gè)隨機(jī)數(shù),返回一個(gè)隨機(jī)數(shù)/uch

37、ar random() static uchar m; m+=49; return (m%19);/計(jì)分函數(shù),參數(shù)為 消行行數(shù)n/void show_score(uchar n) game_score=game_score+10*n; if(game_score<10) show_num(13,6,game_score%10);/顯示個(gè)位 else if(game_score<100) show_num(14,6,game_score%10); show_num(13,6,game_score/10%100);/顯示個(gè)位,十位 else if(game_score<1000)

38、 show_num(14,6,game_score%10); show_num(13,6,game_score/10%10); show_num(12,6,game_score/100%10);/顯示個(gè)位 ,十位,百位 else show_num(15,6,game_score%10); show_num(14,6,game_score/10%10); show_num(13,6,game_score/100%10);/顯示個(gè)位 ,十位,百位,千位 show_num(12,6,game_score/1000); if(game_score%1000=0) if(game_score>0)

39、 game_level+; if(game_level=10) game_stop=1; hanzhi(7,5,12,1); /輸出“太棒了" hanzhi(7,7,13,1); hanzhi(7,9,14,1); show_num(13,11,game_level); /顯示水平 /*/= 函數(shù)原型:void undisplay_line()/= 功 能: 消除行/= 參 數(shù): 無/= 返 回 值: 無/= 函數(shù)性質(zhì):私有函數(shù)/= 注 意:/* void undisplay_line() uchar del_line; /標(biāo)識(shí)要?jiǎng)h除的行 uchar del_line_num=0;

40、/標(biāo)識(shí)刪除的行數(shù) uchar i,j,k; bit havepoint; /標(biāo)識(shí)一行中是否有空白點(diǎn) for(i=0;i<4;i+) for(j=1;j<13;j+) if(platformjyy+i=0) break; /如果這一行中有一個(gè)為空,則退出這一行的循環(huán) else if(j=12) del_line=yy+i; /確定要?jiǎng)h除的行if(del_line<20) del_line_num+; /計(jì)算共刪除的行數(shù)for(k=1;k<13;k+) xiaofengkuai(k,del_line,0); /刪除行platformkdel_line=0; /平臺(tái)數(shù)據(jù)清零w

41、hile(1) /下移 havepoint=0; for(k=1;k<13;k+) if(platformkdel_line-1=1) havepoint=1; /標(biāo)識(shí)這一行有要下移的點(diǎn) xiaofengkuai(k,del_line-1,0); /刪除小方塊 platformkdel_line-1=0; /平臺(tái)數(shù)據(jù)清零 xiaofengkuai(k,del_line,1) ; /將小方塊下移 platformkdel_line=1; /平臺(tái)數(shù)據(jù)置1,表明此位置已被占用 if(havepoint=0) break; /沒有要下移的行,退出本循環(huán) del_line-; /下移上一行 if(del_line_num

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論