版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、俄羅斯方塊學 號: 班 級:姓 名:指導教師:完成日期:2012年5月目錄1. 引言 11.1 開發(fā)工具 11.1.1 C是中級預言 11.1.2 C是結(jié)構(gòu)化語言 11.1.3 C語言功能齊全 11.1.4 C語言可移植性好 12 游戲設計 22.1 游戲設計要求 22.1.1. 設計題目:俄羅斯方塊游戲 . 22.1.2. 設計容: . 22.1.3. 功能模塊劃分:. 22.2 游戲設計思想 . 22.2.1 游戲界面: 22.2.2 設計思路 . 22.3 :游戲功能 32.3.1 :開始部分 32.3.2. 運行部分 . 33. 實驗總結(jié): 43.1 開發(fā)背景與需求分析 . 43.2
2、系統(tǒng)功能介紹 . 44. 核心代碼: 8總結(jié) 21參考文獻: 22基于C語言的俄羅斯方塊游戲摘要:俄羅斯方塊是一款風靡全球的電視游戲機和掌上游戲機游戲。俄羅斯方塊的基本規(guī)則是移動、旋轉(zhuǎn)和擺放游戲自動輸出的各種方塊,使之排列成完整的一行或多行并 且消除得分。由于上手簡單、老少皆宜,從而家喻戶曉,風靡世界。關(guān)鍵詞:C語言;心得體會;影響1.引言隨著社會的發(fā)展,人們生活的步調(diào)日益加快,越來越多的人加入了全球化的世界人們不在拘泥于一小塊天地加班,出差成了現(xiàn)代人不可避免的公務而此時一款可以隨時隨地娛樂的游戲成了必需品.在手機和電腦成為人們?nèi)沼闷返纳鐣?,一款能在其上能便捷運行的游戲成為買家的參考點現(xiàn)在我們
3、所要設計的這一款基于C語言的游戲一一貪吃蛇,就是滿足以上要求而設計出來的,希望能給玩家?guī)韸蕵?貪吃蛇這一游戲簡單易行,操作方便,娛樂性較強,吸引了不少人.這一款游戲緊緊地抓住了人們的心理,雖然簡單,卻起樂無窮,在人們不斷追求更多的欲望下,該游戲給人們帶來了追逐的快感,以及成功后的滿足感,對于一直處于高壓下的現(xiàn)代人是很好的放松工具1.1開發(fā)工具C/C+程序設計學習與試驗系統(tǒng)該系統(tǒng)繼承了 Turbo C2.0/C+3.0、GCC Visua C+6.0這四種常見的編譯器,可以很好滿足目前主流的C語言教材的實驗需求。C語言具有下列特點:1.1.1 C 是中級預言它把高級語言的基本結(jié)構(gòu)和語句與低級語
4、言的實用性結(jié)合起來,C語言可以像匯編語言一樣對位、字節(jié)和地址進行操作,通常還是稱C為高級語言。1.1.2 C 是結(jié)構(gòu)化語言結(jié)構(gòu)化語言的特點是程序的各個部分除了必要地數(shù)據(jù)交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?,維護及調(diào)試。1.1.3 C語言功能齊全C語言具有多種數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高;C語言也具有強大的圖形功能;具有較強的計算功能、邏輯判斷功能。1.1.4 C語言可移植性好與匯編語言相比,C語言程序適用圍大,可用于各種操作系統(tǒng)和各種型號的計算機。2游戲設計2.1游戲設計要求2.1.1. 設計題目:俄羅斯方塊游戲2.1.2. 設計容:一組由4個小型正方形組成
5、的規(guī)則圖形,中文通稱為方塊共有7種,分別以 S、Z、L、J、I、0、T這7個字母的形狀來命名。通過設計者預先設置的隨機發(fā)生器不斷地輸出單個方塊 到場地頂部,以一定的規(guī)則進行移動、旋轉(zhuǎn)、下落和擺放,鎖定并填充到場地中。每次擺放 如果將場地的一行或多行完全填滿,則組成這些行的所有小正方形將被消除,并且以此來換 取一定的積分或者其他形式的獎勵。而未被消除的方塊會一直累積,并對后來的方塊擺放造 成各種影響。如果未被消除的方塊堆放的高度超過場地所規(guī)定的最大高度則游戲結(jié)束。2.1.3. 功能模塊劃分:系統(tǒng)功能模塊2.2游戲設計思想2.2.1游戲界面:方塊堆積。遇整則消。2.2.2設計思路10,列高為20,
6、以每個小正Tetromino,中文通稱為方塊I :一次最多消除四層J1、一個用于擺放小型正方形的平面虛擬場地,其標準大?。盒袑挒?方形為單位。2.、一組由4個小型正方形組成的規(guī)則圖形,英文稱為 共有7種,分別以S Z、L、J、I、O T這7個字母的形狀來命名。(左右):最多消除三層,或消除二層L:最多消除三層,或消除二層O:消除一至二層S(左右):最多二層,容易造成孔洞Z (左右):最多二層,容易造成孔洞T:最多二層(1)部分游戲有單格方塊,可以穿透固定的方塊到達最下層空位。其他的改版中出現(xiàn)更多特別的造 型。方塊會從區(qū)域上方開始緩慢繼續(xù)落下。(2)玩家可以做的操作有:以 90度為單位旋轉(zhuǎn)方塊,
7、以格子為單位左右移動方塊,讓方塊加速落下。(3)方塊移到區(qū)域最下方或是著地到其他方塊上無法移動時,就會固定在該處,而新的方塊出現(xiàn)在區(qū)域上方開始落下。(4)當區(qū)域中某一列橫向格子全部由方塊填滿,則該列會消失并成為玩家的得分。同時刪除的列數(shù)越多,得分指數(shù)上升。(5)當固定的方塊堆到區(qū)域最上方而無法消除層數(shù)時,則游戲結(jié)束。(6)一般來說,游戲還會提示下一個要落下的方塊,熟練的玩家會計算到下一個方塊,評估現(xiàn)在要如何 進行。由于游戲能不斷進行下去對商業(yè)用游戲不太理想,所以一般還會隨著游戲的進行而加速提高 難度。3、通過設計者預先設置的隨機發(fā)生器不斷地輸出單個方塊到場地頂部,以一定的規(guī)則進行移動、旋轉(zhuǎn)、下
8、落和擺放,鎖定并填充到場地中。每次擺放如果將場地的一行或多行完全填滿, 則組成這些行的所有小正方形將被消除,并且以此來換取一定的積分或者其他形式的獎勵。而未被 消除的方塊會一直累積,并對后來的方塊擺放造成各種影響。4、如果未被消除的方塊堆放的高度超過場地所規(guī)定的最大高度(并不一定是20或者玩家所能見到的高度),則游戲結(jié)束。具體到每一款不同的游戲,其中的細節(jié)規(guī)則都可能有千差萬別,但是以上的基本規(guī)則是相同的。2.3 :游戲功能2.3.1 :開始部分游戲是運行在圖形模式下的,所以第一步一定是初始化圖形模式,接著要有開始的界面,就像 書有封面一樣,我設置了一個游戲的標題畫面,除了游戲標題畫面我還設置了
9、一個歡迎畫面。標題 畫面以后,還要為游戲的運行部分作初始化,包括繪制游戲運行時的背景,對游戲某些重要變量的初始化。2.3.2.運行部分俄羅斯方塊的要求為: 不同形狀組合的方塊從界面上方落下。通過鍵盤上的四個光標控制方塊下落時的形狀轉(zhuǎn)換和下落方向。方塊堆積在一起,將區(qū)域占滿時則會消除以增加游戲分數(shù)。整個游戲過程分為三個步驟:1、按游戲界面的開始”按鈕或者F2鍵來開始游戲,自己使用右邊的窗口,對手使用左邊的窗口2、 鍵盤操作:系統(tǒng)缺省設置使用右邊的窗口,用光標操作 ,”-左移一格;t右移一格;” f 旋 轉(zhuǎn)方塊;J方塊丟下(方塊下落到底),”E nd健可以一格格的下落,用戶還可以自定義習慣的按鍵
10、來操作游戲。3、 計分牌顯示的容:“分數(shù)”為雙方本局的分數(shù),計分標準為下落一個塊10分,一次消一行100 分、2行200分、3行400分、4行800分。等級”為雙方的游戲設置等級,當分數(shù)達到一定的值, 等級就會提升、速度加快?!靶袛?shù)”第一行為雙方消的行數(shù),第二行是送給對方的行數(shù)。“比分”為雙方贏的局數(shù)。2.3.3 :結(jié)束部分:游戲結(jié)束時,顯示“ GAME OVER3. 實驗總結(jié) :3.1 開發(fā)背景與需求分析隨著網(wǎng)絡技術(shù)的發(fā)展,人們的生活越來越離不開網(wǎng)絡,網(wǎng)絡給人們帶來了 各種各樣的信息和更多更新的娛樂。據(jù)統(tǒng)計。每天上網(wǎng)的人群中75%的人用來豐富自己的生活。其中游戲最為常見和普遍。所以,這次課程
11、設計我想實現(xiàn)一個小 游戲:俄羅斯方塊。需求分析1) 游戲面板(畫布) GameCanvas類,完成游戲顯示;2) 方 塊繪畫 drawUnit 類,方塊下落過程中的各種形態(tài);3) 主 界面實現(xiàn)游戲的開始,退出,暫停,提高級數(shù),降低級數(shù)功能及圖像界面排版;4) 通 過鍵盤按鍵實現(xiàn)游戲,并且可以調(diào)節(jié)游戲速度。3.2 系統(tǒng)功能介紹俄羅斯方塊是一個非常復雜但比較有趣并且耐玩的游戲,相信很多人對俄羅斯方塊并不陌生,如下圖所示,游戲中共有七種方塊,每種方塊都有四個方格 組成。這七種方塊可以旋轉(zhuǎn) 90 度、 180 度、 270 度,因此每種方塊有四種狀態(tài), 七種方塊總有 28 種狀態(tài),這 28 種狀態(tài)的方
12、塊隨機產(chǎn)生,自由下落,落下時可由 玩家通過鍵盤上的上、下、左、右控制鍵來控制方塊的反轉(zhuǎn)、移動和加速下落。 如果下落時,方塊填滿某一行則這一行消失,同時給玩家加分,若由存在空格的 方塊填滿整個窗口,則游戲結(jié)束。包鍛吳fi上快寺威0 Airthor:eatBE炭髙紅孜腿if致館咸直厚用岀叢卻圖1-1初始狀態(tài)ffc寥瞞必映3&或 VI* U Autb.ox : Vxoc-?inll-lftlfx111圖1-2 開始游戲圖1-3 消除一行H直計斯方坎潘戲T II _ U Aulhtir : 3.ncmt.dK圖1-4 消除兩行B 俄羅 JJf 方塊3&戲 U U Ant hor s me ent圖1-
13、5 消除四行找零斷方菇亦VI. 0 Author ;UicBnLL 1巧|僅圖1-6游戲結(jié)束4. 核心代碼:import java.awt.*;import java.awt.eve nt.*;/俄羅斯方塊類public class computer exte nds Frame public static boolea n isPlay = false;public static in t level = 1, score = 0;public static TextField scoreField, levelField;public static MyTimer timer;GameCa
14、 nvas gameScr;/ 聲明一個屬于畫布類得變量public static void main( Stri ng argus) computer ers = new computer( 俄羅斯方塊游戲V1.0 Author:Vi nee nt);運用構(gòu)造方法為框架名Win dowListe ner winiste ner = new Win Liste ner();定義一個窗口監(jiān)聽事件對象為框架添加該監(jiān)聽器ers.addWi ndowListe ner(winiste ner);/computer(String title)/俄羅斯方塊類的構(gòu)造方法super(title);/調(diào)用父類得
15、構(gòu)造方法設置框架的布局流setSize(600, 480);/ 設置框架的尺寸 setLayout(new GridLayout(1, 2);/ gameScr = new GameCanvas();gameScr.addKeyListener(gameScr);/ 為該對象注冊鍵盤點擊監(jiān)聽器timer = new MyTimer(gameScr); timer.setDaemon(true);timer.start(); timer.suspend();add(gameScr);Panel rightScr = new Panel(); rightScr.setLayout(new Grid
16、Layout(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);/ 定義標簽和初始值Label scorep = new Label(分數(shù) :, Label.LEFT);Label levelp = new Label(級數(shù) :, Label.LEFT);scor
17、eField = 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.setSiz
18、e(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);/ 定義按鈕 playButton play_b = new Button( 開始游戲 ); play_b.setSize(new
19、Dimension(50, 200);play_b.addActionListener(new Command(Command.button_play, gameScr);/ 定義按鈕 Level UPButton level_up_b = new Button(提高級數(shù) );level_up_b.setSize(new Dimension(50, 200);level_up_b.addActionListener(new Command(Command.button_levelup, gameScr);/ 定義按鈕 Level DownButton level_down_b = new Bu
20、tton(降低級數(shù) );level_down_b.setSize(new Dimension(50, 200); level_down_b.addActionListener(newCommand(Command.button_leveldown,gameScr);/ 定義按鈕 Level PauseButton pause_b = new Button( 游戲暫停 ); pause_b.setSize(new Dimension(50, 200);pause_b.addActionListener(new Command(Command.button_pause,gameScr);/ 定義按
21、鈕 QuitButton 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.
22、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; / 允許有多少行未削
23、int blockInitRow; / 新出現(xiàn)塊的起始行坐標 int blockInitCol; / 新出現(xiàn)塊的起始列坐標 int scrArr; /屏幕數(shù)組Block b; / 對方快的引用/ 畫布類的構(gòu)造方法GameCanvas() rowNum = 15; columnNum = 10;maxAllowRowNum = rowNum - 2;b = new Block(this); blockInitRow = rowNum - 1;blockInitCol = columnNum / 2 - 2; scrArr = new int3232;/ 初始化屏幕,并將屏幕數(shù)組清零的方法 voi
24、d initScr() for (int i = 0; i rowNum; i+)for (int j = 0; j columnNum; j+)scrArrij = 0;b.reset();repaint();/ 重新刷新畫布方法public void paint(Graphics g) for (int i = 0; i rowNum; i+)for (int j = 0; j columnNum; j+) drawUnit(i, j, scrArrij);/ 畫方塊的方法public void drawUnit(int row, int col, int type) scrArrrowc
25、ol = type;Graphics g = getGraphics();switch (type) / 表示畫方快的方法 case 0:g.setColor(Color.black);break; / 以背景為顏色畫case 1:g.setColor(Color.blue);break; / 畫正在下落的方塊case 2:g.setColor(Color.magenta); break; / 畫已經(jīng)落下的方法g.fill3DRect(col * unitSize, getSize().height - (row + 1) * unitSize, unitSize, unitSize, tru
26、e);g.dispose();public Block getBlock() return b; / 返回 block 實例的引用/ 返回屏幕數(shù)組中 (row,col) 位置的屬性值public int getScrArrXY(int row, int col) if (row = rowNum | col = columnNum) return (-1);elsereturn (scrArrrowcol);/ 返回新塊的初始行坐標方法 public int getInitRow() return (blockInitRow); /返回新塊的初始行坐標/ 返回新塊的初始列坐標方法public
27、int getInitCol() return (blockInitCol); / 返回新塊的初始列坐標 / 滿行刪除方法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 (scrArrij = 0) k+;isfull = false;break L1;if (isfull)full_line_num+;if (k != 0 & k - 1 != i &
28、!isfull)for (int j = 0; j columnNum; j+) if (scrArrij = 0)drawUnit(k - 1, j, 0);elsedrawUnit(k - 1, j, 2);scrArrk - 1j = scrArrij;for (int i = k - 1; i rowNum; i+) for (int j = 0; j columnNum; j+) drawUnit(i, j, 0);scrArrij = 0;computer.score += full_line_num; computer.scoreField.setText( + computer
29、.score); / 判斷游戲是否結(jié)束方法boolean isGameEnd() for (int col = 0; col columnNum; col+) if (scrArrmaxAllowRowNumcol != 0)return true;return false;public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) / 處理鍵盤輸入的方法public void keyPressed(KeyEvent e) if (!computer.isPlay)return;switch (e.getKeyCod
30、e() case KeyEvent.VK_DOWN:b.fallDown(); break;case KeyEvent.VK_LEFT:b.leftMove();break;case KeyEvent.VK_RIGHT: b.rightMove();break;case KeyEvent.VK_UP:b.leftTurn(); break;/ 處理控制類給按鈕分配編號class Command implements ActionListener static final int button_play = 1; / static final int button_levelup = 2;sta
31、tic final int button_leveldown = 3; static final int button_quit = 4;static final int button_pause = 5;static boolean pause_resume = true;int curButton; / 當前按鈕GameCanvas scr;/ 控制按鈕類的構(gòu)造方法Command(int button, GameCanvas scr) curButton = button;this.scr = scr;/ 按鈕執(zhí)行方法public void actionPerformed(ActionEv
32、ent e) switch (curButton) case button_play:if (!computer.isPlay) scr.initScr();computer.isPlay = true;computer.score = 0;computer.scoreField.setText(0); computer.timer.resume();scr.requestFocus();break;case button_levelup:if (computer.level 1) computer.level-;computer.levelField.setText( + computer.
33、level);computer.score = 0;computer.scoreField.setText( + computer.score);scr.requestFocus();break;case button_pause:if (pause_resume) computer.timer.suspend();pause_resume = false; else computer.timer.resume();pause_resume = true;scr.requestFocus();break;case button_quit:System.exit(0);/ 方塊類class Bl
34、ock static int pattern = 0x0f00, 0x4444, 0x0f00, 0x4444 ,/用十六進至表示,本行表示長條四種狀態(tài) 0x04e0, 0x0464, 0x00e4, 0x04c4 , 0x4620, 0x6c00, 0x4620, 0x6c00 , 0x2640, 0xc600, 0x2640, 0xc600 , 0x6220, 0x1700, 0x2230, 0x0740 , 0x6440, 0x0e20, 0x44c0, 0x8e00 , 0x0660, 0x0660, 0x0660, 0x0660 ;int blockType; /塊的模式號( 0-6
35、 )int turnState; /塊的翻轉(zhuǎn)狀態(tài)( 0-3 )int blockState; / 快的下落狀態(tài) int row, col; /塊在畫布上的坐標GameCanvas scr;/ 塊類的構(gòu)造方法Block(GameCanvas scr) this.scr = scr;blockType = (int) (Math.random() * 1000) % 7; turnState = (int) (Math.random() * 1000) % 4; blockState = 1;row = scr.getInitRow();col = scr.getInitCol();/ 重新初始化
36、塊,并顯示新塊public void reset() blockType = (int) (Math.random() * 1000) % 7;turnState = (int) (Math.random() * 1000) % 4; blockState = 1;row = scr.getInitRow();col = scr.getInitCol();dispBlock(1);/ 實現(xiàn)“塊”翻轉(zhuǎn)的方法public void leftTurn() if (assertValid(blockType, (turnState + 1) % 4, row, col) dispBlock(0);tu
37、rnState = (turnState + 1) % 4;dispBlock(1);/ 實現(xiàn)“塊”的左移的方法public void leftMove() if (assertValid(blockType, turnState, row, col - 1) dispBlock(0);col-;dispBlock(1);/ 實現(xiàn)塊的右移public void rightMove() if (assertValid(blockType, turnState, row, col + 1) dispBlock(0);col+;dispBlock(1);/ 實現(xiàn)塊落下的操作的方法public boo
38、lean fallDown() if (blockState = 2)return (false);if (assertValid(blockType, turnState, row - 1, col) dispBlock(0);row-;dispBlock(1);return (true); else blockState = 2;dispBlock(2);return (false);/ 判斷是否正確的方法boolean assertValid(int t, int s, int row, int col) int k = 0x8000;for (int i = 0; i 4; i+) f
39、or (int j = 0; j 4; j+) if (int) (patternts & k) != 0) int temp = scr.getScrArrXY(row - i, col + j); if (temp 1;return true;/ 同步顯示的方法public synchronized void dispBlock(int s) int k = 0x8000;for (int i = 0; i 4; i+) for (int j = 0; j 1;/ 定時線程class MyTimer extends Thread GameCanvas scr;public MyTimer(
40、GameCanvas scr) this.scr = scr;public void run() while (true) try sleep(10 - computer.level + 1) * 100); catch (InterruptedException e) if (!scr.getBlock().fallDown() scr.deleteFullLine();if (scr.isGameEnd() computer.isPlay = false;suspend(); elsescr.getBlock().reset();class WinListener extends Wind
41、owAdapter public void windowClosing(WindowEvent l) System.exit(0);總結(jié)1 感悟:當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握程序開發(fā)技術(shù)是十分重要的,而C語言又是最常見,功能最強大的一種高級語言,因此做好C語言課程設計是十分必要的。 回顧起此次課程設計,至今我們?nèi)愿锌H多,的確,自從拿到題目到完成 整個編程,從理論到實踐,在這么長的時間里,可以學到很多很多的東西,同時不僅可以鞏固了以 前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我們懂得了 理論與實際相結(jié)合是很重要的,
42、只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合 起來,從理論中得出結(jié)論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。 在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問 題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對一些前面學過的知識理解得不夠深刻,掌握得 不夠牢固,比如說結(jié)構(gòu)體,指針,鏈表通過這次課程設計之后,我們把前面所學過的知識又重 新溫故了一遍。我做的是做俄羅斯方塊游戲。簡單的一個,但對我來說卻是一個很大的困難。更加是第一次做基于C語言的課程設計,所以連續(xù)幾天翻閱書籍或是參考網(wǎng)上容卻絲毫沒有進展,最主要是不知從 何開始
43、,這個時候才知道上課老師們不厭其煩的教導是多么的寶貴,這個時候才后悔上課的時候沒 有認真的聽講??墒乾F(xiàn)在一切都晚了,還好時間還算是充裕,只好拿出書本重新復習一下。不過經(jīng) 過幾天的努力,大體上把課本上的知識點看了一遍,知識點也都基本是撐握了,所以一下一步就是 開始正式的編程序了。不過畢竟水平有限,還是不知如何下手,于是就在網(wǎng)上下了一篇類似的程序, 經(jīng)過仔細的研究,終于讀懂了 C 語言編程的基本過程和方法。 經(jīng)過一波三折,終于開始正式編程。而且編程是一件高精度、?;氖虑椋杂惺韬醵紩绊懭?,也可能因為某一處的小的錯誤 而導致整個程序的無法運行。所以認真仔細就是非常重要的了。開始的時候真的感覺編
44、程是一件很 無聊的事情,所以就在網(wǎng)上下載的程序的基礎上開始行動了,不過當一個程序運行成功的時候那種 喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的努力,終于把程序完成了,盡管程序 還是有很多錯誤和漏洞,不過還是很高興的。無論如何是自己的勞動成果,是自己經(jīng)過努力得到的 成績,同時也是學習 C 語言的一次實踐作業(yè),自己進步的證明。通過這次課程設計,使我對 C語言有了更進一步的認識和了解,要想學好它要重在實踐,要通 過不斷的上機操作才能更好地學習它,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行, 經(jīng)常按錯字母,通過學習也有所改進;再有對 C語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用
45、的正確使用不夠熟悉,還有對 C語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐的學習,我認識到學好 計算機要重視實踐操作,不僅僅是學習 C語言,還是其它的語言,以及其它的計算機方面的知識都 要重在實踐,所以后在學習過程中,我會更加注視實踐操作,使自己便好地學好計算機。在該游戲設計過程中,收獲知識,提高能力的同時,我也學到了很多人生的哲理,懂得怎么樣 去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。2 感謝:經(jīng)過兩個星期的苦心鉆研,系統(tǒng)終于制作完畢。在本次課程設計中困 難遇到不少,也讓我學到了很多。在這次系統(tǒng)開發(fā)的過程中,我深深地體會到了 做一個系統(tǒng),首先進行需求分析的
46、重要性。了解了一個系統(tǒng)的制作,從功能分析 到功能模塊分析,與其他系統(tǒng)的關(guān)系,這些都有待以后進一步的改進。通過實踐 對我以后的學習是一筆不小的財富!在此,感謝班上同學對我的幫助和指點,沒有他們所提供的資料,僅憑我個 人力量,在短短的兩周時間里是很難完成這個設計的。更要感謝的是我的老師, 感謝老師孜孜不倦的教誨,一絲不茍的精神和一視的教學風格。我會僅記老師的 教誨,一步一個腳印的完成自己的學業(yè)!參考文獻:1 . 裘宗燕 著,從問題到程序科學,北京大學, 1999年 4 月。2 .C程序設計(第二版),譚浩強編,清華大學,1999年12月。3 .C語言編程常見問題解答,美Paul S. R. Chi
47、shohm 等著,芳妮 呂波譯,清 華大學, 11996年 12月。4 .The CProgramming Language, by Brian W.Kernighan and Dennis M. Ritchie.Pubilished by Prentice-Hall in 1988。5 . 朱若愚. 數(shù)據(jù)結(jié)構(gòu) M. 北京: 電子工業(yè) , 2006.16 . 傅清祥,王曉東. 數(shù)據(jù)結(jié)構(gòu)與算法設計 M. 北京: 電子工業(yè) , 2006.37 .春葆.數(shù)據(jù)結(jié)構(gòu)(C語言版)習題與解析M.北京:清華大學,2006.18. 大有. 數(shù)據(jù)結(jié)構(gòu) M. 北京: 高等教育, 2006.39. 王敬華,靜. C
48、語言程序設計 M. 北京: 清華大學, 2007.10 10. 徐孝凱. 數(shù)據(jù)結(jié)構(gòu)簡明教程 .M. 北京: 清華大學 , 2006.04課程設計俄羅斯方塊游戲源代碼本程序共三個類, 建一個包 square 。把三個類都封裝到一個包里面, 三個類分別是 ControllerMain , Squarepackage square;import javax.swing.JPanel; import java.awt.Color; / java 程序是會報錯的。事倒入 java 程序所需要的類庫文件。如果不倒入相應的文件。import javax.swing.JLabel;public class C
49、ontroller extends Thread /Controller類從定義從父類繼承來來的某些成員變量和成員方法,游戲控制線程 private int x; /private int y;private Square sq; / private Square next; / private JPanel sc; / private boolean state; / private int sorce;/private int speed;/private JLabel jl1;/private JLabel jl2;private JPanel jp; / private JPanel
50、sc2;private int sleepTime; /方塊左上角的坐標方塊對象的引用當前 下一個方塊的引用 顯示填充狀態(tài)分值 下落速度 分數(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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年滬科版拓展型課程化學上冊階段測試試卷含答案
- 2024版商業(yè)交易居間法律咨詢合同版B版
- 2024校長及副校長任期管理職責合同簽訂大會3篇
- 場平土石方施工方案
- 2025年滬教版選擇性必修2地理下冊階段測試試卷含答案
- 2025年人教版(2024)選擇性必修3生物下冊月考試卷含答案
- 2025年人教版(2024)八年級化學下冊月考試卷
- 飼料課程設計與反思
- 2024游泳池設施設備采購與安裝承包合同范本3篇
- SaaS軟件銷售及服務具體合同版B版
- GB/T 44273-2024水力發(fā)電工程運行管理規(guī)范
- 浙江省杭州市余杭區(qū)2023-2024學年二年級上學期期末語文試題
- 傳媒互聯(lián)網(wǎng)行業(yè)幣價影響因素分析:對比利率、M2、納指、美元指數(shù)、黃金走勢
- 二年級上冊數(shù)學連算口算題卡(-打印版)
- 2025屆河南省南陽市宛城區(qū)九上數(shù)學期末監(jiān)測試題含解析
- 曳引驅(qū)動電梯調(diào)試作業(yè)指導書
- JT-T-617.4-2018危險貨物道路運輸規(guī)則第4部分:運輸包裝使用要求
- 2021年7月自考06087工程項目管理試題及答案含解析
- 奧爾波特價值觀量表
- 旅游商圈城市商圈oto系統(tǒng)
- 三年級加法豎式題50道
評論
0/150
提交評論