freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

俄羅斯方塊游戲設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文-資料下載頁(yè)

2024-11-29 10:30本頁(yè)面

【導(dǎo)讀】畢業(yè)論文(設(shè)計(jì))任務(wù)書··························I. 審閱與評(píng)審成績(jī)·····························Ⅹ。答辯記錄及成績(jī)?cè)u(píng)定···························Ⅺ。電子游戲及其分類························3. 電子游戲發(fā)展現(xiàn)狀·························3. 2.可行性研究······························6

  

【正文】 口,這使得這些類庫(kù)也能移植。同時(shí), Java 編譯器主要是由 Java 本身來(lái)實(shí)現(xiàn)的, Java 的運(yùn)行系統(tǒng)(解釋器)由標(biāo)準(zhǔn) C語(yǔ)言實(shí)現(xiàn),因而整個(gè) Java系統(tǒng)都具有可移植性。 (3) 多線程機(jī)制 10 Java 具有多線程機(jī)制,這使得應(yīng)用程序能夠并行地執(zhí)行。它的同步機(jī)制也保證了對(duì)共享數(shù)據(jù)的共享操作,而且線程具有優(yōu)先級(jí)的機(jī)制,有助于分別使用不同線程完成特定行為,也 提高了交互的實(shí)時(shí)響應(yīng)能力。 Java 的多線程技術(shù)使網(wǎng)上實(shí)時(shí)交互實(shí)現(xiàn)很容易,從而為解決網(wǎng)上大數(shù)量的客戶訪問(wèn)提供了技術(shù)基礎(chǔ)。 (4) 跨平臺(tái) 通常,在 Windows 下編寫的程序是不能直接拿到 UNIX 上運(yùn)行的,因?yàn)槌绦虻膱?zhí)行最終必須轉(zhuǎn)換成為計(jì)算機(jī)硬件的機(jī)器指令來(lái)執(zhí)行,專門為某種計(jì)算機(jī)硬件和操作系統(tǒng)編寫的程序是不能夠直接放到其他類型的計(jì)算機(jī)硬件上執(zhí)行的,至少要做移植工作。要想讓程序能夠在不同的計(jì)算機(jī)上運(yùn)行,就要求程序設(shè)計(jì)語(yǔ)言能夠跨越各種軟件和硬件平臺(tái),而Java 恰恰滿足了這一需求。 Java 編譯器能夠產(chǎn)生一種與計(jì)算機(jī) 體系結(jié)構(gòu)無(wú)關(guān)的字節(jié)指令,只要安裝了 Java 虛擬機(jī), Java 就可以在相應(yīng)的處理機(jī)上執(zhí)行。 方案的選擇 面向?qū)ο蟮某绦蛟O(shè)計(jì)吸取了結(jié)構(gòu)化程序設(shè)計(jì)的先進(jìn)思想,并把它們同幾個(gè)支持用戶用新方法進(jìn)行程序設(shè)計(jì)的有力概念結(jié)合在一起。 所有面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一般都包含三個(gè)概念:封裝、多態(tài)性和繼承性。 這種方法要求語(yǔ)言必須具備抽象、封裝、繼承和多態(tài)性這幾個(gè)關(guān)鍵要素。 面向?qū)ο蟮某绦蛟O(shè)計(jì),是通過(guò)數(shù)據(jù)和代碼建立分塊的內(nèi)存區(qū)域,以便提供對(duì)程序進(jìn)行模塊化的一種程序設(shè)計(jì)方法,這些模塊可以被用作樣板,在需要時(shí)再建立其副本。 C++和 Java在面向?qū)ο筮@方面比 VB要強(qiáng),所以我排除了用 VB做的可能性。但是 C++為了與C語(yǔ)言兼容,其是包含了些面向過(guò)程的成分; Java除了 C++中非面向過(guò)程的部分,其程序編寫過(guò)程就是設(shè)計(jì)、實(shí)現(xiàn)類,定義其屬性、行為的過(guò)程。還有 Java特有的“沙箱”機(jī)制是其安全性的保障,同時(shí)它去除了 C++中易造成的錯(cuò)誤指針,增加了自動(dòng)內(nèi)存管理等措施,保證了 Java程序運(yùn)行的可靠性。 所以經(jīng)過(guò)再三比較了三種語(yǔ)言后,決定采用 Java語(yǔ)言編寫俄羅斯方塊。 11 4. 概要設(shè)計(jì) 4. 1 游戲設(shè)計(jì)方案的 確定 本游戲的設(shè)計(jì)采用 MVC 模式( Model View Controller),即把本游戲的輸入、處理、輸出流程按照 Model、 View、 Controller 的方式進(jìn)行分離,這樣本游戲的設(shè)計(jì)被分成三個(gè)層 — 模型層、視圖層、控制層。 MVC 模型圖如下所示: 4. 2 系統(tǒng)流程結(jié)構(gòu)設(shè)計(jì) 12 4. 3 各個(gè)功能模塊圖設(shè)計(jì) 模型層 (Model)功能模塊圖設(shè)計(jì) 圖形工廠類 圖形類 障礙物類 中央控制器 處理按鍵事件 處理邏輯 顯示面板 顯示 生產(chǎn) 圖形工廠 圖形 障礙物 生產(chǎn) 圖形 下落產(chǎn)生障礙物 觸發(fā)按鍵事件 13 視圖 層 (View)功能模塊圖設(shè)計(jì) 控制層 (Controller)功能模塊圖設(shè)計(jì) 游戲面板 GamePanel 方塊的顯示 障礙物的顯示 中央控制器 Controller 類 圖形工廠生產(chǎn)圖形 顯示面板顯示圖形和障礙物 處理按鍵和鼠標(biāo)事件 14 5. 詳細(xì) 設(shè)計(jì) 模型層 (Model)設(shè)計(jì) 圖形的產(chǎn)生 通過(guò)圖形工廠類 ShapeFactory的 getShape(ShapeListener listener)方法隨機(jī)產(chǎn)生方塊的某種狀態(tài), 這里運(yùn)用了工廠設(shè)計(jì)模式, 這種 設(shè)計(jì)模式是為了實(shí)現(xiàn)高內(nèi)聚低耦合而存在的 , 這種設(shè)計(jì)模式的通俗解釋就是: 你想要一個(gè)產(chǎn)品 ,你需要讓工廠給你生產(chǎn)一個(gè) ,你要告訴工廠你要生產(chǎn)什么產(chǎn)品 , 就把你需要生產(chǎn)的這個(gè)產(chǎn)品當(dāng)做參數(shù)傳給工廠類的生產(chǎn)產(chǎn)品的方法 , 然后根據(jù)你傳進(jìn)來(lái)的產(chǎn)品 , 而決定工廠人生產(chǎn)什么產(chǎn)品 , 產(chǎn)生出來(lái)產(chǎn)品后 , 最后要返回您要的這個(gè)東西 。 圖形 的數(shù)據(jù)結(jié)構(gòu) 定義一個(gè) 4x4 方陣, 共 16個(gè)小格。 用“ 0”和“ 1”來(lái)表示每個(gè)方格是繪制還是空白,由此可以組合出多種圖形, 如圖所示 : 7 6 5 4 3 2 1 隨機(jī)產(chǎn)生一個(gè)數(shù) 隨機(jī)數(shù) 一字形 Z 字形 反 Z形 7字形 反 7 形 倒 T形 田字型 15 其中圖一表示為 {0, 0, 0, 0, 1, 1, 1, 1 , 0, 0, 0, 0, 0, 0, 0, 0} 其中圖二表示為 {0, 0, 0, 0, 0, 1, 1, 0 , 0, 1, 1, 0, 0, 0, 0, 0} 其中圖三表示為 {0, 0, 0, 0, 0, 1, 0, 0 , 0, 1, 1, 1, 0, 0, 0, 0} 其中圖四表示為 {0, 0, 0, 0, 0, 1, 0, 1 , 0, 1, 1, 0, 0, 0, 1, 0} 方塊的旋轉(zhuǎn)是通過(guò)繪制 4個(gè)方向的方塊,在不同旋轉(zhuǎn)角度顯示不同方向的方塊來(lái)完成的。所以程序要控制方塊的旋轉(zhuǎn)方向,只要控制顯示哪副圖就可以了。 本游戲是用一個(gè)三維數(shù)組 int[][][] shapes = new int[][][]; 作為存儲(chǔ)方塊的數(shù)據(jù)結(jié)構(gòu)來(lái)保存方塊的 28種狀態(tài)的 。 圖形的移動(dòng) 圖形類 Shape 保存了自己的位置信息, 用 left 表示圖形到左邊界的距離, top 表示圖形到上邊界的距離,圖形移動(dòng)就是改變 left 和 top 的值。 向上移動(dòng): top 減 1, 向下移動(dòng): top 加 1, 向左移動(dòng): left 減 1, 向右移動(dòng): left 加 1。 圖形的移動(dòng)分為圖形的自動(dòng)下落以及通過(guò)按鍵事件實(shí)現(xiàn)圖形 的左移、右移以及加速下移。 通過(guò)多線程 ShapeDriver 類來(lái)實(shí)現(xiàn)圖形的自動(dòng)下移, 由于游戲中方塊的動(dòng)態(tài)性,每個(gè)方塊有一定的生命周期,所以選用線程來(lái)實(shí) 現(xiàn)方塊。一個(gè)方塊用一個(gè)線程類對(duì)象實(shí)現(xiàn),該類繼承與 Thread 類,當(dāng)一個(gè)方塊出現(xiàn)時(shí)也就表示一個(gè)線程對(duì)象產(chǎn)生并開始運(yùn)行。通過(guò)對(duì)按鍵事件的響應(yīng), 實(shí)現(xiàn)圖形的左移、右移以及加速下移。 圖形的變形 通過(guò) int type = new Random().nextInt()。 (shapes[type])。 16 (0)。實(shí)現(xiàn)初始圖形的初始化, 通過(guò) status = (status + 1) % 。實(shí)現(xiàn)圖形的變形功 能。 存儲(chǔ)和表示障礙物 用一個(gè)和顯示區(qū)域的面板大小相對(duì)應(yīng)的二維數(shù)組保存障礙物的位置信息, 如果對(duì)應(yīng)的位置是障礙物,則這個(gè)數(shù)組中相應(yīng)的元素就為 1,否則就為 0。 如何把圖形變成障礙物呢?只要把屬于圖形的格子對(duì)應(yīng)的位置都變成障礙物即可。 代碼如下: public boolean isMember(int x, int y, boolean rotate) { int tempStatus = status。 if(rotate) { tempStatus = (status + 1) % 。 } return body[tempStatus][y*4 + x] == 1。 } public void accept(Shape shape) { (Ground39。s accept)。 for(int x=0。 x4。 x++) { for(int y=0。 y4。 y++) { if((x, y, false)) { if((() + x) amp。amp。 (() + y)) zaw[() + x][() + y] = 1。 } } } } 判斷滿行及消行 如果某一行沒(méi)有空白,則這一行就是滿行。 滿的那行上面所有的行整體下移一行就是消除這個(gè)滿行。 代碼如下: 17 private void deleteFullLine() { for(int y=。 y=0。 y) { boolean full = true。 for(int x=0。 x。 x++) { if(zaw[x][y] == 0) { full = false。 } } if(full) { deleteLine(y)。 } } } private void deleteLine(int lineNum) { for(int y=lineNum。 y0。 y) { for(int x=0。 x。 x++) { zaw[x][y] = zaw[x][y1]。 } } for(int x=0。 x。 x++) { zaw[x][0] = 0。 } deleteFullLine()。 } 利用循環(huán)語(yǔ)句從屏幕最底行依次向上對(duì)有方塊的每一行進(jìn)行判斷, 判斷某一行中是否有空白,如果沒(méi)有空白的話, 則 將當(dāng)前的行號(hào)傳遞給 deleteLine(int lineNum)方法 ,由該方法實(shí)現(xiàn)消除當(dāng)前行,并將上面 的方塊依次下移一行,最后再重新調(diào)用deleteFullLine()方法進(jìn)行查找 ,直到所有行都檢查一遍結(jié)束。 視圖層 (View)設(shè)計(jì) 18 方塊的顯示 通過(guò) 視圖層的 GamePanel 類的 paint(Graphics g) 方法調(diào)用 Shape 類的drawMe(Graphics g)方法,從而實(shí)現(xiàn)方塊的繪制,代碼如下: public void drawMe(Graphics g) { ()。 for(int x=0。 x4。 x++) { for(int y=0。 y4。 y++) if(getFlagByPoint(x, y)) { (new Shape().shapeColor)。 ((left + x)*, (top + y)*, , , true)。 } } } 障礙物的顯示 通 過(guò) 視 圖 層 的 GamePanel 類的 paint(Graphics g) 方 法 調(diào) 用 Ground 的drawMe(Graphics g) 方法,從而實(shí)現(xiàn)障礙物的繪制,代碼如下: public void drawMe(Graphics g) { for(int x=0。 x。 x++) { for(int y=0。 y。 y++) { if(zaw[x][y] == 1) { (x*, 19 y*, , , true)。 } } } } 控制層 (Controller)設(shè)計(jì) 控制層主要是實(shí)現(xiàn)圖形工廠生產(chǎn)圖形, 圖形按鍵事件的處理, 方塊、障礙物顯示的控制, 圖形自動(dòng)下落和障礙物生成的控制 。 通過(guò)控制層這個(gè)大管家最終實(shí)現(xiàn)此俄羅斯方塊的按鍵事件的處理以及各種邏輯的處理。 游戲演示 20 游戲界面顯示 開始和結(jié)束控制菜單 21 分?jǐn)?shù)和等級(jí)查看菜單 變換方塊菜單 22 幫助菜單 6. 系統(tǒng)測(cè)試 游戲界面菜單選項(xiàng)的功能測(cè)試 (1) “ 控制 ” 菜單測(cè)試 ①點(diǎn)擊“游戲” ?“ 開始 ” 輸出:游戲開始 結(jié)果:正常 ②點(diǎn)擊“游戲” ?“結(jié)束” 輸出:彈出 游戲結(jié)束提示框 結(jié)果:正常 (2) “ 查看 ” 菜單測(cè)試 ①點(diǎn)擊“查看” ?“ 分?jǐn)?shù) ” 輸出: 在游戲面板中間跳出分?jǐn)?shù)顯示框 23 結(jié)果:正常 ②點(diǎn)擊“查看” ?“ 級(jí)別 ” 輸出: 在游戲面板中間跳出級(jí)別顯示框 結(jié)果:正常 (3) “ 變換 ” 菜單測(cè)試 ①點(diǎn)擊“變換” ?“改變方塊” 輸出:在游戲面板中 顯示隨機(jī)產(chǎn)生的某種方塊 結(jié)果:正常 按鍵事件的功能測(cè)試 (1) 方塊移動(dòng)測(cè)試 游戲過(guò)程中,點(diǎn)擊“左、右、下”方向鍵 輸出: 方塊正常移動(dòng),不會(huì)移出邊界 結(jié)果:正常 (2) 方塊 反轉(zhuǎn) 測(cè)試 游戲過(guò)程中,點(diǎn)擊 向上 方向鍵 輸出:方塊 無(wú)邊界和障礙物阻擋的情況下可反轉(zhuǎn) 結(jié)果:正常 方塊堆砌與消行測(cè)試 (1) 當(dāng)方塊下落到最底面或與障礙物接觸時(shí) 輸出: 方塊成功堆砌在底部 結(jié)果:正常 (2) 當(dāng)出現(xiàn)滿行現(xiàn)象時(shí) 輸出: 所有滿行被消除 , 方塊依次下移 結(jié)果:正常 測(cè)試結(jié)果分析 經(jīng)過(guò)測(cè)試,本游戲?qū)崿F(xiàn)了基本的功能, 不過(guò)整體功能還不是很強(qiáng)大, 作為開發(fā)的第一個(gè)版本,游戲在很多方面還需要進(jìn)一步完善。 24 結(jié) 論 游戲設(shè)計(jì)與實(shí)踐是一項(xiàng)復(fù)雜而且龐大的工作,在選題之后,我才意識(shí)到過(guò)程的艱難,因?yàn)橐郧皬膩?lái)沒(méi)有接觸過(guò)游戲設(shè)計(jì),剛開始時(shí)有點(diǎn)迷茫和彷徨。后來(lái)通過(guò)看書和在網(wǎng)上查找資料,逐漸找到了一些感覺,也依照資料自己動(dòng)手編寫了幾個(gè)簡(jiǎn)單經(jīng)典的游戲。本文僅以俄羅斯方塊為例予以說(shuō)明。 本次設(shè)計(jì)讓我初步懂得了電子游戲所涉及到的有關(guān)技術(shù)、方法,包括電子游戲分類、選題、構(gòu)思等。并實(shí)現(xiàn)幾個(gè)可演示的游戲軟件,其中有很多應(yīng)用了學(xué)習(xí)的相關(guān)技術(shù),并且做到了圖、文、聲并茂,能實(shí)際演示。此次設(shè)計(jì)過(guò)程中印象最深的收獲有: 學(xué)到了很多新知識(shí),并且對(duì)老知識(shí)進(jìn) 行了回顧。經(jīng)過(guò)長(zhǎng)時(shí)間的學(xué)習(xí),更進(jìn)一步熟悉了 Java語(yǔ)言。 通過(guò)不斷上機(jī)實(shí)驗(yàn),調(diào)試程序,總結(jié)經(jīng)驗(yàn),從對(duì)課題的不理解到能夠開始動(dòng)手去做,提出問(wèn)題并自己想辦法解決問(wèn)題,自己多實(shí)踐,所以增強(qiáng)了動(dòng)手能力。 提高了中、英文資料的檢索能力。這次畢業(yè)設(shè)計(jì)過(guò)程中我查閱了很多資料,不但有圖書館的期刊、雜志、館藏圖書,還有網(wǎng)絡(luò)中的電子文檔、電子書籍、網(wǎng)頁(yè)及下載的視頻教學(xué)課程;不但有中文資料還有英文資料。這些資料,使我的眼界更開闊,對(duì)課題的認(rèn)識(shí)更加深刻,編寫程序的時(shí)候思路更加清楚,少走了很多彎路。 但如果真的要從事游戲設(shè)計(jì)的工 作,需要走的路還很長(zhǎng),即便是對(duì)于國(guó)際知名的大公司,也是在不斷的探索和實(shí)踐中前進(jìn)。但這并不表明前途就是渺茫的,通過(guò)這次實(shí)踐,進(jìn)行了一次從底而上和自上而下的歸納和演繹的過(guò)程,在變化多端的游戲面前,總算領(lǐng)悟了一點(diǎn)它的奧妙。內(nèi)容繁復(fù)、采用的表
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1