嵌入式軟件開發(fā)課程設(shè)計(jì)-俄羅斯方塊游戲_第1頁
嵌入式軟件開發(fā)課程設(shè)計(jì)-俄羅斯方塊游戲_第2頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、班級(jí)學(xué)號(hào):姓名:日期:淮 海 工 學(xué) 院 計(jì)算機(jī)工程學(xué)院課程設(shè)計(jì)報(bào)告姓 系 學(xué) 成績(jī):成績(jī)簽名:2015年 1 月 日第 - 0 - 頁 共 21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書基于 Android 環(huán)境的俄羅斯方塊游戲設(shè)計(jì) Pazhitnov)在 1984 年 6 月利用空暇時(shí)間編寫的游戲程序,故此得名。俄羅斯方塊的基本規(guī)則是移動(dòng)、旋轉(zhuǎn)和擺放游戲隨機(jī)產(chǎn)生的各種方塊,使之排列成完整的一行或多行并作為游戲本身很有魅力,但是要熟練掌握其中的操作和擺放技巧,難度卻不低。此軟件給用戶提供了一個(gè)展現(xiàn)自己高超技藝的場(chǎng)所,在這里,它不僅放松自己,還能感受到游戲中的樂趣。游戲區(qū)域會(huì)從頂部不

2、斷落下 8 種下墜物的一種,游戲區(qū)域右上角有一個(gè)區(qū)域可以顯下墜物在游戲區(qū)域以“擺積木”的形式出現(xiàn)。下墜物在一行或多行堆滿后就可以自動(dòng)消除,消行后會(huì)得到相應(yīng)的分?jǐn)?shù),如果當(dāng)前下墜物堆積至窗口頂端,則游戲結(jié)束。嵌入式系統(tǒng)的教學(xué)可以分為課堂理論教學(xué)、實(shí)驗(yàn)教學(xué)和課程設(shè)計(jì)三個(gè)層面。這三個(gè)層面的目標(biāo)有所不同。理論學(xué)習(xí)的主要目標(biāo)是掌握嵌入式系統(tǒng)的一般原理,例如實(shí)時(shí)調(diào)度策略、自動(dòng)控制算法等;實(shí)驗(yàn)教學(xué)的主要目的是掌握嵌入式系統(tǒng)的主要開發(fā)流程和基本方法,例如開發(fā)工具鏈的使用、小型應(yīng)用開發(fā)等;課程設(shè)計(jì)的主要目的是通過實(shí)際的嵌入式應(yīng)用系統(tǒng)開發(fā)實(shí)例掌握嵌入式系統(tǒng)設(shè)計(jì)和開發(fā)的技能和專門知識(shí),積累實(shí)踐和工程經(jīng)驗(yàn)。第 - 1

3、- 頁 共 21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書開發(fā)一個(gè)簡(jiǎn)單的俄羅斯方塊游戲,并達(dá)到以下要求:1、開始游戲隨機(jī)產(chǎn)生方塊并自動(dòng)下落。右上角 2*2 預(yù)示框顯示即將出現(xiàn)的圖形;2、按“|”鍵可以暫停游戲,按”GO”鍵開始游戲;3、點(diǎn)擊屏幕變換方塊角度,觸屏向左(右)實(shí)現(xiàn)左(右)移,向下點(diǎn)擊加速下移;4、系統(tǒng)能夠正確判斷是否滿行,并對(duì)已滿的行實(shí)現(xiàn)消行并加分。(1)方塊類:每個(gè)方塊都有自己的ID、形狀、顏色。每個(gè)方塊都限定在4*4 的矩形區(qū)域內(nèi)變幻形狀。以此矩形區(qū)域的左上方端點(diǎn)為坐標(biāo)移動(dòng)。在方塊類中定 ID 時(shí)只需要提供其 ID 即可。移動(dòng):在指定的游戲區(qū)域中移動(dòng),包括向左、右、下

