欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      C語言編寫俄羅斯方塊論文

      時(shí)間:2019-05-12 00:12:03下載本文作者:會(huì)員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《C語言編寫俄羅斯方塊論文》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《C語言編寫俄羅斯方塊論文》。

      第一篇:C語言編寫俄羅斯方塊論文

      俄羅斯方塊

      學(xué) 號(hào):

      班 級(jí):

      姓 名:

      指導(dǎo)教師:

      完成日期:2012年5月

      1.引言..............................................................................................................................................1

      1.1開發(fā)工具............................................................................................................................1 1.1.1 C是中級(jí)預(yù)言......................................................................................................1

      1.1.2 C是結(jié)構(gòu)化語言..................................................................................................1 1.1.3 C語言功能齊全..................................................................................................1 1.1.4 C語言可移植性好..............................................................................................1 游戲設(shè)計(jì)......................................................................................................................................2

      2.1游戲設(shè)計(jì)要求....................................................................................................................2

      2.1.1.設(shè)計(jì)題目:俄羅斯方塊游戲.............................................................................2

      2.1.2.設(shè)計(jì)內(nèi)容:.........................................................................................................2 2.1.3.功能模塊劃分:.................................................................................................2 2.2 游戲設(shè)計(jì)思想...................................................................................................................2

      2.2.1游戲界面:............................................................................................................2 2.2.2 設(shè)計(jì)思路.......................................................................................................................2 2.3:游戲功能......................................................................................................................3 2.3.1:開始部分...........................................................................................................3

      2.3.2.運(yùn)行部分...............................................................................................................3

      3.實(shí)驗(yàn)總結(jié):..................................................................................................................................4

      3.1 開發(fā)背景與需求分析.......................................................................................................4 3.2 系統(tǒng)功能介紹...................................................................................................................4 4.核心代碼:................................................................................................................................8 總結(jié)................................................................................................................................................21 參考文獻(xiàn):....................................................................................................................................22

      基于C語言的俄羅斯方塊游戲

      [摘要]:俄羅斯方塊是一款風(fēng)靡全球的電視游戲機(jī)和掌上游戲機(jī)游戲。俄羅斯方塊的基本規(guī)則是移動(dòng)、旋轉(zhuǎn)和擺放游戲自動(dòng)輸出的各種方塊,使之排列成完整的一行或多行并且消除得分。由于上手簡單、老少皆宜,從而家喻戶曉,風(fēng)靡世界。[關(guān)鍵詞]:C語言;心得體會(huì);影響

      1.引言 隨著社會(huì)的發(fā)展,人們生活的步調(diào)日益加快,越來越多的人加入了全球化的世界.人們不在拘泥于一小塊天地.加班,出差成了現(xiàn)代人不可避免的公務(wù).而此時(shí)一款可以隨時(shí)隨地娛樂的游戲成了必需品.在手機(jī)和電腦成為人們?nèi)沼闷返纳鐣?huì),一款能在其上能便捷運(yùn)行的游戲成為買家的參考點(diǎn).現(xiàn)在我們所要設(shè)計(jì)的這一款基于C語言的游戲——貪吃蛇,就是滿足以上要求而設(shè)計(jì)出來的,希望能給玩家?guī)韸蕵?貪吃蛇這一游戲簡單易行,操作方便,娛樂性較強(qiáng),吸引了不少人.這一款游戲緊緊地抓住了人們的心理,雖然簡單,卻起樂無窮,在人們不斷追求更多的欲望下,該游戲給人們帶來了追逐的快感,以及成功后的滿足感,對(duì)于一直處于高壓下的現(xiàn)代人是很好的放松工具.1.1開發(fā)工具

      《C/C++程序設(shè)計(jì)學(xué)習(xí)與試驗(yàn)系統(tǒng)》

      該系統(tǒng)繼承了Turbo C2.0/C++3.0、GCC、Visua C++6.0這四種常見的編譯器,可以很好滿足目前主流的C語言教材的實(shí)驗(yàn)需求。

      C語言具有下列特點(diǎn):

      1.1.1 C是中級(jí)預(yù)言

      它把高級(jí)語言的基本結(jié)構(gòu)和語句與低級(jí)語言的實(shí)用性結(jié)合起來,C語言可以像匯編語言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,通常還是稱C為高級(jí)語言。

      1.1.2 C是結(jié)構(gòu)化語言

      結(jié)構(gòu)化語言的特點(diǎn)是程序的各個(gè)部分除了必要地?cái)?shù)據(jù)交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用,維護(hù)及調(diào)試。

      1.1.3 C語言功能齊全

      C語言具有多種數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高;C語言也具有強(qiáng)大的圖形功能;具有較強(qiáng)的計(jì)算功能、邏輯判斷功能。

      1.1.4 C語言可移植性好

      與匯編語言相比,C語言程序適用范圍大,可用于各種操作系統(tǒng)和各種型號(hào)的計(jì)算機(jī)。游戲設(shè)計(jì)

      2.1游戲設(shè)計(jì)要求

      2.1.1.設(shè)計(jì)題目:俄羅斯方塊游戲 2.1.2.設(shè)計(jì)內(nèi)容:

      一組由4個(gè)小型正方形組成的規(guī)則圖形,中文通稱為方塊共有7種,分別以S、Z、L、J、I、O、T這7個(gè)字母的形狀來命名。通過設(shè)計(jì)者預(yù)先設(shè)置的隨機(jī)發(fā)生器不斷地輸出單個(gè)方塊到場地頂部,以一定的規(guī)則進(jìn)行移動(dòng)、旋轉(zhuǎn)、下落和擺放,鎖定并填充到場地中。每次擺放如果將場地的一行或多行完全填滿,則組成這些行的所有小正方形將被消除,并且以此來換取一定的積分或者其他形式的獎(jiǎng)勵(lì)。而未被消除的方塊會(huì)一直累積,并對(duì)后來的方塊擺放造成各種影響。如果未被消除的方塊堆放的高度超過場地所規(guī)定的最大高度則游戲結(jié)束。

      2.1.3.功能模塊劃分:

      系統(tǒng)功能模塊

      2.2 游戲設(shè)計(jì)思想

      2.2.1游戲界面:

      方塊堆積。遇整則消。

      2.2.2 設(shè)計(jì)思路

      1、一個(gè)用于擺放小型正方形的平面虛擬場地,其標(biāo)準(zhǔn)大小:行寬為10,列高為20,以每個(gè)小正方形為單位。2.、一組由4個(gè)小型正方形組成的規(guī)則圖形,英文稱為Tetromino,中文通稱為方塊共有7種,分別以S、Z、L、J、I、O、T這7個(gè)字母的形狀來命名。I:一次最多消除四層

      J(左右):最多消除三層,或消除二層

      L:最多消除三層,或消除二層

      O:消除一至二層

      S(左右):最多二層,容易造成孔洞

      Z(左右):最多二層,容易造成孔洞

      T:最多二層

      (1)部分游戲有單格方塊,可以穿透固定的方塊到達(dá)最下層空位。其他的改版中出現(xiàn)更多特別的造型。

      方塊會(huì)從區(qū)域上方開始緩慢繼續(xù)落下。

      (2)玩家可以做的操作有:以90度為單位旋轉(zhuǎn)方塊,以格子為單位左右移動(dòng)方塊,讓方塊加速落下。

      (3)方塊移到區(qū)域最下方或是著地到其他方塊上無法移動(dòng)時(shí),就會(huì)固定在該處,而新的方塊出現(xiàn)在區(qū)域上方開始落下。

      (4)當(dāng)區(qū)域中某一列橫向格子全部由方塊填滿,則該列會(huì)消失并成為玩家的得分。同時(shí)刪除的列數(shù)越多,得分指數(shù)上升。

      (5)當(dāng)固定的方塊堆到區(qū)域最上方而無法消除層數(shù)時(shí),則游戲結(jié)束。

      (6)一般來說,游戲還會(huì)提示下一個(gè)要落下的方塊,熟練的玩家會(huì)計(jì)算到下一個(gè)方塊,評(píng)估現(xiàn)在要如何進(jìn)行。由于游戲能不斷進(jìn)行下去對(duì)商業(yè)用游戲不太理想,所以一般還會(huì)隨著游戲的進(jìn)行而加速提高難度。

      3、通過設(shè)計(jì)者預(yù)先設(shè)置的隨機(jī)發(fā)生器不斷地輸出單個(gè)方塊到場地頂部,以一定的規(guī)則進(jìn)行移動(dòng)、旋轉(zhuǎn)、下落和擺放,鎖定并填充到場地中。每次擺放如果將場地的一行或多行完全填滿,則組成這些行的所有小正方形將被消除,并且以此來換取一定的積分或者其他形式的獎(jiǎng)勵(lì)。而未被消除的方塊會(huì)一直累積,并對(duì)后來的方塊擺放造成各種影響。

      4、如果未被消除的方塊堆放的高度超過場地所規(guī)定的最大高度(并不一定是20或者玩家所能見到的高度),則游戲結(jié)束。

      具體到每一款不同的游戲,其中的細(xì)節(jié)規(guī)則都可能有千差萬別,但是以上的基本規(guī)則是相同的。

      2.3:游戲功能

      2.3.1:開始部分

      游戲是運(yùn)行在圖形模式下的,所以第一步一定是初始化圖形模式,接著要有開始的界面,就像書有封面一樣,我設(shè)置了一個(gè)游戲的標(biāo)題畫面,除了游戲標(biāo)題畫面我還設(shè)置了一個(gè)歡迎畫面。標(biāo)題畫面以后,還要為游戲的運(yùn)行部分作初始化,包括繪制游戲運(yùn)行時(shí)的背景,對(duì)游戲某些重 要變量的初始化。

      2.3.2.運(yùn)行部分

      俄羅斯方塊的要求為:不同形狀組合的方塊從界面上方落下。通過鍵盤上的四個(gè)光標(biāo)控制方塊下落時(shí)的形狀轉(zhuǎn)換和下落方向。方塊堆積在一起,將區(qū)域占滿時(shí)則會(huì)消除以增加

      游戲分?jǐn)?shù)。

      整個(gè)游戲過程分為三個(gè)步驟:

      1、按游戲界面的“開始”按鈕或者F2鍵來開始游戲,自己使用右邊的窗口,對(duì)手使用左邊的窗口

      2、鍵盤操作:系統(tǒng)缺省設(shè)置使用右邊的窗口,用光標(biāo)操作,“←”左移一格;“→”右移一格;“↑”旋轉(zhuǎn)方塊;↓ 方塊丟下(方塊下落到底),“End”健可以一格格的下落,用戶還可以自定義習(xí)慣的按鍵來操作游戲。

      3、計(jì)分牌顯示的內(nèi)容:“分?jǐn)?shù)”為雙方本局的分?jǐn)?shù),計(jì)分標(biāo)準(zhǔn)為下落一個(gè)塊10分,一次消一行100分、2行200分、3行400分、4行800分。等級(jí)”為雙方的游戲設(shè)置等級(jí),當(dāng)分?jǐn)?shù)達(dá)到一定的值,等級(jí)就會(huì)提升、速度加快?!靶袛?shù)”第一行為雙方消的行數(shù),第二行是送給對(duì)方的行數(shù)?!氨确帧睘殡p方贏的局?jǐn)?shù)。2.3.3:結(jié)束部分:

      游戲結(jié)束時(shí),顯示“GAME OVER”

      3.實(shí)驗(yàn)總結(jié):

      3.1 開發(fā)背景與需求分析

      隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,人們的生活越來越離不開網(wǎng)絡(luò),網(wǎng)絡(luò)給人們帶來了各種各樣的信息和更多更新的娛樂。據(jù)統(tǒng)計(jì)。每天上網(wǎng)的人群中75%的人用來豐富自己的生活。其中游戲最為常見和普遍。所以,這次課程設(shè)計(jì)我想實(shí)現(xiàn)一個(gè)小游戲:俄羅斯方塊。需求分析

      1)游戲面板(畫布)GameCanvas類,完成游戲顯示; 2)方塊繪畫drawUnit類,方塊下落過程中的各種形態(tài);

      3)主界面實(shí)現(xiàn)游戲的開始,退出,暫停,提高級(jí)數(shù),降低級(jí)數(shù)功能及圖像界面排版;

      4)通過鍵盤按鍵實(shí)現(xiàn)游戲,并且可以調(diào)節(jié)游戲速度。

      3.2 系統(tǒng)功能介紹

      俄羅斯方塊是一個(gè)非常復(fù)雜但比較有趣并且耐玩的游戲,相信很多人對(duì)俄羅斯方塊并不陌生,如下圖所示,游戲中共有七種方塊,每種方塊都有四個(gè)方格組成。

      這七種方塊可以旋轉(zhuǎn)90度、180度、270度,因此每種方塊有四種狀態(tài),七種方塊總有28種狀態(tài),這28種狀態(tài)的方塊隨機(jī)產(chǎn)生,自由下落,落下時(shí)可由玩家通過鍵盤上的上、下、左、右控制鍵來控制方塊的反轉(zhuǎn)、移動(dòng)和加速下落。如果下落時(shí),方塊填滿某一行則這一行消失,同時(shí)給玩家加分,若由存在空格的方塊填滿整個(gè)窗口,則游戲結(jié)束。

      圖1-1 初始狀態(tài)

      圖1-2 開始游戲

      圖1-3 消除一行

      圖1-4 消除兩行

      圖1-5 消除四行

      圖1-6 游戲結(jié)束

      4.核心代碼:

      import java.awt.*;import java.awt.event.*;

      //俄羅斯方塊類

      public class computer extends Frame { public static boolean isPlay = false;public static int level = 1, score = 0;public static TextField scoreField, levelField;

      public static MyTimer timer;GameCanvas gameScr;//聲明一個(gè)屬于畫布類得變量 public static void main(String[] argus){ computer ers = new computer(“俄羅斯方塊游戲 V1.0 Author:Vincent”);//運(yùn)用構(gòu)造方法為框架名

      WindowListener win_listener = new WinListener();//定義一個(gè)窗口監(jiān)聽事件對(duì)象

      ers.addWindowListener(win_listener);//為框架添加該監(jiān)聽器 }

      computer(String title)// 俄羅斯方塊類的構(gòu)造方法 { super(title);//調(diào)用父類得構(gòu)造方法

      setSize(600, 480);//設(shè)置框架的尺寸

      setLayout(new GridLayout(1, 2));//設(shè)置框架的布局流

      gameScr = new GameCanvas();gameScr.addKeyListener(gameScr);//為該對(duì)象注冊(cè)鍵盤點(diǎn)擊監(jiān)聽器

      timer = new MyTimer(gameScr);timer.setDaemon(true);timer.start();timer.suspend();

      add(gameScr);

      Panel rightScr = new Panel();rightScr.setLayout(new GridLayout(2, 1, 0, 30));rightScr.setSize(120, 500);add(rightScr);

      // 右邊信息窗體的布局

      MyPanel infoScr = new MyPanel();infoScr.setLayout(new GridLayout(4, 1, 0, 5));infoScr.setSize(120, 300);rightScr.add(infoScr);

      // 定義標(biāo)簽和初始值

      Label scorep = new Label(“分?jǐn)?shù):”, Label.LEFT);Label levelp = new Label(“級(jí)數(shù):”, Label.LEFT);scoreField = new TextField(8);levelField = new TextField(8);scoreField.setEditable(false);levelField.setEditable(false);infoScr.add(scorep);

      infoScr.add(scoreField);infoScr.add(levelp);infoScr.add(levelField);scorep.setSize(new Dimension(20, 60));scoreField.setSize(new Dimension(20, 60));levelp.setSize(new Dimension(20, 60));levelField.setSize(new Dimension(20, 60));scoreField.setText(“0”);levelField.setText(“1”);

      // 右邊控制按鈕窗體的布局

      MyPanel controlScr = new MyPanel();controlScr.setLayout(new GridLayout(5, 1, 0, 5));rightScr.add(controlScr);

      // 定義按鈕play Button play_b = new Button(“開始游戲”);play_b.setSize(new Dimension(50, 200));play_b.addActionListener(new Command(Command.button_play, gameScr));

      // 定義按鈕Level UP Button level_up_b = new Button(“提高級(jí)數(shù)”);level_up_b.setSize(new Dimension(50, 200));level_up_b.addActionListener(new Command(Command.button_levelup, gameScr));

      // 定義按鈕Level Down Button level_down_b = new Button(“降低級(jí)數(shù)”);level_down_b.setSize(new Dimension(50, 200));level_down_b.addActionListener(new Command(Command.button_leveldown, gameScr));

      // 定義按鈕Level Pause Button pause_b = new Button(“游戲暫停”);pause_b.setSize(new Dimension(50, 200));pause_b.addActionListener(new

      Command(Command.button_pause,gameScr));

      // 定義按鈕Quit Button quit_b = new Button(“退出游戲”);quit_b.setSize(new Dimension(50, 200));quit_b.addActionListener(new Command(Command.button_quit, gameScr));

      controlScr.add(play_b);controlScr.add(level_up_b);controlScr.add(level_down_b);controlScr.add(pause_b);controlScr.add(quit_b);setVisible(true);gameScr.requestFocus();} }

      // 重寫MyPanel類,使Panel的四周留空間 class MyPanel extends Panel { public Insets getInsets(){ return new Insets(30, 50, 30, 50);} }

      // 游戲畫布類

      class GameCanvas extends Canvas implements KeyListener { final int unitSize = 30;// 小方塊邊長 int rowNum;// 正方格的行數(shù) int columnNum;// 正方格的列數(shù)

      int maxAllowRowNum;// 允許有多少行未削 int blockInitRow;// 新出現(xiàn)塊的起始行坐標(biāo) int blockInitCol;// 新出現(xiàn)塊的起始列坐標(biāo) int[][] scrArr;// 屏幕數(shù)組 Block b;// 對(duì)方快的引用

      // 畫布類的構(gòu)造方法 GameCanvas(){ rowNum = 15;columnNum = 10;maxAllowRowNum = rowNum1;blockInitCol = columnNum / 2(row + 1)* unitSize, unitSize, unitSize, true);g.dispose();}

      public Block getBlock(){ return b;// 返回block實(shí)例的引用 }

      // 返回屏幕數(shù)組中(row,col)位置的屬性值 public int getScrArrXY(int row, int col){ if(row < 0 || row >= rowNum || col < 0 || col >= columnNum)return(-1);else return(scrArr[row][col]);}

      // 返回新塊的初始行坐標(biāo)方法 public int getInitRow(){ return(blockInitRow);// 返回新塊的初始行坐標(biāo) }

      // 返回新塊的初始列坐標(biāo)方法 public int getInitCol(){ return(blockInitCol);// 返回新塊的初始列坐標(biāo) }

      // 滿行刪除方法

      void deleteFullLine(){ int full_line_num = 0;int k = 0;

      for(int i = 0;i < rowNum;i++){ boolean isfull = true;

      L1: for(int j = 0;j < columnNum;j++)if(scrArr[i][j] == 0){ k++;isfull = false;break L1;} if(isfull)full_line_num++;if(k!= 0 && k1, j, 0);else drawUnit(k1][j] = scrArr[i][j];} } for(int i = k1)){

      dispBlock(0);col--;dispBlock(1);} }

      // 實(shí)現(xiàn)塊的右移

      public void rightMove(){ if(assertValid(blockType, turnState, row, col + 1)){ dispBlock(0);col++;dispBlock(1);} }

      // 實(shí)現(xiàn)塊落下的操作的方法 public boolean fallDown(){ if(blockState == 2)return(false);if(assertValid(blockType, turnState, rowi, col + j);if(temp < 0 || temp == 2)return false;} k = k >> 1;} } return true;}

      // 同步顯示的方法

      public synchronized void dispBlock(int s){ int k = 0x8000;for(int i = 0;i < 4;i++){ for(int j = 0;j < 4;j++){ if(((int)pattern[blockType][turnState] & k)!= 0){ scr.drawUnit(rowcomputer.level + 1)* 100);} catch(InterruptedException e){ } if(!scr.getBlock().fallDown()){ scr.deleteFullLine();if(scr.isGameEnd()){ computer.isPlay = false;suspend();} else scr.getBlock().reset();} } } }

      class WinListener extends WindowAdapter { public void windowClosing(WindowEvent l){ System.exit(0);} } 總結(jié)

      1感悟:當(dāng)今計(jì)算機(jī)應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握程序開發(fā)技術(shù)是十分重要的,而C語言又是最常見,功能最強(qiáng)大的一種高級(jí)語言,因此做好C語言課程設(shè)計(jì)是十分必要的?;仡櫰鸫舜握n程設(shè)計(jì),至今我們?nèi)愿锌H多,的確,自從拿到題目到完成整個(gè)編程,從理論到實(shí)踐,在這么長的時(shí)間里,可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會(huì)遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對(duì)一些前面學(xué)過的知識(shí)理解得不夠深刻,掌握得不夠牢固,比如說結(jié)構(gòu)體,指針,鏈表……通過這次課程設(shè)計(jì)之后,我們把前面所學(xué)過的知識(shí)又重新溫故了一遍。

      我做的是做俄羅斯方塊游戲。簡單的一個(gè),但對(duì)我來說卻是一個(gè)很大的困難。更加是第一次做基于C語言的課程設(shè)計(jì),所以連續(xù)幾天翻閱書籍或是參考網(wǎng)上內(nèi)容卻絲毫沒有進(jìn)展,最主要是不知從何開始,這個(gè)時(shí)候才知道上課老師們不厭其煩的教導(dǎo)是多么的寶貴,這個(gè)時(shí)候才后悔上課的時(shí)候

      沒有認(rèn)真的聽講。可是現(xiàn)在一切都晚了,還好時(shí)間還算是充裕,只好拿出書本重新復(fù)習(xí)一下。不過經(jīng)過幾天的努力,大體上把課本上的知識(shí)點(diǎn)看了一遍,知識(shí)點(diǎn)也都基本是撐握了,所以一下一步就是開始正式的編程序了。不過畢竟水平有限,還是不知如何下手,于是就在網(wǎng)上下了一篇類似的程序,經(jīng)過仔細(xì)的研究,終于讀懂了C語言編程的基本過程和方法。經(jīng)過一波三折,終于開始正式編程。

      而且編程是一件高精度、模范化的事情,稍有疏乎都會(huì)影響全局,也可能因?yàn)槟骋惶幍男〉腻e(cuò)誤而導(dǎo)致整個(gè)程序的無法運(yùn)行。所以認(rèn)真仔細(xì)就是非常重要的了。開始的時(shí)候真的感覺編程是一件很無聊的事情,所以就在網(wǎng)上下載的程序的基礎(chǔ)上開始行動(dòng)了,不過當(dāng)一個(gè)程序運(yùn)行成功的時(shí)候那種喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的努力,終于把程序完成了,盡管程序還是有很多錯(cuò)誤和漏洞,不過還是很高興的。無論如何是自己的勞動(dòng)成果,是自己經(jīng)過努力得到的成績,同時(shí)也是學(xué)習(xí)C語言的一次實(shí)踐作業(yè),自己進(jìn)步的證明。

      通過這次課程設(shè)計(jì),使我對(duì)C語言有了更進(jìn)一步的認(rèn)識(shí)和了解,要想學(xué)好它要重在實(shí)踐,要通過不斷的上機(jī)操作才能更好地學(xué)習(xí)它,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯(cuò)字母,通過學(xué)習(xí)也有所改進(jìn);再有對(duì)C語言的一些標(biāo)準(zhǔn)庫函數(shù)不太了解,還有對(duì)函數(shù)調(diào)用的正確使用不夠熟悉,還有對(duì)C語言中經(jīng)常出現(xiàn)的錯(cuò)誤也不了解,通過實(shí)踐的學(xué)習(xí),我認(rèn)識(shí)到學(xué)好計(jì)算機(jī)要重視實(shí)踐操作,不僅僅是學(xué)習(xí)C語言,還是其它的語言,以及其它的計(jì)算機(jī)方面的知識(shí)都要重在實(shí)踐,所以后在學(xué)習(xí)過程中,我會(huì)更加注視實(shí)踐操作,使自己便好地學(xué)好計(jì)算機(jī)。

      在該游戲設(shè)計(jì)過程中,收獲知識(shí),提高能力的同時(shí),我也學(xué)到了很多人生的哲理,懂得怎么樣去制定計(jì)劃,怎么樣去實(shí)現(xiàn)這個(gè)計(jì)劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。

      2感謝:經(jīng)過兩個(gè)星期的苦心鉆研,系統(tǒng)終于制作完畢。在本次課程設(shè)計(jì)中困難遇到不少,也讓我學(xué)到了很多。在這次系統(tǒng)開發(fā)的過程中,我深深地體會(huì)到了做一個(gè)系統(tǒng),首先進(jìn)行需求分析的重要性。了解了一個(gè)系統(tǒng)的制作,從功能分析到功能模塊分析,與其他系統(tǒng)的關(guān)系,這些都有待以后進(jìn)一步的改進(jìn)。通過實(shí)踐對(duì)我以后的學(xué)習(xí)是一筆不小的財(cái)富!

      在此,感謝班上同學(xué)對(duì)我的幫助和指點(diǎn),沒有他們所提供的資料,僅憑我個(gè)人力量,在短短的兩周時(shí)間里是很難完成這個(gè)設(shè)計(jì)的。更要感謝的是我的老師,感謝老師孜孜不倦的教誨,一絲不茍的精神和一視同仁的教學(xué)風(fēng)格。我會(huì)僅記老師的教誨,一步一個(gè)腳印的完成自己的學(xué)業(yè)!

      參考文獻(xiàn):

      [1].裘宗燕 著,從問題到程序科學(xué)出版社,北京大學(xué)出版社,1999年4月。[2].《C程序設(shè)計(jì)(第二版)》,譚浩強(qiáng)編,清華大學(xué)出版社,1999年12月。[3].《C語言編程常見問題解答》,[美]Paul S.R.Chishohm等著,張芳妮 呂波譯,清華大學(xué)出版社,11996年12月。[4].《The C Programming Language》,by Brian W.Kernighan and Dennis M.Ritchie.,Pubilished by Prentice-Hall in 1988。

      [5].朱若愚.數(shù)據(jù)結(jié)構(gòu)[M].北京: 電子工業(yè)出版社, 2006.1

      [6].傅清祥,王曉東.數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)[M].北京: 電子工業(yè)出版社, 2006.3 [7].李春葆.數(shù)據(jù)結(jié)構(gòu)(C語言版)習(xí)題與解析[M].北京:清華大學(xué)出版社, 2006.1 [8].劉大有.數(shù)據(jù)結(jié)構(gòu)[M].北京: 高等教育出版社, 2006.3 [9].王敬華,陳靜.C語言程序設(shè)計(jì)[M].北京: 清華大學(xué)出版社, 2007.10 [10].徐孝凱.數(shù)據(jù)結(jié)構(gòu)簡明教程.[M].北京: 清華大學(xué)出版社, 2006.04

      課程設(shè)計(jì)俄羅斯方塊游戲源代碼

      本程序共三個(gè)類,建一個(gè)包 square。把三個(gè)類都封裝到一個(gè)包里面,三個(gè)類分別是

      Controller,Main,Square

      package square;import javax.swing.JPanel;import java.awt.Color;

      // 事倒入java程序所需要的類庫文件。如果不倒入相應(yīng)的文件。java程序是會(huì)報(bào)錯(cuò)的。import javax.swing.JLabel;public class Controller extends Thread //Controller類從定義從父類繼承來來的某些成員變量和成員方法,游戲控制線程

      private int x;

      //方塊左上角的坐標(biāo)

      private int y;

      private Square sq;

      //方塊對(duì)象的引用當(dāng)前

      private Square next;

      //下一個(gè)方塊的引用

      private JPanel[][] sc;

      //顯示

      private boolean[][] state;

      //填充狀態(tài)

      private int sorce;

      //分值

      private int speed;

      //下落速度

      private JLabel jl1;

      //分?jǐn)?shù)速度提示

      private JLabel jl2;

      private JPanel jp;

      //下一個(gè)方塊提示

      private JPanel[][] sc2;

      private int sleepTime;

      //等待時(shí)間

      public Controller(int x, int y, JPanel[][] sc, boolean[][] state,//構(gòu)造器

      傳遞引用

      int sorce, int speed, JLabel jl1, JLabel jl2,JPanel jp, JPanel[][] sc2){

      this.x = x;

      this.y = y;

      this.sc = sc;

      this.state = state;

      this.sorce = sorce;

      this.speed = speed;

      this.jl1 = jl1;

      this.jl2 = jl2;

      this.jp = jp;

      this.sc2 = sc2;

      this.sleepTime = 200;

      sq = new Square((int)(Math.random()* 4)+ 1);

      next = new Square((int)(Math.random()* 4)+ 1);

      }

      public void init(){

      for(int i = 0;i < state.length;i++){

      for(int j = 0;j < state[i].length;j++){

      state[i][j] = false;

      }

      }

      update();

      }

      @Override

      public void run()

      //重設(shè)run()方法

      {

      while(true){

      try {

      if(!isGameOver()){

      if(isHit()){

      set();

      } else {

      fall();

      }

      check();

      update();

      Thread.sleep(sleepTime);

      } else {

      break;

      }

      } catch(InterruptedException e){

      e.printStackTrace();

      }

      }

      }

      private void set()

      //碼放方塊

      {

      for(int i = 0;i < 4;i++){

      for(int j = 0;j < 4;j++){

      if(sq.getState(i, j)== true){

      state[i + x][y + j] = true;

      }

      }

      }

      x = 0;

      y = 0;

      sq = next;

      next = new Square((int)(Math.random()* 4)+ 1);

      sleepTime = 1000 /(speed + 2);

      }

      private void update()

      //更新數(shù)據(jù)

      {

      for(int i = 0;i < sc.length;i++){

      for(int j = 0;j < sc[i].length;j++){

      if(state[i][j] == true){

      sc[i][j].setBackground(Color.BLUE);

      } else {

      sc[i][j].setBackground(Color.WHITE);}

      }

      for(int i = 0;i < 4;i++){

      for(int j = 0;j < 4;j++){

      if(sq.getState(i, j)){

      sc[i + x][j + y].setBackground(Color.BLUE);

      }

      }

      }

      for(int i = 0;i < sc2.length;i++){

      for(int j = 0;j < sc2[i].length;j++){

      if(next.getState(i, j)){

      sc2[i][j].setBackground(Color.BLUE);

      } else {

      sc2[i][j].setBackground(Color.WHITE);

      }

      }

      }

      }

      private boolean isHit()

      //下落碰撞判斷

      {

      for(int i = 0;i < 4;i++){

      for(int j = 0;j < 4;j++){

      if(sq.getState(i, j)&&(x + i == 19 || state[i + x + 1][j + y])){

      return true;

      }

      }

      }

      return false;

      }

      private void fall()

      //下落

      {

      x++;

      }

      private boolean isLeftHit()

      //左移碰撞判斷

      {

      if(y == 0){

      return true;

      }

      for(int i = 0;i < 3;i++){

      for(int j = 0;j < 3;j++){

      if(sq.getState(i, j)&& state[x + i][y + j1][j];

      }

      }

      sorce += 10;

      speed = sorce / 100;

      jl1.setText(String.valueOf(sorce));

      jl2.setText(String.valueOf(speed));

      sleepTime = 1000 /(speed + 2);

      } catch(InterruptedException e){

      e.printStackTrace();

      }

      }

      }

      }

      public void moveLeft()

      //向左

      {

      if(!isLeftHit()){

      state[x][y] = false;

      y--;

      }

      }

      private boolean isRightHit()

      //右移碰撞判斷

      {

      for(int i = 0;i < 3;i++){

      for(int j = 0;j < 3;j++){

      if(sq.getState(i, j)&&(y + j >= 9 || state[x + i][y + j + 1])){

      return true;

      }

      }

      }

      return false;

      }

      public void moveRight()//向右

      {

      if(!isRightHit()){

      state[x][y] = false;

      y++;

      }

      }

      public void rot()

      //旋轉(zhuǎn)

      {

      sq.rot();

      }

      public void down()

      //加速向下

      {

      sleepTime = 20;}

      }

      package square;import javax.swing.*;import java.awt.*;public class Main extends javax.swing.JFrame { private static final long serialVersionUID = 1L;private JPanel sc[][];

      private JPanel sc2[][];

      private boolean state[][];

      Controller t;

      /** Creates new form Square */

      public Main()

      {

      initComponents();

      sc = new JPanel[20][10];

      sc2 = new JPanel[4][4];

      state = new boolean[25][15];

      jPanel1.setLayout(new GridLayout(20, 10, 2, 2));

      jPanel3.setLayout(new GridLayout(4, 4, 2, 2));

      jPanel3.setSize(150, 150);

      for(int i = 0;i < sc.length;i++){

      for(int j = 0;j < sc[i].length;j++){

      sc[i][j] = new JPanel();

      // sc[i][j].setSize(20, 20);

      sc[i][j].setBackground(Color.WHITE);

      jPanel1.add(sc[i][j]);

      }

      }

      for(int i = 0;i < sc2.length;i++){

      for(int j = 0;j < sc2[i].length;j++){

      sc2[i][j] = new JPanel();

      // sc2[i][j].setSize(20, 20);

      sc2[i][j].setBackground(Color.WHITE);

      jPanel3.add(sc2[i][j]);

      }

      }

      jLabel3.setText(“0”);

      jLabel4.setText(“0”);

      this.setSize(460, 650);

      }

      /** This method is called from within the constructor to

      * initialize the form.* WARNING: Do NOT modify this code.The content of this method is

      * always regenerated by the Form Editor.*/

      private void initComponents(){

      jPanel2 = new javax.swing.JPanel();

      jLabel1 = new javax.swing.JLabel();

      jLabel2 = new javax.swing.JLabel();

      jLabel3 = new javax.swing.JLabel();

      jLabel4 = new javax.swing.JLabel();

      jButton1 = new javax.swing.JButton();

      jPanel1 = new javax.swing.JPanel();

      jButton2 = new javax.swing.JButton();

      jButton3 = new javax.swing.JButton();

      jMenuBar1 = new javax.swing.JMenuBar();

      jMenu1 = new javax.swing.JMenu();

      jMenuItem1 = new javax.swing.JMenuItem();

      jMenu2 = new javax.swing.JMenu();

      jMenuBar2 = new javax.swing.JMenuBar();

      jMenu3 = new javax.swing.JMenu();

      jMenuItem2 = new javax.swing.JMenuItem();

      jMenu4 = new javax.swing.JMenu();

      jPanel3 = new javax.swing.JPanel();

      jButton4 = new javax.swing.JButton();

      jMenuBar3 = new javax.swing.JMenuBar();

      jMenu5 = new javax.swing.JMenu();

      jMenuItem3 = new javax.swing.JMenuItem();

      jMenu6 = new javax.swing.JMenu();

      jButton5 = new javax.swing.JButton();

      jMenuBar4 = new javax.swing.JMenuBar();

      jMenu7 = new javax.swing.JMenu();

      jMenuItem4 = new javax.swing.JMenuItem();

      jMenu8 = new javax.swing.JMenu();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

      setMinimumSize(new java.awt.Dimension(400, 550));

      jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

      jLabel1.setText(“Score”);

      jLabel2.setText(“Speed”);

      jLabel3.setText(“jLabel3”);

      jLabel4.setText(“jLabel4”);

      javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);

      jPanel2.setLayout(jPanel2Layout);

      jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addGroup(jPanel2Layout.createSequentialGroup()

      .addContainerGap()

      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addGroup(jPanel2Layout.createSequentialGroup()

      .addComponent(jLabel1)

      .addGap(18, 18, 18)

      .addComponent(jLabel3))

      .addGroup(jPanel2Layout.createSequentialGroup()

      .addComponent(jLabel2)

      .addGap(18, 18, 18)

      .addComponent(jLabel4)))

      .addContainerGap(35, Short.MAX_VALUE)));

      jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addGroup(jPanel2Layout.createSequentialGroup()

      .addContainerGap()

      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

      .addComponent(jLabel1)

      .addComponent(jLabel3))

      .addGap(18, 18, 18)

      .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

      .addComponent(jLabel2)

      .addComponent(jLabel4))

      .addContainerGap(84, Short.MAX_VALUE)));

      jButton1.setText(“Start”);

      jButton1.addActionListener(new java.awt.event.ActionListener(){

      public void actionPerformed(java.awt.event.ActionEvent evt){

      jButton1ActionPerformed(evt);

      }

      });

      jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());

      jPanel1.setMinimumSize(new java.awt.Dimension(300, 500));

      javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);

      jPanel1.setLayout(jPanel1Layout);

      jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addGap(0, 291, Short.MAX_VALUE));

      jPanel1Layout.setVerticalGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addGap(0, 504, Short.MAX_VALUE));

      jButton2.setText(“L”);

      jButton2.addActionListener(new java.awt.event.ActionListener(){

      public void actionPerformed(java.awt.event.ActionEvent evt){

      jButton2ActionPerformed(evt);

      }

      });

      jButton3.setText(“R”);

      jButton3.addActionListener(new java.awt.event.ActionListener(){

      public void actionPerformed(java.awt.event.ActionEvent evt){

      jButton3ActionPerformed(evt);

      }

      });

      jMenu1.setText(“File”);

      jMenuItem1.setText(“Start”);

      jMenu1.add(jMenuItem1);

      jMenuBar1.add(jMenu1);

      jMenu2.setText(“Edit”);

      jMenuBar1.add(jMenu2);

      jMenu3.setText(“File”);

      jMenuItem2.setText(“Start”);

      jMenu3.add(jMenuItem2);

      jMenuBar2.add(jMenu3);

      jMenu4.setText(“Edit”);

      jMenuBar2.add(jMenu4);

      jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());

      jPanel3.setMinimumSize(new java.awt.Dimension(120, 120));

      jPanel3.setPreferredSize(new java.awt.Dimension(120, 120));

      javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);

      jPanel3.setLayout(jPanel3Layout);

      jPanel3Layout.setHorizontalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addGap(0, 135, Short.MAX_VALUE));

      jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addGap(0, 116, Short.MAX_VALUE));

      jButton4.setText(“Rot”);

      jButton4.addActionListener(new java.awt.event.ActionListener(){

      public void actionPerformed(java.awt.event.ActionEvent evt){

      jButton4ActionPerformed(evt);

      }

      });

      jMenu5.setText(“File”);

      jMenuItem3.setText(“Start”);

      jMenu5.add(jMenuItem3);

      jMenuBar3.add(jMenu5);

      jMenu6.setText(“Edit”);

      jMenuBar3.add(jMenu6);

      jButton5.setText(“D”);

      jButton5.addActionListener(new java.awt.event.ActionListener(){

      public void actionPerformed(java.awt.event.ActionEvent evt){

      jButton5ActionPerformed(evt);

      }

      });

      jMenu7.setText(“File”);

      jMenu7.addActionListener(new java.awt.event.ActionListener(){

      public void actionPerformed(java.awt.event.ActionEvent evt){

      jMenu7ActionPerformed(evt);

      }

      });

      jMenuItem4.setText(“Start”);

      jMenu7.add(jMenuItem4);

      jMenuBar4.add(jMenu7);

      jMenu8.setText(“Edit”);

      jMenuBar4.add(jMenu8);

      setJMenuBar(jMenuBar4);

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

      getContentPane().setLayout(layout);

      layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

      .addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED_SIZE,295, javax.swing.GroupLayout.PREFERRED_SIZE)

      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addComponent(jPanel2,javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

      .addComponent(jPanel3, Short.MAX_VALUE)

      .addComponent(jButton4,javax.swing.GroupLayout.DEFAULT_SIZE, 139,javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)

      .addGroup(layout.createSequentialGroup()

      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)

      .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

      .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()

      .addComponent(jButton2)

      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

      .addComponent(jButton5)

      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

      .addComponent(jButton3)))

      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, Short.MAX_VALUE)))

      .addContainerGap()));

      layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

      .addGroup(layout.createSequentialGroup()

      .addContainerGap()

      .addComponent(jPanel2,javax.swing.GroupLayout.PREFERRED_SIZE,10,javax.swing.GroupLayout.Alignment.LEADING,javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

      .addComponent(jPanel3,javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

      .addGap(44, 44, 44)

      .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE)

      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

      javax.swing.GroupLayout.PREFERRED_SIZE,33,.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)

      .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)

      .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))

      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

      .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE)

      .addContainerGap(63, Short.MAX_VALUE))

      .addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE,38, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

      pack();

      }

      //

      private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){

      // TODO add your handling code here:

      t = new Controller(0, 0, sc, state, 0, 0, jLabel3, jLabel4, jPanel3, sc2);

      t.init();

      t.start();}

      private void jButton2ActionPerformed(java.awt.event.ActionEvent evt){

      // TODO add your handling code here:

      t.moveLeft();}

      private void jButton3ActionPerformed(java.awt.event.ActionEvent evt){

      // TODO add your handling code here:

      t.moveRight();}

      private void jButton4ActionPerformed(java.awt.event.ActionEvent evt){

      // TODO add your handling code here:

      t.rot();}

      private void jButton5ActionPerformed(java.awt.event.ActionEvent evt){

      // TODO add your handling code here:

      t.down();

      }

      private void jMenu7ActionPerformed(java.awt.event.ActionEvent evt){

      // TODO add your handling code here:

      t.init();}

      /**

      * @param args the command line arguments

      */

      public static void main(String args[]){

      java.awt.EventQueue.invokeLater(new Runnable(){

      public void run(){

      new Main().setVisible(true);

      }

      });

      }

      // Variables declaration-do not modify

      private javax.swing.JButton jButton1;

      private javax.swing.JButton jButton2;

      private javax.swing.JButton jButton3;

      private javax.swing.JButton jButton4;

      private javax.swing.JButton jButton5;

      private javax.swing.JLabel jLabel1;

      private javax.swing.JLabel jLabel2;

      private javax.swing.JLabel jLabel3;

      private javax.swing.JLabel jLabel4;

      private javax.swing.JMenu jMenu1;

      private javax.swing.JMenu jMenu2;

      private javax.swing.JMenu jMenu3;

      private javax.swing.JMenu jMenu4;

      private javax.swing.JMenu jMenu5;

      private javax.swing.JMenu jMenu6;

      private javax.swing.JMenu jMenu7;

      private javax.swing.JMenu jMenu8;

      private javax.swing.JMenuBar jMenuBar1;

      private javax.swing.JMenuBar jMenuBar2;

      private javax.swing.JMenuBar jMenuBar3;

      private javax.swing.JMenuBar jMenuBar4;

      private javax.swing.JMenuItem jMenuItem1;

      private javax.swing.JMenuItem jMenuItem2;

      private javax.swing.JMenuItem jMenuItem3;

      private javax.swing.JMenuItem jMenuItem4;

      private javax.swing.JPanel jPanel1;

      private javax.swing.JPanel jPanel2;

      private javax.swing.JPanel jPanel3;

      // End of variables declaration

      }

      package square;public class Square {

      boolean[][][] state;

      int condition;

      //定義多種情況

      public Square(int kind)

      //

      定義多種類型

      {

      state = new boolean[4][4][4];

      condition = 0;

      switch(kind){

      case 1:

      //方形

      每個(gè)case之后應(yīng)該有個(gè)break;否則在滿足條件之后會(huì)繼續(xù)向后進(jìn)行會(huì)跳出

      state[0][0][0] = true;

      state[0][0][1] = true;

      state[0][1][0] = true;

      state[0][1][1] = true;

      state[1][0][0] = true;

      state[1][0][1] = true;

      state[1][1][0] = true;

      state[1][1][1] = true;

      state[2][0][0] = true;

      state[2][0][1] = true;

      state[2][1][0] = true;

      state[2][1][1] = true;

      state[3][0][0] = true;

      state[3][0][1] = true;

      state[3][1][0] = true;

      state[3][1][1] = true;

      break;

      case 2:

      //I型

      state[0][0][0] = true;

      state[0][1][0] = true;

      state[0][2][0] = true;

      state[0][3][0] = true;

      state[1][0][0] = true;

      state[1][0][1] = true;

      state[1][0][2] = true;

      state[1][0][3] = true;

      state[2][0][0] = true;

      state[2][1][0] = true;

      state[2][2][0] = true;

      state[2][3][0] = true;

      state[3][0][0] = true;

      state[3][0][1] = true;

      state[3][0][2] = true;

      state[3][0][3] = true;

      break;

      case 3:

      //L型

      state[0][0][0] = true;

      state[0][1][0] = true;

      state[0][2][0] = true;

      state[0][2][1] = true;

      state[1][0][2] = true;

      state[1][1][0] = true;

      state[1][1][1] = true;

      state[1][1][2] = true;

      state[2][0][0] = true;

      state[2][0][1] = true;

      state[2][1][1] = true;

      state[2][2][1] = true;

      state[3][0][0] = true;

      state[3][0][1] = true;

      state[3][0][2] = true;

      state[3][1][0] = true;

      break;

      case 4:

      //T型

      state[0][0][0] = true;

      state[0][0][1] = true;

      state[0][0][2] = true;

      state[0][1][1] = true;

      state[1][0][1] = true;

      state[1][1][0] = true;

      state[1][1][1] = true;

      state[1][2][1] = true;

      state[2][0][1] = true;

      state[2][1][0] = true;

      state[2][1][1] = true;

      state[2][1][2] = true;

      state[3][0][0] = true;

      state[3][1][0] = true;

      state[3][1][1] = true;

      state[3][2][0] = true;

      break;

      }

      }

      public boolean getState(int i, int j)//獲得是否為聲明的i,j變量的值

      {

      return state[condition][i][j];

      }

      public void rot(){

      condition =(condition + 1)% 4;

      } }

      第二篇:個(gè)人簡歷html語言編寫

      課后練習(xí)題五

      姓 名 性別 出生年月 照片
      畢業(yè)院校 專業(yè) 學(xué)歷
      政治面貌 民族 身高
      健康狀況 籍貫
      身份證號(hào)碼 聯(lián)系電話
      主修課程
      英語水平
      計(jì)算機(jī)水平
      社會(huì)實(shí)踐
      獎(jiǎng)勵(lì)情況
      自我評(píng)價(jià)

      第三篇:如何編寫和語言程序解讀

      如何編寫和匯編語言程序

      可以用普通文本編輯器編輯匯編語言源程序。常用的有 MS-DOS 下的 EDIT 文本編輯程序,Windows 下的寫字板(WORDPAD.EXE)等。用戶通過屏幕編輯程序鍵入源程序,檢查無誤,可將源程序存到匯編系統(tǒng)盤上,該程序的擴(kuò)展名為· ASM。軟件運(yùn)行基本環(huán)境

      運(yùn)行匯編程序必備的軟件環(huán)境: DOS 操作系統(tǒng);匯編系統(tǒng)。匯編系統(tǒng)盤應(yīng)包含如下文件: MASM 宏匯編程序文件 LISK 連接程序文件

      CRFF 索引程序文件(也可不用)匯編源程序編寫)源程序的書寫格式

      當(dāng) CPU 訪問內(nèi)存時(shí),是把存儲(chǔ)器分成若干個(gè)段,通過 4 個(gè)段寄存器中存放的地址對(duì)內(nèi)存儲(chǔ)器訪問,因此在編源程序時(shí)必須按段的結(jié)構(gòu)來編制程序。由于每個(gè)段的物理空間為≤ 64KB,所以程序中各段可以分別為一個(gè)或幾個(gè)。源程序的書寫一般有如下形式:

      邏輯堆棧段 堆棧段名 SEGMENT STACK 用變量定義預(yù)置的堆??臻g · ·

      堆棧段名 ENDS 邏輯數(shù)據(jù)段 數(shù)據(jù)段名 SEGMENT 用變量定義預(yù)置的數(shù)據(jù)空間 · ·

      數(shù)據(jù)段名 ENDS 邏輯代碼段 代碼段名 SEGMENT ASSUME 定義各段尋址關(guān)系 過程名 PROC … 程序 · ·

      過程名 ENDP 代碼段名 ENDS END 過程名或起始標(biāo)號(hào)

      在源程序中最少要有一個(gè)代碼段,數(shù)據(jù)段根據(jù)需要可有可無,也可以增設(shè)附加段。對(duì)于堆棧段也可以根據(jù)需要可有可無,但在連接(LINK)時(shí)計(jì)算機(jī)將顯示警告性的錯(cuò)誤: Warning : N STACK segment There was 1 error detected.在程序中如果沒有用到堆棧時(shí),該錯(cuò)誤提示不影響程序的運(yùn)行,如果程序中用到堆棧時(shí)必須設(shè)置堆棧段。其中: SEGMENT、ASSUME、PROC … ENDP 為偽指令,偽指令是發(fā)給匯編程序 ASM 的,而不和微處理器打交道,在匯編時(shí)不產(chǎn)生目標(biāo)代碼,只是把源程序中各段的設(shè)置情況告訴匯編程序。)段寄存器的段地址的裝入

      Assume 偽指令語句只是建立了當(dāng)前段與段寄存器的聯(lián)系,但不能把各段的段地址裝入相應(yīng)的段寄存器中,段寄存器的段地址的裝入是在程序中完成的。(1)DS、ES、SS 的裝入

      由于段寄存器不能用立即數(shù)尋址方式直接傳送,所以段地址裝入可通過通用寄存器傳送給段寄存器。MOV AX,邏輯段名 MOV 段寄存器,AX 其中邏輯段名為程序中定義各邏輯段的名字,(不包括代碼段),段寄存器是指與各邏輯段相對(duì)應(yīng)的各段寄存器(DS、ES、SS)。(2)CS 的裝入

      代碼段寄存器是裝當(dāng)前執(zhí)行目標(biāo)代碼的段地址,IP 是提供下一條要執(zhí)行的目標(biāo)代碼的偏移量,為了保證程序的正確執(zhí)行,CS 和 IP 裝入新值時(shí)是一起完成的。對(duì) CS 和 IP 的裝入有如下幾種情況:

      ①根據(jù)用戶程序中的偽指令 END 后的標(biāo)號(hào)為 CS 和 IP 提供代碼段的段地址和目標(biāo)代碼的偏移地址。

      ②在程序運(yùn)行過程中,當(dāng)執(zhí)行某些指令和操作時(shí),CPU 自動(dòng)修改 CS 和 IP 的值,使它們指向新的代碼段。)程序中的數(shù)據(jù)與變量

      在匯編源程序中的數(shù)據(jù)除了立即數(shù),由指令產(chǎn)生的數(shù)和通過鍵盤輸入的數(shù)以外,還胡大量的數(shù)據(jù)是通過偽指令語句進(jìn)行預(yù)置和分配的,也就是在某邏輯段中(除代碼段),將所需的數(shù)據(jù)以某種形式存放起來,在程序中可任意調(diào)用。在數(shù)據(jù)定義的同時(shí)還可以定義變量,將變量與數(shù)據(jù)結(jié)合在一起??梢詾槟硞€(gè)變量分配存儲(chǔ)空間以便在程序執(zhí)行過程中存放中間結(jié)果和最終結(jié)果,使用起來極為方便。

      (1)變量與數(shù)據(jù)的定義

      變量與數(shù)據(jù)的定義可以通過符號(hào)定義偽指令 EQU、=和數(shù)據(jù)定義偽指令 DB 或 DW 或 DD 來實(shí)現(xiàn)。EQU 和=可以出現(xiàn)在程序的邏輯段內(nèi)也可出現(xiàn)在邏輯段外。

      (2)匯編程序中數(shù)據(jù)的提供方法 ①用數(shù)據(jù)定義偽指令提供數(shù)據(jù)

      如果程序要求原始數(shù)據(jù)為一批數(shù)據(jù)時(shí),用數(shù)據(jù)定義偽指令 DB、DW 和 DD 來提供較為方便。②用立即數(shù)的形式提供數(shù)據(jù)

      當(dāng)原始數(shù)據(jù)只有幾個(gè)時(shí),一般用立即數(shù)的方法來提供。當(dāng)然,用立即數(shù)的方法只是將一個(gè)數(shù)據(jù)傳送到通用寄存器中,它只是通過通用寄存器傳送數(shù)據(jù)。③用編程的方法提供數(shù)據(jù)

      假如原始數(shù)據(jù)是一組有規(guī)律的數(shù)據(jù)項(xiàng),則用編程序的方法形成這一組數(shù)據(jù),不用專門為這組數(shù)據(jù)分配存儲(chǔ)單元,節(jié)省了存儲(chǔ)空間。④用鍵盤提供數(shù)據(jù)

      當(dāng)原始數(shù)據(jù)為任意數(shù)據(jù)時(shí),一般用鍵盤輸入方法,調(diào)用 DOS 21H 中斷。

      (3)數(shù)據(jù)的輸出方式 ①在顯示器上顯示一個(gè)字符

      調(diào)用 02H 號(hào)功能調(diào)用號(hào),發(fā) 21H 號(hào)中斷,將要顯示的字符的 ASCII 碼送入 DL,就可在顯示器上顯示該字符。②在打印機(jī)上輸出一個(gè)字符

      調(diào)用 05H 號(hào)功能調(diào)用號(hào),發(fā) 21H 號(hào)中斷,將要打印字符的 ASCII 碼送入 DL,就可在打印機(jī)上打印出 DL 中的字符。

      4)返回 DOS 狀態(tài)的方法

      當(dāng)執(zhí)行.EXE 文件時(shí),是在 DOS 狀態(tài)下進(jìn)行的,如果希望在執(zhí)行完.EXE 文件后正常返回 DOS 狀態(tài),一般用如下兩種方法:采用 DOS 4CH 功能調(diào)用和采用返回(RET)斷點(diǎn)的方法。

      匯編處理 — 執(zhí)行宏匯編程序 MASM.EXE

      用匯編語言編寫的源程序必須是一個(gè)完整的源程序。宏匯編程序?qū)R編語言源程序的匯編過程包括語法檢查和數(shù)據(jù)代碼匯編兩部分,生成目標(biāo)程序和輔助信息文件。為了完成匯編任務(wù),匯編程序一般采用兩遍掃描的方法,第一遍掃描源程序產(chǎn)生符號(hào)表、處理偽指令等,第二遍掃描產(chǎn)生機(jī)器指令代碼、確定數(shù)據(jù)等。源程序用宏匯編程序翻譯(匯編)后,可以得到三個(gè)文件:一個(gè)是擴(kuò)展名為.OBJ 的目標(biāo)文件,在該文件中,將源程序的操作碼部分變?yōu)闄C(jī)器碼,但地址操作數(shù)是可浮動(dòng)的相對(duì)地址,而不是實(shí)際地址,因此需經(jīng) LINK 連接文件進(jìn)行連接才能形成可執(zhí)行文件。第二個(gè)文件是列表文件,擴(kuò)展名為.LST,它把源程序和目標(biāo)程序列表,以供檢查程序用。第三個(gè)文件是交叉索引文件,擴(kuò)展名為.CRF,它是一個(gè)對(duì)源程序所用的各種符號(hào)進(jìn)行前后對(duì)照的文件。其中目標(biāo)文件是必須產(chǎn)生的,而其它兩個(gè)文件在需要時(shí)給予命令就可產(chǎn)生,對(duì)連接和執(zhí)行匯編程序無直接的關(guān)系。)匯編操作過程

      在 DOS 狀態(tài)下,鍵入 MASM ↓則調(diào)入宏匯編程序,屏幕顯示與操作如下: masm ↓ Microsoft(R)Macro Assemble Version 5.00 Copyright(C)Microsoft Corp 1981-1985,1987,All right reserved.Source filename [.ASM ]: MYFILE ↓ Object filename [MYFILE.OBJ ]: MYFILE ↓ Source listing [NUL.LST ]: MYFILE ↓ Cross-reference [NUL.CRF]: MYFILE ↓ 50678 + 410090 Bytes symbol space free 0 Warning Errors 0 Severe Errors 其中劃線部分為用戶鍵入部分,MYFILE 為源程序名(MYFILE.ASM),方括號(hào)中是機(jī)器規(guī)定的默認(rèn)文件名,如果用戶認(rèn)為方括號(hào)內(nèi)的文件名就是要鍵入的文件名,則可只在劃線部分鍵入回車符。如果不想要列表文件和交叉索引文件,則可在 [NUL.LST ] 和 [NUL.CRF] 后不鍵入文件名只鍵入回車符。

      當(dāng)回答完上述四個(gè)詢問后,匯編程序就對(duì)源程序進(jìn)行匯編。在匯編過程中,如果發(fā)現(xiàn)源程序中有語法錯(cuò)誤,則提示出錯(cuò)信息,指出是什么性質(zhì)的錯(cuò)誤,錯(cuò)誤類型,最后列出錯(cuò)誤的總數(shù)。之后可重新進(jìn)入屏幕編輯狀態(tài),調(diào)入源程序(MYFILE.ASM)進(jìn)行修改,修改完畢,再進(jìn)行匯編,直到匯編通過為止。

      如果在匯編時(shí)不需要產(chǎn)生列表文件(.LST)和交叉索引文件(.CRF),調(diào)用匯編程序時(shí)可用分號(hào)結(jié)束。如果需要產(chǎn)生.OBJ 和.LST 文件,不需要.CRF 文件,則在分號(hào)前面加兩個(gè)逗號(hào)即可。如果 4 個(gè)文件都需要,用簡便的操作方法是在分號(hào)前用了 3 個(gè)逗號(hào)。)列表文件(.LST)

      列表文件(.LST)是通過匯編程序(MASM)產(chǎn)生的,可以在 DOS 狀態(tài)下用 TYPE 命令顯示或打印該文件,以便分析調(diào)試源程序。如顯示 D 盤上已存在的列表文件 MYFILE.LST 操作方法如下: D> TYPE MYFILE.LST ;↓ 列表程序由三部分組成:(1)源程序和目標(biāo)程序清單

      列表程序同時(shí)列出源程序和對(duì)應(yīng)的機(jī)器語言清單。列表程序的第一列給出每條指令所在行號(hào);第二列給出從段的首地址開始的每條指令存放的偏移地址;接著是數(shù)字列,給出對(duì)應(yīng)每條語句的機(jī)器碼和對(duì)應(yīng)于存放在棧段和數(shù)據(jù)段的值,在機(jī)器碼加上“ R ”的指令表示:這條指令在連接時(shí)可能產(chǎn)生與列出來的偏移地址不同的地址,因?yàn)檫@些偏移地址可能與其它模塊有關(guān);最右邊就是用匯編語言編寫的源程序。(2)段信息匯總表

      在段信息匯總表中列出該程序用了哪幾個(gè)段,如:代碼段 CODE、數(shù)據(jù)段 DATA 和堆棧段 STACK ;每個(gè)段所占存儲(chǔ)空間的長度(字節(jié)數(shù));每個(gè)段的定位類型,包括 PAGE(頁)、PARA(節(jié))、WORD(字)和 BYTE(字節(jié)),它們表示此段的起始邊界要求,即起始邊界地址應(yīng)分別可以被 256、16、2 和 1 除盡。該列表清單 中是以 PARA 為 CODE 段、DATA 段和 STACK 段的起始邊界地址。最后一列為段的組合類型;段的組合類型是告訴連接程序,本段與其它段的關(guān)系,組合類型有 NONE、PUBLIC、COMMOM、AT 表達(dá)式、STACK 和 MEMORY。NONE :表示本段與其它段不發(fā)生邏輯關(guān)系,即每段都有自己的基本地址。是隱含組合類型。

      STACK :表明連接程序首先要把本段與同名同類別的其它段相鄰地連接在一起,然后為所有定義為棧段的連接在一起的段,定義一個(gè)共同的段基地址,即連接成一個(gè)物理段。

      在列表程序的源程序中只有一個(gè)棧段,在棧段定義中給出了組合類型為 STACK,因此在段信息匯總表中列出了該項(xiàng),在本程序中它沒有任何意義,因?yàn)闆]有其它棧段與它連接,只是為了說明這個(gè)問題而設(shè)置的。(3)符號(hào)匯總表

      在列表程序中最后部分列出了符號(hào)匯總,是指在源程序中用戶定義的符號(hào)名、類型、值和所在段。

      如果在源程序中存在某些語法錯(cuò)誤時(shí),列表文件可提示某條語句有哪些錯(cuò)誤,出錯(cuò)提示顯示在出錯(cuò)指令行的下面,因此用戶可借助列表文件很快地找到錯(cuò)誤行,以便調(diào)試。另外由于列表文件給出了各條指令的偏移地址,對(duì)和程序時(shí)設(shè)置斷點(diǎn)很方便。)交叉索引文件(.CRF)

      匯編后產(chǎn)生的交叉索引文件,擴(kuò)展名為.CRF, 它列出了源程序中定義的符號(hào)(包括:標(biāo)號(hào)、變量等)和程序中引用這些符號(hào)的情況。如果要查看這個(gè)符號(hào)表,必須使用 CREF.EXE 的文件,它根據(jù).CRF 文件建立一個(gè)擴(kuò)展名為.REF 的文件,而后再用 DOS 的 TYPE 命令顯示,就可以看到這個(gè)符號(hào)使用情況表。具體操作方法如下: D> CREF ↓

      cref filename [.CRF] : MYFILE ↓ list filename [MYFILE.REF] : ↓ D> TYPE MYFILE.REF ↓

      目標(biāo)代碼鏈接程序----LINK.EXE

      用匯編語言編寫的源程序經(jīng)過匯編程序(MASM)匯編后產(chǎn)生了目標(biāo)程序(.OBJ),該文件是將源程序操作碼部分變成了機(jī)器碼,但地址是可浮動(dòng)的相對(duì)地址(邏輯地址),因此必須經(jīng)過連接程序 LINK 連接后才能運(yùn)行。連接程序 LINK 是把一個(gè)或多個(gè)獨(dú)立的目標(biāo)程序模塊裝配成一個(gè)可重定位的可執(zhí)行文件,擴(kuò)展名為.EXE 文件。此外還可以產(chǎn)生一個(gè)內(nèi)存映象文件,擴(kuò)展名為.MAP。1)連接程序執(zhí)行過程

      在 DOS 狀態(tài)下,鍵入 LINK ↓(或 LINK MYFILE ↓)則系統(tǒng)調(diào)入 LINK 程序,屏幕顯示操作如下: D> LINK ↓

      IBM Personal Computer Linker Version 2.00(C)Copyright IBM Corp 1981,1982,1983 Object Modules [.OBJ] : MYFILE ↓ Run File [MYFILE.EXE] : MYFILE ↓ List File [NUL.MAP] : MYFILE ↓ Libraries [.LIB] : ↓

      其中劃線部分為用戶鍵入部分,MYFILE 為源程序名,方括號(hào)內(nèi)為機(jī)器默認(rèn)文件名,當(dāng)用戶認(rèn)為方括號(hào)中的文件名就是要鍵入的文件名時(shí),可在冒號(hào)后面只鍵入回車。

      其中 MAP 文件是否需要建立,由用戶決定,需要?jiǎng)t鍵入文件名,不需要?jiǎng)t直接送入一個(gè)回車鍵。

      最后一個(gè)詢問是問是否在連接時(shí)用到庫文件,對(duì)于連接匯編語言源程序的目標(biāo)文件,通常是不需要的,因此直接鍵入回車鍵。

      與匯編程序一樣,可以在連接時(shí)用分號(hào)結(jié)束后續(xù)詢問。例如:

      D> LINK MYFILE ;↓

      IBM Personal Computer Linker Version 2.00(C)Copyright IBM Corp 1981,1982,1983 連接后只產(chǎn)生 MYFILE.EXE 文件。如果除 MYFILE.EXE 文件外還要產(chǎn)生 MYFILE.MAP 文件,則在分號(hào)前加兩個(gè)逗號(hào)。D> LINK MYFILE,;↓ IBM Personal Computer Linker Version 2.00(C)Copyright IBM Corp 1981,1982,1983 2)內(nèi)存映象文件(.MAP)

      由連接程序 LINK 產(chǎn)生的擴(kuò)展名為.MAP 文件,它實(shí)際上是連接程序的列表文件,它給出了每個(gè)段的地址分配情況及長度。

      在 DOS 狀態(tài)下,用 TYPE 命令顯示打印出來。例如: D> TYPE MYFILE.MAP ↓ Start Stop Length Name Class 00000H 0000FH 0010H DATA 00010H 0004FH 0040H STACK 00050H 0005FH 0010H CODE Origin Group Program entry point at 0005:0000 從中可以看到,源程序 MYFILE 中定義了三個(gè)段:數(shù)據(jù)段(DATA)起始地址為 00000H,終止地址為 0000FH,長度為 0010H 個(gè)字節(jié);堆棧段(STACK)起始地址為 00010H,終止地址為 0004FH,長度為 0040H 個(gè)字節(jié);代碼段(CODE)起始地址為 00050H,終止地址為 0005FH,長度為 0010H 個(gè)字節(jié)。

      應(yīng)用程序執(zhí)行

      當(dāng)用連接程序 LINK 將目標(biāo)程序(.OBJ)連接定位后,可產(chǎn)生可執(zhí)行的應(yīng)用程序文件(.EXE),可以在 DOS 狀態(tài)下執(zhí)行該程序。執(zhí)行操作如下: D> MYFILE ↓ 或 D> MYFILE.EXE ↓

      在源程序 MYFILE 中如果有顯示結(jié)果的指令,則在執(zhí)行程序后可以看到執(zhí)行結(jié)果;如需要?jiǎng)討B(tài)調(diào)試應(yīng)用程序 MYFILE.EXE,則可以借助動(dòng)態(tài)調(diào)試程序 DEBUG.COM 來進(jìn)行調(diào)試、運(yùn)行,DEBUG 是一種支持命令行方式的匯編語言編程調(diào)試工具。

      動(dòng)態(tài)調(diào)試程序 DEBUG.COM 在編寫和運(yùn)行匯編程序的過程中,會(huì)遇到一些錯(cuò)誤和問題,需要對(duì)程序進(jìn)行分析和調(diào)試,調(diào)試程序 DEBUG 就是專為匯編語言設(shè)計(jì)的一種調(diào)試工具。它在調(diào)試匯編語言程序時(shí)有很強(qiáng)的功能,能使程序設(shè)計(jì)者接觸到機(jī)器內(nèi)部,能觀察和修改寄存器和存儲(chǔ)單元內(nèi)容,并能監(jiān)視目標(biāo)程序的執(zhí)行情況,使用戶真正接觸到 CPU 內(nèi)部,與計(jì)算機(jī)產(chǎn)生最緊密的工作聯(lián)系。

      動(dòng)態(tài)和程序 DEBUG 的主要特點(diǎn) DEBUG 的執(zhí)行 DEBUG 命令格式 主要 DEBUG 命令

      動(dòng)態(tài)和程序 DEBUG 的主要特點(diǎn))能夠在最小環(huán)境下運(yùn)行匯編程序

      在 DOS 狀態(tài)下運(yùn)行匯編程序,必須將程序經(jīng)過 MASM 匯編程序,而后還要經(jīng)過 LINK 連接程序產(chǎn)生可執(zhí)行程序,才能最終運(yùn)行,比較麻煩。在 DEBUG 狀態(tài)下,為用戶提供了調(diào)試、控制測試的環(huán)境,可以在此環(huán)境下進(jìn)行編程、調(diào)試、監(jiān)督、執(zhí)行用戶編寫的匯編程序。因此調(diào)試周期短,為用戶提供了極大的方便。2)提供極簡單的修改手段

      DEBUG 提供了修改命令,可以修改內(nèi)存單元內(nèi)容,修改寄存器的內(nèi)容,為調(diào)試程序、修改程序帶來了方便。3)提供用戶與計(jì)算機(jī)內(nèi)部聯(lián)系的窗口

      DEBUG 具有顯示命令,它既可以使用戶看到某內(nèi)存單元或某一塊單元內(nèi)容,也可以看到 CPU 內(nèi)部各寄存器的內(nèi)容。用單步執(zhí)行命令實(shí)現(xiàn)跟蹤執(zhí)行,每執(zhí)行一步都使用戶看到各寄存器的內(nèi)容的變化,以便分析和調(diào)整程序。4)可裝入、修改或顯示任何文件

      當(dāng)然在 DEBUG 狀態(tài)下運(yùn)行匯編程序也具有一定局限性。在 DEBUG 狀態(tài)下運(yùn)行的程序不能使用宏匯編程序中的宏指令,大部分偽指令也不能使用,因此只能把程序分段調(diào)試。此外,不能調(diào)試太長的程序,只能分塊進(jìn)行中程序設(shè)計(jì)。在 DEBUG 狀態(tài)下調(diào)試好的程序不能形成可執(zhí)行文件(.EXE),因此調(diào)試好的程序只能記下,到編輯環(huán)境下重新鍵入調(diào)試好的程序,通過匯編程序(如 MASM),再通過連接程序(LINK)形成可執(zhí)行文件(.EXE)。

      DEBUG 的執(zhí)行

      在操作系統(tǒng)(DOS 或 WIndows)命令行方式下,直接調(diào)入 DEBUG 程序,鍵入命令的格式如下: D>DEBUG [d:][Path][filename[.ext]][Parm1][Parm2] 其中 [] 的內(nèi)容為可選項(xiàng),可以有也可以缺省。

      [d:] 為驅(qū)動(dòng)器號(hào),指要調(diào)入 DEBUG 狀態(tài)的可執(zhí)行文件在哪個(gè)驅(qū)動(dòng)器中,如 A:、B:、C: 等。[Path] 為路徑,指要調(diào)入 DEBUG 狀態(tài)的可執(zhí)行文件是在哪個(gè)目錄下或子目錄下。

      [filename[.ext]],指要調(diào)入 DEBUG 狀態(tài)下的可執(zhí)行文件的文件名,該文件可以是通過編輯、匯編、連接后產(chǎn)生的可執(zhí)行文件,也可以是在 DEBUG 狀態(tài)下匯編的程序 段,通過寫盤命令 W 寫入磁盤的文件。[Parm1][Parm2] 為任選參數(shù),是給定文件的說明參數(shù)。

      在啟動(dòng) DEBUG 時(shí),如果輸入 filename(文件名),則 DEBUG 程序把指定文件裝入內(nèi)存,用戶可以通過 DEBUG 的命令對(duì)指定文件進(jìn)行修改、顯示或執(zhí)行。如果沒有文件名,則是以當(dāng)前內(nèi)存的內(nèi)容工作,或者用命名命令或裝入命令把需要的文件裝入內(nèi)存,然后再通過 DEBUG 命令進(jìn)行修改、顯示或執(zhí)行。當(dāng)啟動(dòng) DEBUG 程序后,屏幕上出現(xiàn)“—”,說明系統(tǒng)已進(jìn)入 DEBUG 狀態(tài)。DEBUG 命令格式(1)DEBUG 命令都是一個(gè)英文字母,后面跟著一個(gè)或多個(gè)有關(guān)參數(shù)。多個(gè)操作參數(shù)之間用“ , ”或空格隔開。(2)DEBUG 命令必須接著按 ENTER 鍵,命令才有效。

      (3)參數(shù)中不論是地址還是數(shù)據(jù),均用十六進(jìn)制數(shù)表示,但十六進(jìn)制數(shù)據(jù)后面不要用“ H ”。(4)可以用 Ctrl 和 Break 鍵來停止一個(gè)命令的執(zhí)行,返回到 DEBUG 的提示符“—”下。(5)用 Ctrl - Num Lock 鍵中止正在上卷的輸出行,再通過按任意鍵繼續(xù)輸出信息。主要 DEBUG 命令

      (1)匯編命令 A

      格式: a.A [ 段寄存器名 ]:[ 偏移地址 ] b.A [ 段地址 ]:[ 偏移地址 ] c.A [ 偏移地址 ] d.A 功能:用該命令可以將匯編語言程序直接匯編進(jìn)入內(nèi)存。

      當(dāng)鍵入 A 命令后,顯示段地址和偏移地址等待用戶鍵入?yún)R編指令,每鍵入一條匯編指令回車后,自動(dòng)顯示下一條指令的段地址和偏移地址,再鍵入下一條匯編指令,直到匯編語言程序全部鍵入,又顯示下一地址時(shí)可直接鍵入回車返回到提示符“-”為止。

      其中 a 的段地址在段地址寄存器中,因此在使用該命令時(shí)必須將段地址寄存器送入段地址,c 的地址在 CS 中,d 的段地址在 CS 中,偏移地址為 100H。

      (2)顯示內(nèi)存命令 D 格式: a.D [ 地址 ] b.D [ 地址范圍 ] c.D 功能:顯示指定內(nèi)存范圍的內(nèi)容。

      顯示的內(nèi)容為兩種形式:一種為十六進(jìn)制內(nèi)容,一種為與十六進(jìn)制相對(duì)應(yīng)的 ASCII 碼字符,對(duì)不可見字符以“·”代替。

      對(duì)于 a、c 每次顯示 128 個(gè)字節(jié)內(nèi)容,b 顯示的字節(jié)數(shù)由地址范圍來決定。

      若命令中有地址,則顯示的內(nèi)容從指定地址開始,若中中無地址(如 c)則從上一個(gè) D 命令所顯示的最后一個(gè)單元的下一個(gè)單元開始。若以前沒有使用過 D 命令,則以 DEBUG 初始化的段寄存器的內(nèi)容為起始段地址,起始偏移地址為 100H,即 CS:100。

      對(duì)于 a 中的地址為偏移地址,段地址為 CS 的內(nèi)容,對(duì) b 中的地址范圍,可以指定段地址和起始偏移地址和終止偏移地址。

      (3)修改存儲(chǔ)單元內(nèi)容命令 E 格式: a · E [ 地址 ] [ 內(nèi)容表 ] b · E [ 地址 ] 功能: a ·用命令所給定的內(nèi)容表去代替指定地址范圍的內(nèi)存單元內(nèi)容。b ·一個(gè)單元一個(gè)單元地連續(xù)修改單元內(nèi)容。

      其中:內(nèi)容表為一個(gè)十六進(jìn)制數(shù),也可以是用單引號(hào)括起的一串字符。

      (4)填充內(nèi)存命令 F

      格式: F [ 范圍 ][ 單元內(nèi)容表 ] 功能:將單元內(nèi)容表中的內(nèi)容重復(fù)裝入內(nèi)存的指定范圍內(nèi)。

      (5)內(nèi)存搬家命令 M

      格式: M [ 源地址范圍 ][ 目標(biāo)起始地址 ] 其中源地址范圍和目的起始地址為偏移地址,段地址為 DS 的內(nèi)容。功能:把源地址范圍的內(nèi)容搬至以目標(biāo)起始地址開始的存儲(chǔ)單元中。

      (6)比較命令 C

      格式: C [ 源地址范圍 ],[ 目標(biāo)地址 ] 其中源地址范圍是由起始地址和終止地址指出的一片連續(xù)的存儲(chǔ)單元,目標(biāo)地址為與源地址所指單元對(duì)比的目標(biāo)地址起始地址。功能:從源地址范圍是由起始的地址單元開始逐個(gè)與目標(biāo)起始地址往后的單元順序比較每個(gè)單元內(nèi)容,比較到源終止地址為止。比較結(jié)果如果一致則不顯示任何信息,如果不一致,則以 [ 源地址 ][ 源內(nèi)容 ][ 目的內(nèi)容 ][ 目的地址 ] 的形式顯示失敗單元地址及內(nèi)容。

      (7)搜索指定內(nèi)容命令 S 格式: S [ 地址范圍 ][ 表 ] 功能:在指定地址范圍內(nèi)搜索表中內(nèi)容,搜索到就顯示表中元素所在地址。

      (8)檢查和修改寄存器內(nèi)容命令 R 格式: a · R b · R [ 寄存器名 ] 功能: a ·顯示 CPU 內(nèi)部所有寄存器的內(nèi)容和全部標(biāo)志位的狀態(tài)。b ·顯示和修改一個(gè)指定寄定器的內(nèi)容和標(biāo)志位的狀態(tài)。

      其中對(duì)狀態(tài)標(biāo)志寄存器 FLAG 以位的形式顯示,顯示時(shí),8 個(gè)狀態(tài)標(biāo)志的顯示次序和符號(hào)如表 B - 1 所示。表 B - 1 狀態(tài)標(biāo)志顯示形式

      標(biāo) 志 位 溢出標(biāo)志 OF 方向標(biāo)志 DF 中斷標(biāo)志 IF 符號(hào)標(biāo)志 SF 零標(biāo)志 ZF 輔助進(jìn)位 AF 奇偶標(biāo)志 PF 進(jìn)位標(biāo)志 CF

      (9)跟蹤與顯示命令 T

      格式: a · T[ =地址 ] 或 T [ 地址 ] b · T[ =地址 ][ 條數(shù) ] 或 T [ 地址 ][ 條數(shù) ] 功能: a ·執(zhí)行一條指定地址處的指令,停下來,顯示 CPU 所有寄存器內(nèi)容和全部標(biāo)志位的狀態(tài),以及下一條指令的地址和內(nèi)容。

      b ·為多條跟蹤命令,從指定地址開始;若命令中用 [ 地址 ] 給定了起始地址,則從起始地址開始,若未給定,則從當(dāng)前地址(CS:IP)開始,執(zhí)行命令中的 [ 條數(shù) ] 決定一共跟蹤幾條指令后返回 DEBUG 狀態(tài)。

      (10)反匯編命令 U 格式: a · U [ 地址 ] b · U [ 地址范圍 ] 功能:將指定范圍內(nèi)的代碼以匯編 語言形式顯示,同時(shí)顯示該代碼位于內(nèi)存的地址和機(jī)器。

      若在命令中沒有指定地址則以上一個(gè) U 命令的最后一條指令地址的下一個(gè)單元作為起始地址;若沒有輸入過 U 命令,則以 DEBUG 初始化段寄存器的值作為段地址,以 0100H 作為偏移地址。

      (11)命名命令 N 格式: N 文件名

      功能:在調(diào)用 DEBUG 時(shí),沒有文件名,則需要用 N 命令將要調(diào)用的文件名格式化到 CS:5CH 的文件控制塊中,才能用 L 命令把它調(diào)入內(nèi)存進(jìn)行調(diào)試(其它形式參考 DOS 手冊(cè))。

      (12)讀盤命令 L

      格式: a · L [ 地址 ][ 驅(qū)動(dòng)器號(hào) ][ 起始扇區(qū)號(hào) ][ 所讀扇區(qū)個(gè)數(shù) ] b · L [ 地址 ] c · L 功能: a ·把指定驅(qū)動(dòng)器和指定扇區(qū)范圍的內(nèi)容讀到內(nèi)存的指定區(qū)域中。其中地址是讀入內(nèi)存的起始地址,當(dāng)輸入時(shí)沒有給定地址,則隱含地址為 CS:100H。起始扇區(qū)號(hào)指邏輯扇區(qū)號(hào)的起始位置。所讀扇區(qū)個(gè)數(shù)是指從起始扇區(qū)號(hào)開始讀到內(nèi)存幾個(gè)扇區(qū)的內(nèi)容。驅(qū)動(dòng)器號(hào)為 0 或 1,0 表示 A 盤,1 表示 B 盤。

      b ·讀入已在 CS:5CH 中格式化的文件控制塊所指定的文件。在使用該命令前用 N 命令命名即可將要讀入的文件名格式化到 CS:5CH 的文件控制塊中,其中地址為內(nèi)存地址。

      狀 態(tài) 有 / 無 增 / 減 開 / 關(guān) 負(fù) / 正 零 / 非 有 / 無 偶 / 奇 有 / 無

      顯示形式(置位 / 復(fù)位)

      OV/NV DN/UP EI/DI NG/PL ZR/NZ AC/NA PE/PO CY/NC c ·同 b ·地址隱含在 CS : 100H 中。

      當(dāng)讀入的文件有擴(kuò)展名.COM 或.EXE,則始終裝入 CS:100H 中,命令中指定了地址也沒用。其中 BX 和 CX 中存放所讀文件的字節(jié)數(shù)。

      (13)寫盤命令 W

      格式: a · W[ 地址 ][ 驅(qū)動(dòng)器號(hào) ][ 起始扇區(qū)號(hào) ][ 所寫扇區(qū)個(gè)數(shù) ] b · W[ 地址 ] c · W 功能: a · 把在 DEBUGU 狀態(tài)下調(diào)試的程序或數(shù)據(jù)寫入指定的驅(qū)動(dòng)器中 , 起始扇區(qū)號(hào) , 所寫扇區(qū)個(gè)數(shù)為要占盤中幾個(gè)扇區(qū)。

      寫盤指定扇區(qū)的操作應(yīng)十分小心,如有差錯(cuò)將會(huì)破壞盤上的原有內(nèi)容。如果在命令行中的地址只包含偏移地址,W 命令認(rèn)為段地址在 CS 中。

      b ·當(dāng)鍵入不帶參數(shù)的寫盤命令時(shí),(或只鍵入地址參數(shù)的寫盤命令),寫盤命令把文件寫到軟盤上。該文件在用 W 命令之前用命名命令 N 將文件格式化在 CS:5CH 的文件控制塊中。c ·只有 W 命令以前而沒有任何參數(shù)時(shí),與 N 配合使用進(jìn)行寫盤操作。在用 W 命令以前在 BX 和 CX 中應(yīng)寫入文件的字節(jié)數(shù)。

      (15)輸出命令 O

      格式: O[ 端口地址 ] [ 字節(jié)值 ] 功能:向指定端口地址輸出一個(gè)字節(jié)。

      (16)運(yùn)行命令 G

      格式: G [ =地址 ][ 地址 [ 地址… ]] 功能:執(zhí)行用戶正在調(diào)試的程序。

      其中地址為執(zhí)行的起始地址,以 CS 中內(nèi)容作為段地址,以等號(hào)后面的地址為偏移地址。再后面的地址為斷點(diǎn)地址。在命令行中只有起始地址,沒有斷點(diǎn)地址,則程序在執(zhí)行時(shí)不中斷。DEBUG 規(guī)定最多設(shè)置 10 個(gè)斷點(diǎn)地址。設(shè)置多個(gè)斷點(diǎn)用于調(diào)試較大的程序,即程序中有多個(gè)模塊、多個(gè)通路時(shí)用,比較方便,在執(zhí)行時(shí)不論走哪條通路,程序都可以在斷點(diǎn)處停下來,以便調(diào)整程序。

      斷點(diǎn)地址為程序中斷處的偏移地址,段地址在 CS 中。

      當(dāng)執(zhí)行在 DEBUG 狀態(tài)下匯編的小段程序時(shí),只用 G 命令即可。

      (17)十六進(jìn)制運(yùn)算命令 H 格式: H 數(shù)據(jù) 1 數(shù)據(jù) 2 其中數(shù)據(jù) 1 和數(shù)據(jù) 2 為十六進(jìn)制數(shù)據(jù)。

      功能:將兩個(gè)十六進(jìn)制數(shù)進(jìn)行相加、減,結(jié)果顯示在屏幕上。(18)結(jié)束 DEBUG 返回到 DOS 命令 Q 格式: Q 功能:程序調(diào)試完退出 DEBUG 狀態(tài),返回到 DOS 狀態(tài)下。

      Q 命令不能把內(nèi)存的文件存盤,要想存盤必須在退出 DEBUG 之前用 W 命令寫盤

      讀書的好處

      1、行萬里路,讀萬卷書。

      2、書山有路勤為徑,學(xué)海無涯苦作舟。

      3、讀書破萬卷,下筆如有神。

      4、我所學(xué)到的任何有價(jià)值的知識(shí)都是由自學(xué)中得來的。——達(dá)爾文

      5、少壯不努力,老大徒悲傷。

      6、黑發(fā)不知勤學(xué)早,白首方悔讀書遲?!佌媲?/p>

      7、寶劍鋒從磨礪出,梅花香自苦寒來。

      8、讀書要三到:心到、眼到、口到

      9、玉不琢、不成器,人不學(xué)、不知義。

      10、一日無書,百事荒廢?!悏?/p>

      11、書是人類進(jìn)步的階梯。

      12、一日不讀口生,一日不寫手生。

      13、我撲在書上,就像饑餓的人撲在面包上?!郀柣?/p>

      14、書到用時(shí)方恨少、事非經(jīng)過不知難。——陸游

      15、讀一本好書,就如同和一個(gè)高尚的人在交談——歌德

      16、讀一切好書,就是和許多高尚的人談話。——笛卡兒

      17、學(xué)習(xí)永遠(yuǎn)不晚?!郀柣?/p>

      18、少而好學(xué),如日出之陽;壯而好學(xué),如日中之光;志而好學(xué),如炳燭之光。——?jiǎng)⑾?/p>

      19、學(xué)而不思則惘,思而不學(xué)則殆?!鬃?/p>

      20、讀書給人以快樂、給人以光彩、給人以才干?!喔?/p>

      第四篇:石油論文編寫格式

      科技論文的編寫格式1.章、條、條、條的編號(hào)

      按國家標(biāo)準(zhǔn)《標(biāo)準(zhǔn)化工作導(dǎo)則第1單元:標(biāo)準(zhǔn)的起草與表述規(guī)則第1部分:標(biāo)準(zhǔn)編寫的基本規(guī)定》的規(guī)定,科技論文的章、條、條、條的劃分、編號(hào)和排列均應(yīng)采用阿拉伯?dāng)?shù)字分級(jí)編寫,即一級(jí)標(biāo)題的編號(hào)為1,2,…;二級(jí)標(biāo)題的號(hào)為1.1,1.2,…,2.1,2.2,…;三級(jí)標(biāo)題的編號(hào)為1.1.1,1.1.2,…,如此等等,詳細(xì)參見GB/T1.1-93和GB7713-87。

      國標(biāo)規(guī)定的這一章條編號(hào)方式對(duì)著者、編者和讀者都具有顯著的優(yōu)越性。

      2.題名(篇名)

      題名是科技論文的必要組成部分。它要求用最簡潔、恰當(dāng)?shù)脑~組反映文章的特定內(nèi)容,把論文的主題明白無誤地告訴讀者,并且使之具有畫龍點(diǎn)睛,啟迪讀者興趣的功能。一般情況下,題名中應(yīng)包括文章的主要關(guān)鍵詞??傊?,題名的用詞十分重要,它直接關(guān)系到讀者對(duì)文章的取舍態(tài)度,務(wù)必字字斟酌。題名像一條標(biāo)簽,切忌用冗長的主、謂、賓語結(jié)構(gòu)的完整語句逐點(diǎn)描述論文的內(nèi)容,以保證達(dá)到“簡潔”的要求;而“恰當(dāng)”的要求應(yīng)反映在用詞的中肯、醒目、好讀好記上。當(dāng)然,也要避免過分籠統(tǒng)或嘩眾取寵的所謂簡潔,缺乏可檢索性,以至于名實(shí)不符或無法反映出每篇文章應(yīng)有的主題特色。

      題名應(yīng)簡短,不應(yīng)很長,國際上不少著名期刊都對(duì)題名的用字有所限制。對(duì)于我國的科技期刊,論文題名用字不宜超過20個(gè)漢字,外文題名不超過10個(gè)實(shí)詞。使用簡短題名而語意未盡時(shí),或系列工作分篇報(bào)告時(shí),可借助于副標(biāo)題名以補(bǔ)充論文的下層次內(nèi)容。

      題名應(yīng)盡量避免使用化學(xué)結(jié)構(gòu)式、數(shù)學(xué)公式、不太為同行所熟悉的符號(hào)、簡稱、縮寫以及商品名稱等。

      3.著者

      著者署名是科技論文的必要組成部分。著者系指在論文主題內(nèi)容的構(gòu)思、具體研究工作的執(zhí)行及撰稿執(zhí)筆等方面的全部或局部上做出主要貢獻(xiàn)的人員,能夠?qū)φ撐牡闹饕獌?nèi)容負(fù)責(zé)答辯的人員,是論文的法定主權(quán)人和責(zé)任者。署名人數(shù)不宜太多,對(duì)論文涉及的部分內(nèi)容作過咨詢、給過某種幫助或參與常規(guī)勞動(dòng)的人員不宜按著者身份署名,但是可以注明他們?cè)鴧⑴c了哪一部分具體工作,或通過文末致謝的方式對(duì)他們的貢獻(xiàn)和勞動(dòng)表示謝意。

      合寫論文的諸著者應(yīng)按論文工作貢獻(xiàn)的多少順序排列。著者的姓名應(yīng)給出全名。科學(xué)技術(shù)文章一般均用著者的真實(shí)姓名,不用變化不定的筆名。同時(shí)還應(yīng)給出著者完成研究工作的單位或著者所在的工作單位或通信地址,以便讀者在需要時(shí)可與著者聯(lián)系。

      [示例]:

      熊易群1,賈改蓮2,鐘小鋒1,劉建君1

      (1陜西師范大學(xué)教育系,陜西西安710062;2陜西省教育學(xué)院教育系,陜西西安710061)

      4.摘要

      摘要是現(xiàn)代科技論文的必要附加部分,只有極短的文章才能省略。它是解決讀者既要盡可能掌握浩瀚的信息海洋,又要面對(duì)自身精力十分有限這一對(duì)矛盾的有效手段。

      根據(jù)GB6447-86的定義,摘要是以提供文獻(xiàn)內(nèi)容梗概為目的,不加評(píng)論和補(bǔ)充解釋,簡明確切地記述文獻(xiàn)重要內(nèi)容的短文。

      摘要有兩種基本寫法:報(bào)道性摘要--指明一次文獻(xiàn)的主題范圍及內(nèi)容梗概的簡明摘要(也稱簡介);指示性摘要--指示一次文獻(xiàn)的陳述主題及取得的成果性質(zhì)和水平的簡明摘要。介乎其間的是報(bào)道/指示性摘要--以報(bào)道性摘要形式表述一次文獻(xiàn)中信息價(jià)值較高的部分,而以指示性摘要形式表述其余部分的摘要。一般的科技論文都應(yīng)盡量寫成報(bào)道性摘要,而對(duì)綜述性、資料性或評(píng)論性的文章可寫成指示性或報(bào)道/指示性摘要。

      摘要應(yīng)簡明,它的詳簡程度取決于文獻(xiàn)的內(nèi)容。通常中文摘要以不超過400字為宜,純指示性摘要可以簡短一些,應(yīng)控制在200字上下(GB6447-86規(guī)定:報(bào)道性摘要和報(bào)道/指示性摘要一般以400字為宜;指示性摘要一般以200字左右為宜。GB7713-87規(guī)定:中文摘要一般不宜超過200~300字;外文摘要不宜超過250個(gè)實(shí)詞。如遇特殊需要字?jǐn)?shù)可以略多)。對(duì)于使用英、俄、德、日、法以外文種書寫的一次文獻(xiàn),它們的摘要可以適當(dāng)詳盡一些。學(xué)位論文等文獻(xiàn)具有某種特殊性,為了評(píng)審,可寫成變異式的摘要,不受字?jǐn)?shù)的限制。摘要的編寫應(yīng)該客觀、真實(shí),切忌摻雜進(jìn)編寫者的主觀見解、解釋和評(píng)論。如果發(fā)現(xiàn)一次文獻(xiàn)有原則性錯(cuò)誤,可加注“摘者注”。

      摘要應(yīng)具有獨(dú)立性和自明性,并擁有與一次文獻(xiàn)同等量的主要信息,即不閱讀文獻(xiàn)的全文,就能獲得必要的信息。因此摘要是一種可以被引用的完整短文。

      [編寫摘要的注意事項(xiàng)]:

      ① 排除在本學(xué)科領(lǐng)域方面已經(jīng)成為常識(shí)的內(nèi)容;

      ② 不得簡單地重復(fù)文章篇名中已經(jīng)表述過的信息;

      ③要求結(jié)構(gòu)嚴(yán)謹(jǐn),語義確切,表述簡明,一氣呵成,一般不分或力求少分段落;忌發(fā)空洞的評(píng)語,不作模棱兩可的結(jié)論。沒有得出結(jié)論的文章,可在摘要中作扼要的討論。

      ④ 要用第三人稱,不要使用“作者”、“我們”等作為摘要陳述的主語;

      ⑤要采用規(guī)范化的名詞術(shù)語。尚未規(guī)范化的,以采用一次文獻(xiàn)所采用的為原則。如新術(shù)語尚無合適的中文術(shù)語譯名,可使用原文或譯名后加括號(hào)注明原文;

      ⑥不要使用圖、表或化學(xué)結(jié)構(gòu)式,以及相鄰專業(yè)的讀者尚難于清楚理解的縮略語、簡稱、代號(hào)。如果確有必要,在摘要首次出現(xiàn)時(shí)必須加以說明;

      ⑦ 不得使用一次文獻(xiàn)中列出的章節(jié)號(hào)、圖號(hào)、表號(hào)、公式號(hào)以及參考文獻(xiàn)號(hào)等;

      ⑧ 必要提及的商品名應(yīng)加注學(xué)名。

      當(dāng)然,應(yīng)該使用法定計(jì)量單位以及正確地書寫規(guī)范字和標(biāo)點(diǎn)符號(hào)。

      摘要的書寫要求詳細(xì)見國標(biāo)GB6447-86。

      5.關(guān)鍵詞

      為了便于讀者從浩如煙海的書刊中尋找文獻(xiàn),特別是適應(yīng)計(jì)算機(jī)自動(dòng)檢索的需要,GB3179/T-92規(guī)定,現(xiàn)代科技期刊都應(yīng)在學(xué)術(shù)論文的摘要后面給出3~8個(gè)關(guān)鍵詞。關(guān)鍵詞的標(biāo)引應(yīng)按GB3860-83《文獻(xiàn)主題標(biāo)引規(guī)則》的規(guī)定,在審讀文獻(xiàn)題名、前言、結(jié)論、圖表,特別是在審讀文獻(xiàn)的基礎(chǔ)上,逐篇對(duì)文獻(xiàn)進(jìn)行主題分析,然后選定能反映文獻(xiàn)特征內(nèi)容,通用性比較強(qiáng)的關(guān)鍵詞。首先要選取列入《漢語主題詞表》、《MeSH》等詞表中的規(guī)范性詞(稱敘詞或主題詞)。對(duì)于那些反映新技術(shù)、新學(xué)科而尚未被主題詞表錄入的新產(chǎn)生的名詞術(shù)語,亦可用非規(guī)范的自由詞標(biāo)出,以供詞表編纂單位在修訂詞表時(shí)參照選用。要強(qiáng)調(diào)的一點(diǎn)是:一定不要為了強(qiáng)調(diào)反映文獻(xiàn)主題的全面性,把關(guān)鍵詞寫成是一句句內(nèi)容“全面”的短語。

      6.引言

      引言(前言、序言、概述)經(jīng)常作為論文的開端,主要回答“為什么研究(why)”這個(gè)問題。它簡明介紹論文的背景、相關(guān)領(lǐng)域的前人研究歷史與現(xiàn)狀(有時(shí)亦稱這部分為文獻(xiàn)綜述),以及著者的意圖與分析依據(jù),包括論文的追求目標(biāo)、研究范圍和理論、技術(shù)方案的選取等。引言應(yīng)言簡意賅,不要等同于摘要,或成為摘要的注釋。引言中不應(yīng)詳述同行熟知的,包括教科書上已有陳述的基本理論、實(shí)驗(yàn)方法和基本方程的推導(dǎo);除非是學(xué)位論文,為了反映著者的學(xué)業(yè)等等,允許有較詳盡的文獻(xiàn)綜述段落。如果在正文中采用比較專業(yè)化的術(shù)語或縮寫詞時(shí),最好先在引言中定義說明。

      7.正文

      正文是科技論文的核心組成部分,主要回答“怎么研究(how)”這個(gè)問題。正文應(yīng)充分闡明論文的觀點(diǎn)、原理、方法及具體達(dá)到預(yù)期目標(biāo)的整個(gè)過程,并且突出一個(gè)“新”字,以反映論文具有的首創(chuàng)性。根據(jù)需要,論文可以分層深入,逐層剖析,按層設(shè)分層標(biāo)題。

      正文通常占有論文篇幅的大部分。它的具體陳述方式往往因不同學(xué)科、不同文章類型而有很大差別,不能牽強(qiáng)地做出統(tǒng)一的規(guī)定。一般應(yīng)包括材料、方法、結(jié)果、討論和結(jié)論等幾個(gè)部分。

      試驗(yàn)與觀察、數(shù)據(jù)處理與分析、實(shí)驗(yàn)研究結(jié)果的得出是正文的最重要成分,應(yīng)該給予極大的重視。要尊重事實(shí),在資料的取舍上不應(yīng)該隨意摻入主觀成分,或妄加猜測,不應(yīng)該忽視偶發(fā)性現(xiàn)象和數(shù)據(jù)。

      寫科技論文不要求有華麗的詞藻,但要求思路清晰,合乎邏輯,用語簡潔準(zhǔn)確、明快流暢;內(nèi)容務(wù)求客觀、科學(xué)、完備,要盡量讓事實(shí)和數(shù)據(jù)說話;凡是用簡要的文字能夠講解的內(nèi)容,應(yīng)用文字陳述。用文字不容易說明白或說起來比較繁瑣的,應(yīng)由表或圖(必要時(shí)用彩圖)來陳述。表或圖要具有自明性,即其本身給出的信息就能夠說明欲表達(dá)的問題。數(shù)據(jù)的引用要嚴(yán)謹(jǐn)確切,防止錯(cuò)引或重引,避免用圖形和表格重復(fù)地反映同一組數(shù)據(jù)。資料的引用要標(biāo)明出處。

      物理量與單位符號(hào)應(yīng)采用《中華人民共和國法定計(jì)量單位》的規(guī)定,選用規(guī)范的單位和書寫符號(hào);不得已選用非規(guī)范的單位或符號(hào)時(shí)應(yīng)考慮行業(yè)的習(xí)慣,或使用法定的計(jì)量單位和符號(hào)加以注解和換算。

      教科書式的撰寫方法是撰寫科技論文的第一大忌。對(duì)已有的知識(shí)避免重新描述和論證,盡量采用標(biāo)注參考文獻(xiàn)的方法;對(duì)用到的某些數(shù)學(xué)輔佐手段,應(yīng)防止過分注意細(xì)節(jié)的數(shù)學(xué)推演,需要時(shí)可采用附錄的形式供讀者選閱。

      8.結(jié)論

      結(jié)論(或討論)是整篇文章的最后總結(jié)。盡管多數(shù)科技論文的著者都采用結(jié)論的方式作為結(jié)束,并通過它傳達(dá)自己欲向讀者表述的主要意向,但它不是論文的必要組成部分。

      結(jié)論不應(yīng)是正文中各段小結(jié)的簡單重復(fù),主要回答“研究出什么(what)”。它應(yīng)該以正文中的試驗(yàn)或考察中得到的現(xiàn)象、數(shù)據(jù)和闡述分析作為依據(jù),由此完整、準(zhǔn)確、簡潔地指出:

      ① 由對(duì)研究對(duì)象進(jìn)行考察或?qū)嶒?yàn)得到的結(jié)果所揭示的原理及其普遍性;

      ② 研究中有無發(fā)現(xiàn)例外或本論文尚難以解釋和解決的問題;

      ③ 與先前已經(jīng)發(fā)表過的(包括他人或著者自己)研究工作的異同;

      ④ 本論文在理論上與實(shí)用上的意義與價(jià)值;

      ⑤ 對(duì)進(jìn)一步深入研究本課題的建議。

      9.致謝

      致謝一般單獨(dú)成段,放在文章的最后面,但它不是論文的必要組成部分。它是對(duì)曾經(jīng)給予論文的選題、構(gòu)思或撰寫以指導(dǎo)或建議,對(duì)考察或?qū)嶒?yàn)過程中做出某種貢獻(xiàn)的人員,或給予過技術(shù)、信息、物質(zhì)或經(jīng)費(fèi)幫助的單位、團(tuán)體或個(gè)人致以謝意。一般對(duì)例外的勞動(dòng)可不必專門致謝。

      10.參考文獻(xiàn)

      文后參考文獻(xiàn)是現(xiàn)代科技論文的重要組成部分,但如果撰寫論文時(shí)未參考文獻(xiàn)也可以不寫。它是反映文稿的科學(xué)依據(jù)和著者尊重他人研究成果而向讀者提供文中引用有關(guān)資料的出處,或?yàn)榱斯?jié)約篇幅和敘述方便,提供在論文中提及而沒有展開的有關(guān)內(nèi)容的詳盡文本。任何不重視參考文獻(xiàn),甚至于使用“文后參考文獻(xiàn)從略”的編輯處理方法都是錯(cuò)誤的。

      被列入的參考文獻(xiàn)應(yīng)該只限于那些著者親自閱讀過和論文中引用過,而且正式發(fā)表的出版物,或其他有關(guān)檔案資料,包括專利等文獻(xiàn)。私人通信、內(nèi)部講義及未發(fā)表的著作,一般不宜作為參考文獻(xiàn)著錄,但可用腳注或文內(nèi)注的方式,以說明引用依據(jù)。國內(nèi)外對(duì)文后參考文獻(xiàn)的著錄方法歷來很多,但自從ISO制訂國際標(biāo)準(zhǔn)以來已有漸趨一致的動(dòng)向,目前,我國文獻(xiàn)工作標(biāo)準(zhǔn)化技術(shù)委員會(huì)已經(jīng)根據(jù)國際標(biāo)準(zhǔn)化工作發(fā)展趨勢,制訂出自己的國家標(biāo)準(zhǔn)--GB7714-87《文后參考文獻(xiàn)著錄規(guī)則》,明確規(guī)定我國的科技期刊采用國際上通行的“順序編碼制”和“著者-出版年制”。前者根據(jù)正文中引用參考文獻(xiàn)的先后,按著者、題名、出版事項(xiàng)的順序逐項(xiàng)著錄;后者首先根據(jù)文種(按中文、日文、英文、俄文、其他文種的順序)集中,然后按參考文獻(xiàn)著的姓氏筆畫或姓氏首字母的順序排列,同一著者有多篇文獻(xiàn)被參考引用時(shí),再按文獻(xiàn)出版年份的先后依次給出。

      文后參考文獻(xiàn)的著錄形式還是比較復(fù)雜的,具體執(zhí)行時(shí)請(qǐng)隨時(shí)查閱GB7714-87的規(guī)定。

      參考文獻(xiàn)著錄的條目以小于正文的字號(hào)編排在文末。其格式為:

      專著、論文集、學(xué)位論文、報(bào)告--[序號(hào)]主要責(zé)任者.文獻(xiàn)題名[文獻(xiàn)類型標(biāo)識(shí)].出版地,出版者,出版年,起止頁碼(任選)。

      [示例]:

      [1]周振甫.周易譯注[M].北京:中華書局。1991。

      [2]陳崧.五四前后東方西文化問題論戰(zhàn)文選[C].北京:中國社會(huì)科學(xué)出版社,1985。

      [3]陳桐生.中國史官文化與《史記》[D].西安:陜西師范大學(xué)文學(xué)研究所,1992。

      [4]白永秀,劉敢,任保平.西安金融、人才、技術(shù)三大要素市場培育與發(fā)展研究[R].西安:陜西師范大學(xué)西北經(jīng)濟(jì)發(fā)展研究中心,1998。

      期刊文章--[序號(hào)]主要責(zé)任者.文獻(xiàn)題名[J].刊名,年,卷(期):起止頁碼。

      [示例]:

      [5]何齡修.讀顧城《南明史》[J].中國史研究,1998,(3):167-173。

      論文集中的析出文獻(xiàn)--[序號(hào)]析出文獻(xiàn)主要責(zé)任者.析出文獻(xiàn)題名[A]。

      原文獻(xiàn)主要責(zé)任者(任選).原文獻(xiàn)題名[C].出版地:出版者,出版年.析出文獻(xiàn)起止頁碼。

      [示例]:

      [6]瞿秋白.現(xiàn)代文明的問題與社會(huì)主義[A].羅榮渠.從西化到現(xiàn)代化[c].北京:北京大學(xué)出版社,1990.121-133。

      報(bào)紙文章--[序號(hào)]主要責(zé)任者.文獻(xiàn)題名[N].報(bào)紙名,出版日期(版次)。

      [示例]:

      [7]謝希德.創(chuàng)造學(xué)習(xí)的新思路[N].人民日?qǐng)?bào),1998-12-25(10)。

      國際標(biāo)準(zhǔn)、國家標(biāo)準(zhǔn)--[序號(hào)]標(biāo)準(zhǔn)編號(hào),標(biāo)準(zhǔn)名稱[S]。

      [示例]:

      [8]GB/T 16159-1996,漢語拼音正詞法基本規(guī)則。

      電子文獻(xiàn)--[序號(hào)]主要責(zé)任者.電子文獻(xiàn)題名[電子文獻(xiàn)及載體類型標(biāo)識(shí)]-電子文獻(xiàn)的出處或可獲得地址,發(fā)表或更新日期/引用日期(任選)。[示例]:

      [9]王明亮.關(guān)于中國學(xué)術(shù)期刊標(biāo)準(zhǔn)化數(shù)據(jù)庫系統(tǒng)工程的進(jìn)展[EB/OL].http://,1998-08-16/1998-10-04。

      [10]萬錦坤.中國大學(xué)學(xué)報(bào)論文文摘(1983-1993).英文版[DB/CD].北京:中國大百科全書出版社,1996.各種未定類型的文獻(xiàn)--[序號(hào)]主要責(zé)任者.文獻(xiàn)題名[z].出版地:出版者,出版年。

      [示例]:

      [11]張永祿.唐代長安詞典[z].西安:陜西人民出版社,1980。

      11.附錄

      附錄是論文的附件,不是必要組成部分。它在不增加文獻(xiàn)正文部分的篇幅和不影響正文主體內(nèi)容敘述連貫性的前提下,向讀者提供論文中部分內(nèi)容的詳盡推導(dǎo)、演算、證明、儀器、裝備或解釋、說明,以及提供有關(guān)數(shù)據(jù)、曲線、照片或其他輔助資料如計(jì)算機(jī)的框圖和程序軟件等。

      附錄與正文一樣,編入連續(xù)頁碼。

      第五篇:51單片機(jī)課程設(shè)計(jì) 俄羅斯方塊

      單片機(jī)課程設(shè)計(jì)

      俄羅斯方塊

      學(xué)院:工程技術(shù)學(xué)院

      專業(yè):08級(jí)電子科學(xué)與技術(shù)

      小組成員:

      何冠羲,馬志祥,李洋,張世剛,葉彪,鄭先安,洪之

      目錄

      摘要

      引言

      1.程序整體思路

      2.8X8LED模塊顯示原理 3.硬件電路仿真圖 4.圖形顯示 5.消層算法 6.旋轉(zhuǎn)算法 7.實(shí)物焊接

      8.心得體會(huì)

      附錄 程序代碼

      摘 要

      記得在很小的時(shí)候,有一種掌上游戲機(jī),里面有一款游戲叫做俄羅斯方塊,那時(shí)的我們只是簡單的按照游戲規(guī)則進(jìn)行“堆積木”,而其中的原理卻很少有人去思考,畢竟當(dāng)時(shí)的我們都還很年幼。

      基于單片機(jī)課程設(shè)計(jì)的機(jī)會(huì),我們這個(gè)小組將使用51單片機(jī)和8x8led的組合,來實(shí)現(xiàn)比較簡單的俄羅斯方塊設(shè)計(jì)。

      此次設(shè)計(jì)初期是在keil和proteus聯(lián)合仿真中進(jìn)行,編程語言為51匯編,后期是進(jìn)行實(shí)物焊接。

      論文描述了俄羅斯方塊的主要功能函數(shù)的實(shí)現(xiàn),算法分析和實(shí)物焊接過程中遇到的問題。

      關(guān)鍵詞:俄羅斯方塊;算法; 8X8led;

      引 言

      游戲是人們活動(dòng)中一項(xiàng)非常重要的內(nèi)容,有人認(rèn)為如果哪一天人類對(duì)所有的游戲都失去興趣,恐怕世界的末日就要到了。電腦對(duì)游戲的貢獻(xiàn)有目共睹,現(xiàn)在摸過電腦的人很少有沒玩過電腦游戲的,喜歡游戲的人也很少有不玩電腦的。

      俄羅斯方塊是一款風(fēng)靡全球的電視游戲機(jī)和掌上游戲機(jī)游戲,它曾經(jīng)造成的轟動(dòng)與造成的經(jīng)濟(jì)價(jià)值可以說是游戲史上的一件大事。這款游戲最初是由蘇聯(lián)的游戲制作人Alex Pajitnov制作的,它看似簡單但卻變化無窮,令人上癮。相信大多數(shù)用戶都還記得為它癡迷得茶不思飯不想的那個(gè)俄羅斯方塊時(shí)代。究其歷史,俄羅斯方塊最早還是出現(xiàn)在PC機(jī)上,而我國的用戶都是通過紅白機(jī)了解、喜歡上它的。現(xiàn)在聯(lián)眾又將重新掀起這股讓人沉迷的俄羅斯方塊風(fēng)潮。對(duì)一般用戶來說,它的規(guī)則簡單,容易上手,且游戲過程變化無窮,而在“聯(lián)眾俄羅斯方塊”中,更有一些聯(lián)眾網(wǎng)絡(luò)游戲所獨(dú)有的魅力――有單機(jī)作戰(zhàn)與兩人在線對(duì)戰(zhàn)兩種模式,用戶可任選一種進(jìn)行游戲。網(wǎng)絡(luò)模式還增加了積分制,使用戶既能感受到游戲中的樂趣,也給用戶提供了一個(gè)展現(xiàn)自己高超技藝的場所。

      俄羅斯方塊游戲可以說是隨計(jì)算機(jī)的發(fā)展而發(fā)展,并不斷推陳出新演變出各種類似游戲, 深受廣大玩家喜愛。這個(gè)游戲有的簡單, 有的復(fù)雜, 但其根本原理是一樣的都是對(duì)運(yùn)動(dòng)的方塊進(jìn)行組合, 來訓(xùn)練玩家的反應(yīng)能力。本文利用單片機(jī)進(jìn)行俄羅斯方塊設(shè)計(jì),采用51匯編語言進(jìn)行編程,基于匯編語言的原因是在編寫程序的過程中,對(duì)于程序的執(zhí)行會(huì)有一個(gè)比較直觀的表現(xiàn)。

      1.程序整體思路

      單片機(jī)上的程序設(shè)計(jì)一般是一個(gè)大循環(huán)結(jié)構(gòu),對(duì)于俄羅斯方塊的程序設(shè)計(jì),首先產(chǎn)生一個(gè)偽隨機(jī)數(shù),其范圍是0-6,然后程序根據(jù)此數(shù)值所對(duì)應(yīng)的圖形模塊裝入ram的固定區(qū)域內(nèi),緊接著將此圖像寫入led所對(duì)應(yīng)的顯示緩沖區(qū)中,顯示程序?qū)⒕彌_區(qū)內(nèi)的內(nèi)容顯示在led上,如果沒有控制鍵按下,圖形將自動(dòng)向下移動(dòng)。如果有鍵按下,程序?qū)⒏鶕?jù)按下的鍵來改變圖形存儲(chǔ)區(qū)的值,同時(shí)程序?qū)⑴袛鄨D形是否已到達(dá)邊界,當(dāng)圖形最上層到達(dá)顯示區(qū)頂部,則游戲結(jié)束,此時(shí)將清楚顯示緩沖的內(nèi)容,游戲重新開始。2.8x8led顯示原理

      8x8led顯示屏的原理圖如下

      由于人眼的視覺暫留現(xiàn)象,通過逐行掃描顯示的方式來顯示要顯示的內(nèi)容,當(dāng)每一行掃描的時(shí)間很小時(shí)人眼觀察的將是一幅完整的圖像。

      3. 硬件電路仿真圖

      .4.圖形顯示

      8x8led一共有64個(gè)led,可以從下至上一次對(duì)其編號(hào),對(duì)于顯示類的基本操作是任意點(diǎn)亮一個(gè)點(diǎn),熄滅一個(gè)點(diǎn),任意點(diǎn)亮n(0

      我們將ram中從21h單元到28h單元作為led的顯示緩沖區(qū),這里面的每一位對(duì)應(yīng)led的一個(gè)點(diǎn),led將實(shí)時(shí)顯示緩沖區(qū)的內(nèi)容,也就是當(dāng)此緩沖區(qū)內(nèi)容一改變,led上看到的也會(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ū)。5.消層算法

      設(shè)置循環(huán)變量數(shù)R2=8,即總共至少要掃描8次,每一次循環(huán)過程中檢測此行是否已滿,也就是檢測這一行所對(duì)應(yīng)的存儲(chǔ)單元是否全為一,如果全為一則將消去此行,即將此行對(duì)應(yīng)的ram清零。同時(shí)將此行上面ram的內(nèi)容按每列依次下移,下移完之后重新將R2=0,又從第一行開始檢測。此行不全為零時(shí)只需將R2=R2+1。直到R2=9消層過程結(jié)束。6.旋轉(zhuǎn)算法

      首先要確定一個(gè)旋轉(zhuǎn)中心,假如旋轉(zhuǎn)中心的編號(hào)是34,將34除以8,商是4存入R1余數(shù)是2存入R2,及時(shí)用商和余數(shù)建立坐標(biāo)系。此時(shí)若以此為旋轉(zhuǎn)中心的圖形需要旋轉(zhuǎn),則將每一個(gè)小方塊對(duì)應(yīng)編號(hào)除以8,商減去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乘以8再加上y2。執(zhí)行四次此過程旋轉(zhuǎn)結(jié)束。7.實(shí)物焊接

      器件:stc51單片機(jī)一塊,8x8led顯示模塊一塊,電阻10k10個(gè),開關(guān)5個(gè),與門,12m晶振一個(gè),電容3個(gè)。

      首先按照目的進(jìn)行進(jìn)行元器件布局,然后按照電路圖里的導(dǎo)線的連接次序?qū)⒃骷冈陔娐钒迳?,焊好之后進(jìn)行調(diào)試。8.心得體會(huì)

      寫程序的過程中,首先應(yīng)該把程序思路理清,然后再寫代碼,否則寫到一半感覺行不通時(shí)是很令人心煩的。還有就是焊接是一個(gè)技術(shù)活,因?yàn)樵陔娮庸に噷?shí)習(xí)之后大家便沒有碰過電烙鐵,所以焊的過程還是很辛苦的。

      附錄:程序代碼

      ORG

      0000H AJMP

      START ORG

      0003H AJMP

      INTERRUPT AA

      EQU

      10000000B BB

      EQU

      11111111B HANG

      EQU

      32H LIE

      EQU

      33H COUNT

      EQU

      34H REMOVEROW

      EQU

      35H STEPS

      EQU

      36H XUNHUAN

      EQU

      37H BIANLIANG

      EQU

      38H GRAPHRAM1

      EQU

      39H GRAPHRAM2

      EQU

      40H GRAPHRAM3

      EQU

      41H GRAPHRAM4

      EQU

      42H XXX

      EQU

      43H YYY

      EQU

      44H KEY

      EQU

      45H LEDHEAD

      EQU

      21H

      TEST

      BIT 100 BITS

      BIT 99 RIGHT

      BIT 98 LEFT

      BIT 97 DOWN

      BIT 96 HARD

      BIT 95 TURN

      BIT 94 KEYDOWN

      BIT 93 TESTING

      BIT 92 BOTTOM

      BIT 91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;程序由此處開始執(zhí)行;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;START: MOV

      TCON,#00000001B;;;;;;;;;;;;;設(shè)置外部中斷0響應(yīng)方式為下降沿觸發(fā) SETB

      EX0 SETB

      EA MOV

      SP,#60H;;;;;;;;;;;;;;;;;;;;;將堆棧指針SP設(shè)置在RAM的高地址處 MOV

      R7,#6;;;;;;;;;;;;;;;;;;;;;;R7作為存放0-6這7個(gè)隨機(jī)數(shù)的變量

      MOV

      P0,#11111111B;;;;;;;;;;;;;;;;;;;;;;將P0口最為輸入口 LCALL

      WRITEGRAPHTORAM CLR

      TESTING GAMELOOP:;CLR

      EA LCALL

      SHOWGRAPH MOV

      R6,#30 TIMING: LCALL

      SHOWLEDRAM LCALL

      DJNZ

      LCALL

      JNB

      ABCD: MOV

      CJNE

      LCALL

      LCALL

      JMP

      NEXT1:;JB

      JMP

      KEY1: CLR

      CLR

      MOV

      CJNE

      LCALL

      JB

      LCALL

      LCALL

      LCALL

      KEY2: CJNE

      LCALL

      JB

      LCALL

      LCALL

      LCALL

      KEY3: CJNE

      ;LCALL

      ;JNB

      DELAY

      R6,TIMING

      DOWNTEST DOWN,NEXT1

      A,28H A,#0,GAMEOVER

      REMOVEBLOCK

      WRITEGRAPHTORAM GAMELOOP KEYDOWN,KEY1 KEY4 TESTING KEYDOWN

      A,KEY A,#1,KEY2;1-LEFT

      LEFTTEST LEFT,KEY4

      CLEANGRAPH

      MOVELEFT

      GAMELOOP A,#2,KEY3;2-RIGHT

      RIGHTTEST RIGHT,KEY4

      CLEANGRAPH

      MOVERIGHT

      GAMELOOP A,#4,KEY4;4-ROTATE

      ROTATIONTEST

      TURN,KEY4

      LCALL

      CLEANGRAPH LCALL

      ROTATION JMP

      GAMELOOP KEY4: CJNE

      A,#8,KEY5 SWEAT: LCALL

      DOWNTEST JB

      DOWN,GAMELOOP LCALL

      CLEANGRAPH LCALL

      MOVEDOWN JMP

      SWEAT KEY5: LCALL

      CLEANGRAPH LCALL

      MOVEDOWN INC

      R7 CJNE

      R7,#7,NEXT5 MOV

      R7,#0 NEXT5: JMP

      GAMELOOP GAMEOVER: MOV

      R0,#8 MOV

      R1,#LEDHEAD CLEAR: LCALL

      CLEANGRAPH MOV

      @R1,#0 INC

      R1 DJNZ

      R0,CLEAR MOV

      R0,#4 MOV

      R1,#GRAPHRAM1 ASDF: MOV

      A,@R1 ADD

      A,#16 MOV

      @R1,A INC

      R1 DJNZ

      R0,ASDF JMP

      GAMELOOP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;測試圖形是否能向下移動(dòng);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DOWNTEST: PUSH

      0 PUSH

      PUSH

      PUSH

      PUSH

      B PUSH

      ACC

      MOV

      R2,#4 MOV

      R0,#GRAPHRAM1 DOWN0: MOV

      A,@R0 SUBB

      A,#8 MOV

      B,A MOV

      R3,#4 CLR

      C MOV

      R1,#GRAPHRAM1 DOWN2: CLR

      C SUBB

      A,@R1 JZ

      DOWN1 INC

      R1 MOV

      A,B DJNZ

      R3,DOWN2 LCALL

      TESTBIT JB

      BITS,DOWN3 DOWN1: INC

      R0 DJNZ

      R2,DOWN0 CLR

      DOWN JMP

      HOPE DOWN3: SETB

      DOWN;DOWN WEI YI BIAO SHI BU NENG WANG CPL

      P3.4 JMP

      DOWN4 HOPE: MOV

      R2,#4 MOV

      R0,#GRAPHRAM1 YOUQIANG2: MOV

      R3,#1 CCC2: MOV

      A,R3 MOV

      B,A CLR

      C SUBB

      A,@R0 JNZ

      CCC1 SETB

      DOWN SETB

      BOTTOM JMP

      DOWN4

      XIA YI DONG CCC1: MOV

      A,B INC

      R3 CJNE

      R3,#9,CCC2 INC

      R0 DJNZ

      R2,YOUQIANG2 DOWN4: POP

      ACC POP

      B POP POP POP POP

      0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;外部中斷0中斷處理程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INTERRUPT: PUSH

      0 PUSH

      PUSH

      ACC INC

      R7 CJNE

      R7,#7,INTT MOV

      R7,#0 INTT: SETB

      TESTING SETB

      KEYDOWN MOV

      A,P0 CPL

      A MOV

      KEY,A POP

      ACC POP POP

      0 RETI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;測試能否旋轉(zhuǎn)

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;向下移動(dòng)

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVEDOWN: PUSH

      0 PUSH

      PUSH

      ACC MOV

      R0,#GRAPHRAM1 MOV

      R1,#4 MOVE1: MOV

      A,@R0 CLR

      C SUBB

      A,#8 MOV

      @R0,A INC

      R0 DJNZ

      R1,MOVE1 POP

      ACC POP POP

      0 RET

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;向左移動(dòng)

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVELEFT: PUSH

      0 PUSH

      PUSH

      ACC MOV

      R0,#GRAPHRAM1 MOV

      R1,#4 MOVE2: MOV

      A,@R0 CLR

      C SUBB

      A,#1 MOV

      @R0,A INC

      R0 DJNZ

      R1,MOVE2 POP

      ACC POP POP

      0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;向右移動(dòng)

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVERIGHT: PUSH

      0 PUSH

      PUSH

      ACC MOV

      R0,#GRAPHRAM1 MOV

      R1,#4 MOVE3: MOV

      A,@R0 CLR

      C INC

      A

      MOV

      @R0,A INC

      R0 DJNZ

      R1,MOVE3 POP

      ACC POP POP

      0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;將圖形寫入RAM緩存中;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITEGRAPHTORAM: PUSH

      ACC PUSH

      B PUSH

      0 PUSH PUSH PUSH MOV

      R1,#4 MOV

      A,R7 MOV

      B,#4 MUL

      AB MOV

      R2,A MOV

      R0,#GRAPHRAM1 MOV

      DPTR,#GRAPH WRITEGRAPH: MOV

      A,R2 MOVC

      A,@A+DPTR;SUBB

      A,#16 MOV

      @R0,A INC

      R2 INC

      R0 DJNZ

      R1,WRITEGRAPH POP

      POP

      POP

      POP

      0 POP

      B POP

      ACC RET

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;測試某一個(gè)二進(jìn)制位是否為1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;TESTBIT: PUSH

      0 PUSH PUSH

      B PUSH

      ACC MOV

      B,#8 DIV

      AB MOV

      R0,A MOV

      A,B CJNE

      A,#0,TEST3 MOV

      A,R0 DEC

      A JMP

      TEST4 TEST3: MOV

      A,R0 TEST4:

      MOV

      DPTR,#TAB1

      MOV

      R1,#LEDHEAD ADD

      A,R1 MOV

      R1,A MOV

      A,B MOVC

      A,@A+DPTR ANL

      A,@R1 CJNE

      A,#0,TEST1 CLR

      BITS JMP

      TEST2 TEST1: SETB

      BITS TEST2: POP

      ACC POP

      B POP

      POP

      0 RET

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;測試圖形是否能向左移動(dòng);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

      LEFTTEST: PUSH

      0 PUSH

      PUSH

      PUSH

      PUSH

      B PUSH

      ACC MOV

      R2,#4 MOV

      R0,#GRAPHRAM1 LEFT0: MOV

      A,@R0 CLR

      C SUBB

      A,#1 MOV

      B,A MOV

      R3,#4;CLR

      C MOV

      R1,#GRAPHRAM1 LEFT2: CLR

      C SUBB

      A,@R1 JZ

      LEFT1 INC

      R1 MOV

      A,B DJNZ

      R3,LEFT2 LCALL

      TESTBIT JB

      BITS,LEFT3

      LEFT1: INC

      R0 DJNZ

      R2,LEFT0 CLR

      LEFT JMP

      LEFT4 LEFT3: SETB

      LEFT;DOWN WEI YI BIAO SHI BU NENG WANG CPL

      P3.4 JMP

      LEFT5 LEFT4: MOV

      R2,#4 MOV

      R0,#GRAPHRAM1 YOUQIANG: MOV

      R3,#9 MOV

      A,#1 HHH2:

      MOV

      B,A CLR

      C

      XIA YI DONG SUBB

      A,@R0 JNZ

      HHH1 SETB

      LEFT JMP

      LEFT5 HHH1: MOV

      A,B ADD

      A,#8 DJNZ

      R3,HHH2 INC

      R0 DJNZ

      R2,YOUQIANG LEFT5: POP

      ACC POP

      B POP POP POP POP

      0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;測試圖形是否能向右移動(dòng);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;RIGHTTEST: PUSH

      0 PUSH

      PUSH

      PUSH

      PUSH

      B PUSH

      ACC MOV

      R2,#4 MOV

      R0,#GRAPHRAM1 RIGHT0: MOV

      A,@R0 ADD

      A,#1 MOV

      B,A MOV

      R3,#4;CLR

      C MOV

      R1,#GRAPHRAM1 RIGHT2: SUBB

      A,@R1 JZ

      RIGHT1 INC

      R1 MOV

      A,B DJNZ

      R3,RIGHT2

      LCALL

      TESTBIT JB

      BITS,RIGHT3 RIGHT1: INC

      R0 DJNZ

      R2,RIGHT0 CLR

      RIGHT JMP

      RIGHT4 RIGHT3: SETB

      RIGHT;DOWN WEI YI BIAO SHI BU NENG WANG CPL

      P3.4 JMP

      RIGHT5 RIGHT4: MOV

      R2,#4 MOV

      R0,#GRAPHRAM1 YOUQIANG1: MOV

      R3,#8 MOV

      A,#8 III2:

      MOV

      B,A CLR

      C SUBB

      A,@R0 JNZ

      III1 SETB

      RIGHT JMP

      RIGHT5 III1: MOV

      A,B ADD

      A,#8 DJNZ

      R3,III2 INC

      R0 DJNZ

      R2,YOUQIANG1 RIGHT5: POP

      ACC POP

      B POP POP POP POP

      0 RET

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;圖形旋轉(zhuǎn)

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

      XIA YI DONG ROTATION: PUSH

      0 PUSH PUSH PUSH PUSH

      B PUSH

      ACC MOV

      A,GRAPHRAM1;A=50 MOV

      B,#8 DIV

      AB

      ;A=6 B= 2 MOV

      HANG,A

      ;HANG = 6 MOV

      LIE,B

      ;LIE = 2 MOV

      R3,#4 MOV

      R0,#GRAPHRAM1 ROTATESTART: MOV

      A,@R0 MOV

      B,#8 DIV

      AB

      CLR

      C SUBB

      A,HANG

      MOV

      R1,A

      MOV

      A,B CLR

      C SUBB

      A,LIE MOV

      R2,A;;;;;;;;;;;;;;;;;;X2=-Y1 Y2=X1 MOV

      A,#0 CLR

      C SUBB

      A,R2;-Y1 MOV

      B,R1;X1 MOV

      R1,A;X2=-Y1 MOV

      R2,B;Y2=X1 MOV

      A,R1 ADD

      A,HANG MOV

      R1,A MOV

      A,R2 ADD

      A,LIE MOV

      R2,A MOV

      A,R1 MOV

      B,#8 MUL

      AB ADD

      A,R2

      MOV

      @R0,A

      INC

      R0 DJNZ

      R3,ROTATESTART POP

      ACC POP

      B POP

      POP

      POP

      POP

      0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;顯示LEDRAM中的內(nèi)容;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SHOWLEDRAM: PUSH

      0 PUSH PUSH

      B PUSH

      ACC MOV

      R0,#LEDHEAD MOV

      R1,#8 MOV

      A,#AA SHOW1: MOV

      P1,A MOV

      P2,@R0

      LCALL

      DELAY

      INC

      R0 RL

      A DJNZ

      R1,SHOW1 POP

      ACC POP

      B POP

      POP

      0 RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;軟件延時(shí)

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DELAY: PUSH PUSH MOV

      R1,#5 FQFQ: MOV

      R2,#200 FWFW: DJNZ

      R2,FWFW DJNZ

      R1,FQFQ POP

      POP

      RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;清楚圖形在LEDRAM中的內(nèi)容;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CLEANGRAPH: PUSH

      ACC PUSH MOV

      A,#GRAPHRAM1 MOV

      XUNHUAN,#4 MOV

      R1,A DADA1: MOV

      A,@R1;SUBB

      A,#16 LCALL

      WRITEPOINT0 INC

      R1 DJNZ

      XUNHUAN,DADA1 POP

      POP

      ACC

      RET

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;顯示圖形在LEDRAM中的內(nèi)容;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SHOWGRAPH: PUSH

      ACC PUSH

      MOV

      A,#GRAPHRAM1 MOV

      XUNHUAN,#4 MOV

      R1,A DADA2: MOV

      A,@R1;SUBB

      A,#16 LCALL

      WRITEPOINT1 INC

      R1 DJNZ

      XUNHUAN,DADA2 POP

      POP

      ACC

      RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;消除已經(jīng)填滿的行

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;REMOVEBLOCK: PUSH

      0 PUSH PUSH

      B PUSH

      ACC REMOVESTART: MOV

      R0,#1 MOV

      R1,#LEDHEAD REMOVE2: MOV

      A,@R1 CJNE

      A,#11111111B,REMOVE1

      MOV

      @R1,#00000000B MOV

      REMOVEROW,R0 LCALL

      DOWNBLOCK

      JMP

      REMOVESTART REMOVE1: INC

      R0 INC

      R1 MOV

      A,R0 CJNE

      A,#9,REMOVE2 POP

      ACC POP

      B POP

      POP

      0 RET DOWNBLOCK: PUSH

      0 PUSH PUSH

      B PUSH

      ACC MOV

      R0,#1 DOWN11: MOV

      A,REMOVEROW MOV

      B,#8 MUL

      AB ADD

      A,R0 LCALL

      DOWNSTEP LCALL

      JUSTMOVE INC

      R0 MOV

      A,R0 CJNE

      A,#9,DOWN11 POP

      ACC POP

      B POP

      POP

      0 RET

      DOWNSTEP: PUSH

      0 PUSH PUSH

      B PUSH

      ACC MOV

      R0,#0 MOV

      R1,REMOVEROW STEP2: CLR

      C SUBB

      A,#8 LCALL

      TESTBIT JB

      BITS,STEP1 INC

      R0 DJNZ

      R1,STEP2 STEP1: MOV

      STEPS,R0 POP

      ACC POP

      B POP

      POP

      0 RET

      JUSTMOVE: PUSH

      0 PUSH PUSH PUSH

      B PUSH

      ACC MOV

      R0,A MOV

      A,STEPS MOV

      B,#8 MUL

      AB MOV

      B,A MOV

      A,R0 CLR

      C SUBB

      A,B MOV

      R1,A MOV

      R2,REMOVEROW

      MOV

      A,#8 CLR

      C SUBB

      A,R2 MOV

      JUST3: MOV

      LCALL

      JB

      MOV

      LCALL

      JMP

      JUST1: MOV

      LCALL

      JUST2: MOV

      ADD

      MOV

      MOV

      ADD

      MOV

      DJNZ

      MOV

      DDD: MOV

      LCALL

      MOV

      ADD

      MOV

      DJNZ

      JUSTEND:

      POP

      POP

      POP

      POP

      POP

      RET R2,A A,R0 TESTBIT BITS,JUST1 A,R1 WRITEPOINT0 JUST2 A,R1 WRITEPOINT1 A,R0 A,#8 R0,A A,R1 A,#8 R1,A R2,JUST3 R2,REMOVEROW A,R1 WRITEPOINT0 A,R1 A,#8 R1,A R2,DDD ACC B 2 1 0

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;將某個(gè)二進(jìn)制位寫1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITEPOINT1: PUSH

      0 PUSH PUSH PUSH PUSH

      B PUSH

      PUSH

      PUSH

      CLR

      MOV

      SUBB

      JNC

      MOV

      MOV

      MOV

      DIV

      MOV

      MOV

      CJNE

      MOV

      DEC

      JMP

      WRITE11: MOV

      WRITE12: ADD

      MOV

      MOV

      MOV

      MOV

      MOV

      MOVC

      ORL

      MOV

      END1: POP

      POP

      POP

      POP

      POP

      ACC DPH DPL C R0,A A,#65 END1 A,R0 R1,#LEDHEAD B,#8 AB R0,A A,B A,#0,WRITE11 A,R0 A WRITE12 A,R0 A,R1 R1,A A,@R1 R2,A DPTR,#TAB1 A,B A,@A+DPTR A,R2 @R1,A DPL DPH ACC B 3

      POP

      POP

      POP

      0 RET

      ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;將某個(gè)二進(jìn)制位寫0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WRITEPOINT0: PUSH

      0 PUSH PUSH PUSH

      B PUSH

      ACC PUSH

      DPH PUSH

      DPL

      MOV

      R0,A CLR

      C SUBB

      A,#65 JNC

      END2 MOV

      A,R0 MOV

      R1,#LEDHEAD MOV

      B,#8 DIV

      AB MOV

      R0,A MOV

      A,B CJNE

      A,#0,WRITE01 MOV

      A,R0 DEC

      A JMP

      WRITE02 WRITE01: MOV

      A,R0 WRITE02: ADD

      A,R1 MOV

      R1,A MOV

      A,@R1 MOV

      R2,A MOV

      DPTR,#TAB2 MOV

      A,B MOVC

      A,@A+DPTR ANL

      A,R2 MOV

      @R1,A END2: POP

      DPL POP

      DPH POP

      ACC POP

      B POP

      POP

      POP

      0 RET GRAPH:

      DB

      69,60,61,62,69,68,61,62,69,70,60,61,69,70,61,62,69,77,61,62,69,77,61,60,69,69,61,77

      TAB1:

      DB

      00000001B,10000000B,01000000B,00100000B,00010000B,00001000B,00000100B,00000010B TAB2:

      DB

      11111110B,01111111B,10111111B,11011111B,11101111B,11110111B,11111011B,11111101B

      END

      下載C語言編寫俄羅斯方塊論文word格式文檔
      下載C語言編寫俄羅斯方塊論文.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        C語言 程序代碼編寫規(guī)范

        C語言 程序代碼編寫規(guī)范(初級(jí)程序員 討論版)前言 一個(gè)好的程序編寫規(guī)范是編寫高質(zhì)量程序的保證。清晰、規(guī)范的源程序不僅僅是方便閱讀,更重要的是能夠便于檢查錯(cuò)誤,提高調(diào)試效......

        c語言編寫單片機(jī)感想

        用C語言對(duì)單片機(jī)編程感想 起先接觸單片機(jī),單片機(jī)的程序是用匯編語言編寫的。匯編語言是面向機(jī)器的低級(jí)語言,保持了機(jī)器語言的優(yōu)點(diǎn),具有直接和簡捷的特點(diǎn),目標(biāo)代碼簡短,占用內(nèi)存少......

        如何編寫論文[優(yōu)秀范文5篇]

        ? 畢業(yè)論文的撰寫及答辯是學(xué)生畢業(yè)的必備條件,是高等職業(yè)教育中專業(yè)教育的重要組成部分,是學(xué)習(xí)階段“收束”的標(biāo)志,是每個(gè)學(xué)生專業(yè)知識(shí)運(yùn)用與創(chuàng)新的重要體現(xiàn)。它是應(yīng)考者的總結(jié)......

        技術(shù)論文編寫技巧

        齒輪箱濾油技術(shù) 1 題目是科技論文的中心和總綱。 要求準(zhǔn)確恰當(dāng)、簡明扼要、醒目規(guī)范、便于檢索。一篇論文題目不要超出20個(gè)字。用小2號(hào)黑體加粗,居中。 步驟閱讀 2 署名 署......

        論文編寫原則與方法大全

        前幾天談到了論文提綱的定義、重要性,今天來談?wù)務(wù)撐奶峋V的編寫原則與方法。一、論文提綱的編寫原則(一)要有全局觀念,從整體出發(fā)去檢查每一部分在論文中所占的地位和作用。看......

        Word編寫論文十大技巧

        現(xiàn)在正是大學(xué)畢業(yè)生完成畢業(yè)設(shè)計(jì)、撰寫畢業(yè)論文的時(shí)候,大家往往要苦熬一個(gè)多月才能完成自己的畢業(yè)論文?,F(xiàn)在大家主要都是用Microsoft Word來編輯論文(不論各位用哪個(gè)版本,基......

        論文編寫格式及其說明(共5則范文)

        論文編寫格式及其說明作者1作者2/(1.某某單位名稱1;2.某某單位名稱2)【摘要】 摘要內(nèi)容摘要內(nèi)容摘要內(nèi)容,摘要內(nèi)容摘要內(nèi)容摘要內(nèi)容摘要內(nèi)容摘要內(nèi)容摘要內(nèi)容,摘要內(nèi)容摘要內(nèi)容摘......

        論文后附“參考文獻(xiàn)”編寫體例

        論文后附“參考文獻(xiàn)”編寫體例參考文獻(xiàn)是在學(xué)術(shù)研究過程中,對(duì)某一著作或論文的整體的參考或借鑒。征引過的文獻(xiàn)在注釋中已注明,不再出現(xiàn)于文后參考文獻(xiàn)中。 簡介 (1)文后參......