4、移動(dòng)。以一個(gè)單元為單位。觸屏向左(右)輕微移動(dòng)實(shí)現(xiàn)左(右)移一格,觸屏向左(右)長(zhǎng)移實(shí)現(xiàn)左(右)移到最左(右)端,觸屏向下輕微移動(dòng)加速下移一格,觸屏向下長(zhǎng)移加速下移至底端。如果可以移動(dòng),則修改參考點(diǎn)的位置,并在指定的游戲區(qū)域中重新填充自己,返回是否移動(dòng)成功的信息。方塊的旋轉(zhuǎn),我們不能只記錄提供的 8 中方塊形狀,而應(yīng)該把它們旋轉(zhuǎn)后產(chǎn)生的每種形狀都認(rèn)為是一種不同的方塊。這時(shí)候我們只處理一個(gè)方向的旋轉(zhuǎn),即順時(shí)針旋轉(zhuǎn)方式。然后在指定的區(qū)域中重新填充自己。(2)游戲區(qū)域類:可以用一個(gè)二維數(shù)組方便的實(shí)現(xiàn)。方塊落地:先執(zhí)行清行操作,獲得活動(dòng)方塊占用了哪些行的信息,然后逐行進(jìn)行掃描:對(duì)每一行,檢查其10列單

5、元格是否都已經(jīng)被填充,如果沒有,則繼續(xù)檢查下一行,如果是,則將該行以上的游戲區(qū)域整體下移一行,并在最上面一行填充一行空格。執(zhí)行完清行操作后,要產(chǎn)生下一個(gè)方塊,方塊類似于“開始”命令中的步驟,此時(shí)要把活動(dòng)方塊指定為新產(chǎn)生的方塊,而且還有檢查新產(chǎn)生的方塊是否能成功填充,如果填充失敗,則游戲結(jié)束。第 - 2 - 頁 共 21 頁Android 有豐富的功能,因此很容易與桌面操作系統(tǒng)混淆。Android 是一個(gè)分層的環(huán)境,構(gòu)建在Linux 子系統(tǒng)包括:窗口,視圖。用于顯示一些常見組件(例如編輯框、列表和下拉列表)的小部件。Android 包括一個(gè)構(gòu)建在 WebKit 基礎(chǔ)上的可嵌入瀏覽器, iPhon

6、e 的 MobileSafari 瀏覽器同樣也是以 WebKit 為基礎(chǔ)。Android提供多種連接選項(xiàng),包括 WiFi、 和 應(yīng)用程序中一項(xiàng)流行的技術(shù)是鏈接到 Google 地圖,以便在應(yīng)用程序中顯示地址。Android 軟件棧還提供對(duì)基于位置的服務(wù)(例如 GPS)和加速計(jì)的支持,不過并不是所有的 Android 通過提供對(duì)2D 和 3D OpenGL Android平臺(tái)包括流行的開源 SQLite 數(shù)據(jù)庫,因此緩解了數(shù)據(jù)存儲(chǔ)的負(fù)擔(dān)。 運(yùn)行在 Linux 應(yīng)用程序是用Java VM 并非您想象中的 DalvikVirtual Android 應(yīng)用程序都在 Dalvik VM 的一個(gè)實(shí)例中運(yùn)行

7、,這個(gè)實(shí)例駐留在一個(gè)由 Linux 內(nèi)核管理的進(jìn)程中。(圖1)(4) 功能模塊設(shè)計(jì)說明我主要負(fù)責(zé)游戲的形狀視圖以及各種方塊的形狀定義a.俄羅斯方塊中的“山”型:二維數(shù)組,通過設(shè)置里面的小正方形的顏色來得到對(duì)應(yīng)的圖形,通過設(shè)置data02,data11data12data13從而得到如上圖形,并設(shè)置成綠色。其具體的實(shí)現(xiàn)代碼如下:二維數(shù)組,通過設(shè)置里面的小正方形的顏色來得到對(duì)應(yīng)的圖形,通過設(shè)置data00,data01data02data33從而得到如上圖形,并設(shè)置成藍(lán)色。其具體的實(shí)現(xiàn)代碼如下 :二維數(shù)組,通過設(shè)置里面的小正方形的顏色來得到對(duì)應(yīng)的圖形,通過設(shè)置data02,data11data12

8、data21從而得到如上圖形,并設(shè)置成粉紅色。二維數(shù)組,通過設(shè)置里面的小正方形的顏色來得到對(duì)應(yīng)的圖形,通過設(shè)置data01,data11data12data22從而得到如上圖形,并設(shè)置成淺綠色。其具體的實(shí)現(xiàn)代碼如下 :二維數(shù)組,通過設(shè)置里面的小正方形的顏色來得到對(duì)應(yīng)的圖形,通過設(shè)置data11,data12data22data32從而得到如上圖形,并設(shè)置成灰色。其具體的實(shí)現(xiàn)代碼如下 :true二維數(shù)組,通過設(shè)置里面的小正方形的顏色來得到對(duì)應(yīng)的圖形,通過設(shè)置data11,data12data21data31從而得到如上圖形,并設(shè)置成紅色。其具體的實(shí)現(xiàn)代碼如下 :二維數(shù)組,通過設(shè)置里面的小正方形的

9、顏色來得到對(duì)應(yīng)的圖形,通過設(shè)置data01,data02data11data12從而得到如上圖形,并設(shè)置成黃色。其具體的實(shí)現(xiàn)代碼如下 :俄羅斯方塊中的“點(diǎn)”型二維數(shù)組,通過設(shè)置里面的小正方形的顏色來得到對(duì)應(yīng)的圖形,通過設(shè)置data02,從而得到如上圖形,并設(shè)置成灰色。true由于我主要負(fù)責(zé)游戲的形狀視圖,對(duì)界面設(shè)計(jì)和編程,在編程過程中,如何實(shí)現(xiàn)對(duì)界面的設(shè)計(jì),遇到了很多問題,例如,怎么把屏幕分成20*10 的小方格,開始嘗試了很多方法,最終通過設(shè)置若干條間隙來實(shí)現(xiàn)此布局,正如開始時(shí)的界面:然后關(guān)于如何實(shí)現(xiàn) 8 種方塊的形狀也遇到了一些問題,怎樣把 8 種形狀表示出來,然后把小方塊定義出來,并且附

10、上不同的顏色,這樣就能夠區(qū)分開來了,而且這樣還能夠很容易的實(shí)現(xiàn)小方塊的變形以及下降,從而為后面的功能實(shí)現(xiàn)提供了可行的措施,下圖是其代碼的聲明:分別是排行榜,游戲操作,關(guān)于作者,以及退出。其界面如圖所示:班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書續(xù) 92*2預(yù)示框顯示即將出現(xiàn)的圖形;(2)按“|”鍵可以暫停游戲,按”GO”鍵開始游戲;(3)點(diǎn)擊屏幕變換方塊角度,觸屏向左(右)輕微移動(dòng)實(shí)現(xiàn)左(右)移一格,觸屏向左(右)長(zhǎng)移實(shí)現(xiàn)左(右)移到最左(右)端,觸屏向下輕微移動(dòng)加速下移一格,觸屏向下長(zhǎng)移加速下移至底端;同時(shí)消除三行時(shí)得六分,同時(shí)消除四行時(shí)得十分。(5)游戲升級(jí):每得50分,游戲升一級(jí),

11、方塊下降速度增加。 a游戲操作b退出 c作者d IP號(hào)和日期將記錄進(jìn)排行榜第 - 11 - 頁 共21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書import android.graphics.Color;/長(zhǎng)棒形狀的設(shè)置public class Bar extends ShapeAbstract private static final longserialVersionUID= -7974219679616324149L;/序列號(hào)的時(shí)候,被序列化的類要有一個(gè)唯一標(biāo)記。COLORdata = getEmptyShape();第 - 12 - 頁 共21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程

12、 設(shè) 計(jì) 說 明 書import android.graphics.Color;public class Hill extends ShapeAbstract serialVersionUID= 1005482779396338610L;唯一的COLORdata = getEmptyShape();data = getEmptyShape();第 - 13 - 頁 共21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書data = getEmptyShape();package com.ding.shape;import android.graphics.Color;public clas

13、s Squareextends ShapeAbstract serialVersionUID= 3870772549631600871L;/唯一的COLOR=Color.YELLOW;設(shè)置顏色為黃色Rectangle data = getEmptyShape();data01.setSolid(true);data01.setColor(COLOR);data02.setSolid(true);data02.setColor(COLOR);data11.setSolid(true);data11.setColor(COLOR);data12.setSolid(true);data12.setC

14、olor(COLOR);m_shapes.add(data);第 - 14 - 頁 共21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書ShapeView.javaprotected Rectangle m_data;m_rectW = w;第 - 15 - 頁 共21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書public void setRectHeight(int h) m_rectH = h;setMeasuredDimension(totalW, totalH);/設(shè)置當(dāng)前view大小第 - 16 - 頁 共21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書for

15、 (int i = 0; i m_data.length; i+) int right = left + w - m_gap;int bottom = top + h - m_gap;Rect tempR = new Rect(left, top, right, bottom);Paint p = new Paint();Paint p = new Paint();Rect r = new Rect(0, 0, h * m_data0.length -1, w * m_data.length - 1);protected void onMeasure(int widthMeasureSpec,

16、 int heightMeasureSpec)int width = h * m_data0.length;int height = w * m_data.length;setMeasuredDimension(width, height);第 - 17 - 頁 共21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書int totalW = getWidth(); else super.onMeasure(widthMeasureSpec, heightMeasureSpec);for (int i = 0; i m_data.length; i+) rect.setColor(Shape

17、.DEFAULT_COLOR);第 - 18 - 頁 共21 頁班級(jí)學(xué)號(hào):姓名:日期:課 程 設(shè) 計(jì) 說 明 書1楊豐盛. Android應(yīng)用開發(fā)揭秘M. 北京: 機(jī)械工業(yè)出版社, 2010.12劉新. Java開發(fā)技術(shù)大全M. 北京: 清華大學(xué)出版社, 2009.23李華明. Android游戲編程之從零開始M. 北京: 清華大學(xué)出版社, 2011.104吳亞峰, 蘇亞光. Android游戲開發(fā)大全M. 北京: 人民郵電出版社, 2012.15王世江, 佘志龍, 陳昱勛, 鄭名杰. Google Android SDK開發(fā)范例大全M.北京: 人民郵電出版社, 2011.116靳巖, 姚尚朗

18、. Android開發(fā)入門和實(shí)踐M. 北京: 人民郵電出版社, 2009.77李剛. 瘋狂Android講義M. 北京: 電子工業(yè)出版社, 20098蓋索林. Google Android開發(fā)入門指導(dǎo)M. 北京: 人民郵電出版社, 20079康德爾. Android 移動(dòng)應(yīng)用開發(fā)從入門到精通 M. 北京: 人民郵電出版社,2007為期三周的嵌入式軟件開發(fā)課程設(shè)計(jì)終于結(jié)束了,通過這次課程設(shè)計(jì),使我熟悉了嵌入式軟件開發(fā)的流程和eclipseJava的一特別是對(duì)一個(gè)安卓工程的結(jié)構(gòu)更加清楚,知道了每個(gè)文件夾里對(duì)應(yīng)著什么類型和功能的文件。這次課程設(shè)計(jì)是分小組進(jìn)行的,我主要是負(fù)責(zé)游戲的形狀視圖以及各種方塊的形狀定義,所以對(duì)頁面布局這一塊的內(nèi)容有了更深的理解,還是學(xué)到的很多的安卓知識(shí),尤其注意到了安卓和Java通過這次課程設(shè)計(jì),發(fā)現(xiàn)它們之間還是有很大的不同,通過上網(wǎng)查找資料,也學(xué)到了很多,遇到問題,要善于利用互聯(lián)網(wǎng),當(dāng)今是網(wǎng)絡(luò)的時(shí)代,網(wǎng)上有海量的信息,我們?cè)趯W(xué)習(xí)中遇到困難要及時(shí)上網(wǎng)查閱資料,這樣我們才能學(xué)到更多的課本之外的知識(shí)。這次課程設(shè)計(jì)也讓我知道了,我們學(xué)習(xí)不

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論