2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  Android課程設(shè)計(jì)</p><p>  專 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) </p><p>  姓 名 </p><p>  學(xué) 號 </p><p>  指導(dǎo)老師 <

2、;/p><p><b>  目錄</b></p><p><b>  第一章 緒論3</b></p><p><b>  1.1開發(fā)背景3</b></p><p>  1.1.1安卓系統(tǒng)簡介3</p><p>  1.1.2游戲簡介3</p&

3、gt;<p>  1.2開發(fā)目的及意義4</p><p>  1.3開發(fā)環(huán)境及工具4</p><p>  第二章需求分析5</p><p>  2.1游戲界面分析5</p><p>  2.2游戲角色分析5</p><p>  2.3游戲控制分析5</p><p> 

4、 2.4 可行性分析6</p><p>  第三章總體設(shè)計(jì)7</p><p>  3.1系統(tǒng)功能模塊層次圖7</p><p><b>  3.2運(yùn)行機(jī)制8</b></p><p>  3.3貪吃蛇功能流程圖10</p><p>  第四章 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)12</p>

5、<p>  4.1 TiltView類12</p><p>  4.2 SnakeView類14</p><p>  4.3 界面設(shè)計(jì)16</p><p><b>  第五章 測試20</b></p><p>  5.1游戲功能測試20</p><p>  5.2游戲控制

6、測試20</p><p>  5.3游戲界面測試20</p><p>  5.4測試結(jié)果20</p><p><b>  第六章結(jié)論 1</b></p><p><b>  第一章 緒論</b></p><p><b>  1.1開發(fā)背景</b>

7、;</p><p>  1.1.1安卓系統(tǒng)簡介</p><p>  安卓系統(tǒng)作為新興的手機(jī)操作系統(tǒng),在問世不久,變風(fēng)靡全球,占領(lǐng)手機(jī)操作系統(tǒng)里很大的市場份額,與蘋果,諾基亞三分天下,Android是基于Linux開放性內(nèi)核的操作系統(tǒng),是Google公司在2007年11月5日公布的手機(jī)操作系統(tǒng)。 早期由原名為"Android"的公司開發(fā),谷歌在2005年收購"A

8、ndroid.Inc"后,繼續(xù)對Android系統(tǒng)開發(fā)運(yùn)營,它采用了軟件堆層(software stack,又名軟件疊層)的架構(gòu),主要分為三部分。底層Linux內(nèi)核只提供基本功能,其他的應(yīng)用軟件則由各公司自行開發(fā),部分程序以Java編寫。</p><p><b>  1.1.2游戲簡介</b></p><p>  1976年,Gremlin平臺推出了一款經(jīng)典

9、街機(jī)游戲Blockade。游戲中,兩名玩家分別控制一個角色在屏幕上移動,所經(jīng)之處砌起圍欄。角色只能向左、右方向90度轉(zhuǎn)彎,游戲目標(biāo)保證讓對方先撞上屏幕或圍欄。 聽起來有點(diǎn)復(fù)雜?其實(shí)就是下面這個樣子:     基本上就是兩條每走一步都會長大的貪吃蛇比誰后完蛋,玩家要做的就是避免撞上障礙物和越來越長的身體。更多照片、視頻可以看 Games DBase 的介紹?!?   Blockade 很受歡迎,類似的游戲先后出現(xiàn)在 Atari 260

10、0、TRS-80、蘋果 2 等早期游戲機(jī)、計(jì)算機(jī)上。但真正讓這種游戲形式紅遍全球的還是21年后隨諾基亞手機(jī)走向世界的貪吃蛇游戲——Snake。</p><p>  貪吃蛇游戲是一款老牌的手機(jī)游戲,同時也是一款比較需要耐心地游戲。貪吃蛇游戲就是一條小蛇,不停地在屏幕上游走,吃各個方向出現(xiàn)的食物,越吃越長。只要蛇頭碰到屏幕四周,或者碰到自己的身子,小蛇就立即斃命。玩“貪吃蛇游戲”,難度最大的不是蛇長得很長的時候,而是

11、開始的時候。那時蛇身很短,看上去難度不大,卻最容易死掉,因?yàn)榘淹嬉粭l小蛇讓人容易走神,失去耐心。</p><p>  1.2開發(fā)目的及意義</p><p>  通過本次課程設(shè)計(jì),了解android軟件的開發(fā)過程,熟悉并掌握J(rèn)AVA語言,HTML. 程序關(guān)鍵在于表示蛇的圖形及蛇的移動。用一個小矩形快表示蛇的一節(jié)身體,身體每長一節(jié),增加一個矩形塊,蛇頭用倆節(jié)表示。移動時必須從蛇頭開始,所以蛇不

12、能向相反的方向移動,如果不按任意鍵,蛇自行在當(dāng)前方向上前移,但按下有效方向鍵后,蛇頭朝著該方向移動,一步移動一節(jié)身體,所以按下有效方向鍵后,先確定蛇頭的位置,而后蛇的身體隨蛇頭移動,圖形的實(shí)現(xiàn)是從蛇頭新位置開始畫出蛇,這時,由于未清屏的原因,原來的蛇的位置和新蛇的位置差一個單位,所以看起來蛇多一節(jié)身體,所以將蛇的最后一節(jié)用背景色覆蓋。食物的出現(xiàn)與消失也是畫矩形塊和覆蓋矩形塊。為了便于理解,定義兩個結(jié)構(gòu)體:食物與蛇 目的 本程序?qū)崿F(xiàn)主要技

13、巧在于java語言的應(yīng)用。目的在于提高編程的水平。</p><p>  1.3開發(fā)環(huán)境及工具</p><p>  采用eclipse開發(fā)工具,在windowsxp下進(jìn)行,基于安卓2.2操作系統(tǒng)。</p><p><b>  環(huán)境搭建:</b></p><p><b>  1. JDK安裝</b>&

14、lt;/p><p>  2. Eclipse安裝</p><p>  3. Android SDK安裝</p><p>  4. ADT安裝創(chuàng)建AVD</p><p><b>  需求分析</b></p><p><b>  2.1游戲界面分析</b></p>

15、<p>  首先應(yīng)解決操作界面的問題,操作界面應(yīng)該人性化設(shè)計(jì),提示玩家當(dāng)前游戲狀態(tài),何時開始,按什么按鍵開始游戲,開始游戲之后,在游戲界面中,以坐標(biāo)的形式對整體界面進(jìn)行劃分,將界面劃分為許多個小方格,還應(yīng)設(shè)計(jì)蛇的樣式,蘋果的樣式和墻的樣式,在蛇吃到蘋果后的樣式,還有游戲結(jié)束或暫停時,界面的顯示,游戲結(jié)束后,要顯示所得的分?jǐn)?shù)。</p><p><b>  2.2游戲角色分析</b>

16、</p><p>  設(shè)置游戲貪吃蛇初始時由固定個小矩形塊組成,并且,游戲中,要隨機(jī)出現(xiàn)由單個矩形塊構(gòu)成的蘋果,并且在設(shè)置蘋果的時候,還要設(shè)置,不能使將要出現(xiàn)的蘋果出現(xiàn)在蛇的身體之下,在蛇吃到蘋果的時候,要將蛇的身體加長,隨著游戲的進(jìn)行,蛇移動的速度也要加快。此外,要判定游戲成功與失敗的條件,當(dāng)蛇的頭和尾相撞或者蛇的頭部撞到了墻上,則游戲失敗,此時游戲結(jié)束,界面顯示所得分?jǐn)?shù),當(dāng)累積分?jǐn)?shù)達(dá)到一定標(biāo)準(zhǔn)則游戲成功。另外

17、蛇的移動原理,由外部按鍵設(shè)置監(jiān)聽控制蛇頭的移動方向,在方向的指引下進(jìn)行移動,蛇及蘋果的位置都是由坐標(biāo)數(shù)組確定的,蘋果的位置也是隨機(jī)產(chǎn)生的蛇的移動原理是后一矩形塊覆蓋前一個矩形塊。當(dāng)一個蘋果被吃掉的時候,要自動生成并顯示下一個蘋果的位置。這些都是在設(shè)計(jì)過程中需要實(shí)現(xiàn)的。</p><p><b>  2.3游戲控制分析</b></p><p>  游戲中需要通過按鍵對蛇的

18、移動方位進(jìn)行控制,共需要設(shè)置四個方位,分別是“東”“西”“南”“北”,在按鍵上用“上”“下”“左”“右”,按鍵與執(zhí)行部分便涉及到監(jiān)聽,通過監(jiān)聽指示蛇的運(yùn)動,此外,要設(shè)置蛇移動是的默認(rèn)方向?yàn)椤吧稀?lt;/p><p>  游戲開始時也是由“上”鍵啟動,暫停后根據(jù)玩家的操作自動控制蛇的移動方向,設(shè)計(jì)過程中還應(yīng)注意,蛇的移動只能是90度偏轉(zhuǎn),不能進(jìn)行180度偏轉(zhuǎn)。此外還要設(shè)置游戲的四種狀態(tài),準(zhǔn)備,運(yùn)行,暫停,結(jié)束,蛇體變長

19、的時候要用累加器進(jìn)行加分。游戲暫停時,要對當(dāng)前游戲的參數(shù)和狀態(tài)進(jìn)行保存。</p><p>  2.4 可行性分析   貪吃蛇游戲是一種簡單的大眾的游戲,自從計(jì)算機(jī)實(shí)現(xiàn)以來,深受廣大電腦玩家的喜愛,做一個簡單的貪吃蛇小游戲?! ?貪吃蛇的核心算法時如何實(shí)現(xiàn)移動和吃掉食物,沒有碰到食物的時候,把當(dāng)前運(yùn)動方向上的下個節(jié)點(diǎn)入隊(duì),并以蛇節(jié)點(diǎn)的顏色繪制這個節(jié)點(diǎn),然后把頭指針?biāo)傅墓?jié)點(diǎn)出隊(duì),并以游戲框架內(nèi)部背景色重繪出隊(duì)的

20、節(jié)點(diǎn),這樣就可以達(dá)到移動的效果。而在吃到食物的時候,則只需把食物入隊(duì)即可。實(shí)現(xiàn)貪吃蛇的基本的蛇身移動、吃到食物身體增長、和碰到墻壁或自身死亡,能夠暫停和開始?! ?本次設(shè)計(jì)我將主要運(yùn)用java語言來完成。Java語言是一種跨平臺,適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z言,用Java寫的應(yīng)用程序不用修改就可在不同的軟硬件平臺上運(yùn)行?! ∮捎贘ava主要用于網(wǎng)絡(luò)應(yīng)用程序開發(fā),因此對安全性有較高的要求。如果沒有安全保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)

21、行就非常危險。Java通過自己的安全機(jī)制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。</p><p><b>  總體設(shè)計(jì)</b></p><p>  3.1系統(tǒng)功能模塊層次圖</p><p>  工程中包括4個Activity,分別為Snake(主界面)、Game(游戲界面)、Help(游戲說明界面)、AuthorView(作者信息界

22、面),通過不同Activity之間的轉(zhuǎn)換實(shí)現(xiàn)不同界面之間的切換。Snake(Activity)繼承了SnakeView類,SnakeView類繼承了TileView類。TileView類繼承了View其實(shí) Snake的工程蠻簡單的,源文件就三個: Snake.java SnakeView.java TileView.java。 Snake類是這個游戲的入口點(diǎn), TitleView類進(jìn)行游戲的繪畫, SnakeView類則是對游戲控制操作

23、的處理。 Coordinate, RefreshHandler是 2個輔助類,也是 SnakeView類中的內(nèi)部類。其中, Coordinate是一個點(diǎn)的坐標(biāo)( x, y), RefreshHandler將 RefreshHandler對象綁定某個線程并給它發(fā)送消息。如下圖:</p><p><b>  類圖</b></p><p><b>  3.2運(yùn)行機(jī)

24、制</b></p><p>  任何游戲都需要有個引擎來推動游戲的運(yùn)行,最簡化的游戲引擎就是:在一個線程中 While循環(huán),檢測用戶操作,對用戶的操作作出反應(yīng),更新游戲的界面,直到用戶退出游戲。在 Snake這個游戲中,輔助類 RefreshHandler繼承自 Handler,用來把 RefreshHandler與當(dāng)前線程進(jìn)行綁定,從而可以直接給線程發(fā)送消息并處理消息。注意一點(diǎn): Handle對

25、消息的處理都是異步。 RefreshHandler在 Handler的基礎(chǔ)上增加 sleep()接口,用來每隔一個時間段后給當(dāng)前線程發(fā)送一個消息。 handleMessage()方法在接受消息后,根據(jù)當(dāng)前的游戲狀態(tài)重繪界面,運(yùn)行機(jī)制如下: 活動圖運(yùn)行機(jī)制這比較類似定時器的概念,在特定的時刻發(fā)送消息,根據(jù)消息處理相應(yīng)的事件。 update()與 sleep()間接的相互調(diào)用就構(gòu)成了一

26、個循環(huán)。這里要注意: mRedrawHandle綁定的是 Avtivity所在的線程,也就是程序的主線程;另外由于 sleep()是個異步函數(shù),所以 update()與 sleep()之間</p><p>  3.3貪吃蛇功能流程圖</p><p>  第四章 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  4.1 TiltView類</p><p>

27、;  TiltView的基類是View,包含了貪吃蛇游戲畫面的各個設(shè)定參數(shù),主要負(fù)責(zé)繪制游戲畫面。TileView類定義如下:</p><p>  public class TileView extends View {</p><p>  private static final String tag = "yao";</p><p>  pr

28、otected static int mTileSize = 20;//方格的邊長</p><p>  protected static int mXTileCount;//X軸上方格的個數(shù)</p><p>  protected static into mYTileCount;//Y軸上方格的個數(shù)</p><p>  private static int mXOf

29、fset;//繪圖時X軸上的起始坐標(biāo)</p><p>  private static int mYOffset;//繪圖時Y軸上的起始坐標(biāo)</p><p>  private Bitmap[] mTileArray;//位圖數(shù)組</p><p>  private int[][] mTileGrid;//映射整個游戲畫面的數(shù)組</p><p&g

30、t;  private final Paint mPaint = new Paint();//畫筆</p><p>  public TileView(Context context, AttributeSet attrs) {</p><p>  super(context, attrs);</p><p>  Log.i(tag, "TileView

31、Constructor");</p><p>  Log.i(tag, "mTileSize=" + mTileSize);</p><p><b>  }</b></p><p>  //重置位圖數(shù)組的長度</p><p>  public void resetTiles(int tile

32、count) {</p><p>  mTileArray = new Bitmap[tilecount];</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  //適應(yīng)各種分辨率的屏幕,當(dāng)改變屏幕大小尺寸時,同時修改tile的相關(guān)計(jì)數(shù)

33、指標(biāo)</p><p>  protected void onSizeChanged(int w, int h, int oldw, int oldh) {</p><p>  Log.i(tag, "onSizeChanged," + "w=" + w + " h=" + h + " oldw=" + oldw

34、 + " oldh=" + oldh);</p><p>  mXTileCount = (int) Math.floor(w / mTileSize);</p><p>  mYTileCount = (int) Math.floor(h / mTileSize);</p><p>  Log.i(tag, "mXTileCount=

35、" + mXTileCount);</p><p>  Log.i(tag, "mYTileCount=" + mYTileCount);</p><p>  mXOffset = ((w - (mTileSize * mXTileCount)) / 2);</p><p>  mYOffset = ((h - (mTileSize *

36、 mYTileCount)) / 2);</p><p>  Log.i(tag, "mXOffset=" + mXOffset);</p><p>  Log.i(tag, "mYOffset=" + mYOffset);</p><p>  mTileGrid = new int[mXTileCount][mYTileCo

37、unt];</p><p>  clearTiles();</p><p><b>  }</b></p><p>  //這里做了一個 Drawable 到 bitmap 的轉(zhuǎn)換</p><p>  public void loadTile(int key, Drawable tile) {</p>&l

38、t;p>  Bitmap bitmap = Bitmap.createBitmap(mTileSize, mTileSize, Bitmap.Config.ARGB_8888);</p><p>  Canvas canvas = new Canvas(bitmap);</p><p>  tile.setBounds(0, 0, mTileSize, mTileSize);<

39、/p><p>  tile.draw(canvas);</p><p>  mTileArray[key] = bitmap;</p><p><b>  }</b></p><p><b>  //清空圖形顯示</b></p><p>  public void clearTi

40、les() {</p><p>  Log.i(tag, "TileView.clearTiles");</p><p>  for (int x = 0; x < mXTileCount; x++) {</p><p>  for (int y = 0; y < mYTileCount; y++) {</p><

41、p>  setTile(0, x, y);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //在相應(yīng)的坐標(biāo)位置繪制相應(yīng)的磚塊</p><p>  publ

42、ic void setTile(int tileindex, int x, int y) {</p><p>  mTileGrid[x][y] = tileindex;</p><p><b>  }</b></p><p><b>  // onDraw</b></p><p><b>

43、;  @Override</b></p><p>  //將直接操作的畫布繪制到手機(jī)界面上</p><p>  public void onDraw(Canvas canvas) {</p><p>  Log.i(tag, "onDraw");</p><p>  super.onDraw(canvas);&

44、lt;/p><p>  Bitmap bmp;</p><p>  float left;</p><p>  float top;</p><p>  for (int x = 0; x < mXTileCount; x++) {</p><p>  for (int y = 0; y < mYTileCou

45、nt; y++) {</p><p>  if (mTileGrid[x][y] > 0) {</p><p>  bmp = mTileArray[mTileGrid[x][y]];</p><p>  left = x * mTileSize + mXOffset;</p><p>  top = y * mTileSize + m

46、YOffset;</p><p>  canvas.drawBitmap(bmp, left, top, mPaint);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p&

47、gt;<b>  }</b></p><p><b>  }</b></p><p>  4.2 SnakeView類</p><p>  SnakeView類定義了游戲運(yùn)行時的畫面改變及蛇體和果子的更新方法。</p><p>  首先用Handler機(jī)制實(shí)現(xiàn)定時刷新,代碼如下:</p>

48、;<p>  class RefreshHandler extends Handler {</p><p><b>  //獲取消息并處理</b></p><p><b>  @Override</b></p><p>  public void handleMessage(Message msg) {<

49、;/p><p>  SnakeView.this.update();</p><p>  SnakeView.this.invalidate();//刷新view為基類的界面</p><p>  Log.i(tag, "handleMessage|Thread Name="+Thread.currentThread().getName());<

50、/p><p><b>  }</b></p><p>  //定時發(fā)送消息給UI線程,以此達(dá)到更新效果</p><p>  public void sleep(long delayMillis) {</p><p>  this.removeMessages(0); //清空消息隊(duì)列,Handler進(jìn)入對新消息的等待 &

51、lt;/p><p>  Log.i(tag, "sleep|Thread Name="+Thread.currentThread().getName());</p><p>  //定時發(fā)送新消息,激活handler </p><p>  sendMessageDelayed(obtainMessage(0), delayMillis);<

52、/p><p><b>  }</b></p><p><b>  };</b></p><p>  定義SnakeView()函數(shù)初始化游戲,代碼如下:</p><p>  public SnakeView(Context context, AttributeSet attrs) {</p>

53、<p>  super(context, attrs);</p><p>  Log.i(tag, "SnakeView Constructor");</p><p>  initSnakeView();//構(gòu)造函數(shù)中,初始化游戲</p><p><b>  }</b></p><p>

54、  定義initSnakeView()初始化SnakeView類,代碼如下:</p><p>  private void initSnakeView() {</p><p>  Log.e(tag, "initSnakeView");</p><p>  //設(shè)置焦點(diǎn),由于存在 文字界面 和 游戲界面的跳轉(zhuǎn)。這個focus是不可或缺的。<

55、/p><p>  setFocusable(true);</p><p>  //取得資源中的圖片,加載到 磚塊字典 中。 </p><p>  Resources r = this.getContext().getResources();</p><p>  resetTiles(4);</p><p>  loadTi

56、le(RED_STAR, r.getDrawable(R.drawable.redstar));</p><p>  loadTile(YELLOW_STAR, r.getDrawable(R.drawable.yellowstar));</p><p>  loadTile(GREEN_STAR, r.getDrawable(R.drawable.greenstar));</p&g

57、t;<p><b>  }</b></p><p>  此外還定義了updateWalls()、updateApples()、updateSnake()繪制墻、果子、蛇,以及更新畫面函數(shù)、保存位置坐標(biāo)函數(shù)等,具體代碼請?jiān)斠娔夸洝?lt;/p><p><b>  4.3界面設(shè)計(jì)</b></p><p>  界面設(shè)計(jì)

58、包括游戲主界面(Snake)、游戲說明界面、游戲界面的設(shè)計(jì)。界面的設(shè)計(jì)采用的是xml文檔形式,在xml文檔中規(guī)劃好界面布局布局后,分別在java文件中聲明。</p><p>  主界面設(shè)計(jì):主界面包括一個 TextView及布局設(shè)定,其main.xml文檔如下</p><p>  <?xml version="1.0" encoding="utf-8&q

59、uot;?></p><p>  <!-- Copyright (C) 2007 The Android Open Source Project</p><p>  Licensed under the Apache License, Version 2.0 (the "License");</p><p>  you may not

60、 use this file except in compliance with the License.</p><p>  You may obtain a copy of the License at</p><p>  http://www.apache.org/licenses/LICENSE-2.0</p><p>  Unless required b

61、y applicable law or agreed to in writing, software</p><p>  distributed under the License is distributed on an "AS IS" BASIS,</p><p>  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, eit

62、her express or implied.</p><p>  See the License for the specific language governing permissions and</p><p>  limitations under the License.</p><p><b>  --></b></p

63、><p>  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"</p><p>  android:layout_width="match_parent"</p><p>  android:layout_height="

64、match_parent"></p><p>  <com.example.android.snake.SnakeView</p><p>  android:id="@+id/snake"</p><p>  android:layout_width="match_parent"</p>

65、<p>  android:layout_height="match_parent"</p><p>  tileSize="24"</p><p><b>  /></b></p><p>  <RelativeLayout</p><p>  androi

66、d:layout_width="match_parent"</p><p>  android:layout_height="match_parent" ></p><p><b>  <TextView</b></p><p>  android:id="@+id/text&quo

67、t;</p><p>  android:text="@string/snake_layout_text_text"</p><p>  android:visibility="visible"</p><p>  android:layout_width="wrap_content"</p>

68、<p>  android:layout_height="wrap_content"</p><p>  android:layout_centerInParent="true"</p><p>  android:gravity="center_horizontal"</p><p>  an

69、droid:textColor="#ff8888ff"</p><p>  android:textSize="24sp"/></p><p>  </RelativeLayout></p><p>  </FrameLayout></p><p>  至此,全部界面設(shè)計(jì)完

70、成,但還有最重要的一步,就是將所有的Activity注冊到AndroidManifest.xml中。AndroidManifest.xml文檔如下:</p><p>  <?xml version="1.0" encoding="utf-8"?></p><p>  <!-- Copyright (C) 2007 The Andro

71、id Open Source Project</p><p>  Licensed under the Apache License, Version 2.0 (the "License");</p><p>  you may not use this file except in compliance with the License.</p><

72、;p>  You may obtain a copy of the License at</p><p>  http://www.apache.org/licenses/LICENSE-2.0</p><p>  Unless required by applicable law or agreed to in writing, software</p><p&

73、gt;  distributed under the License is distributed on an "AS IS" BASIS,</p><p>  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</p><p>  See the License for th

74、e specific language governing permissions and</p><p>  limitations under the License.</p><p><b>  --></b></p><p>  <!-- Declare the contents of this Android applic

75、ation. The namespace</p><p>  attribute brings in the Android platform namespace, and the package</p><p>  supplies a unique name for the application. When writing your</p><p>  o

76、wn application, the package name must be changed from "com.example.*"</p><p>  to come from a domain that you own or have control over. --></p><p>  <manifest xmlns:android="

77、;http://schemas.android.com/apk/res/android"</p><p>  package="com.example.android.snake"></p><p>  <application android:label="Snake on a Phone"></p>&l

78、t;p>  <activity android:name="Snake"</p><p>  android:theme="@android:style/Theme.NoTitleBar"</p><p>  android:screenOrientation="portrait"</p><p&g

79、t;  android:configChanges="keyboardHidden|orientation"></p><p>  <intent-filter></p><p>  <action android:name="android.intent.action.MAIN" /></p><p

80、>  <category android:name="android.intent.category.LAUNCHER" /></p><p>  </intent-filter></p><p>  </activity></p><p>  </application></p>

81、<p>  </manifest></p><p><b>  4.4項(xiàng)目演示</b></p><p><b>  游戲前畫面</b></p><p><b>  游戲中界面</b></p><p><b>  游戲結(jié)束時畫面</b&g

82、t;</p><p><b>  第五章 測試</b></p><p><b>  5.1游戲功能測試</b></p><p>  經(jīng)過在模擬器上的測試,本軟件能書案例實(shí)現(xiàn)其功能,達(dá)到了小蛇在屏幕上的移動,小蛇吃蘋果,蘋果隨機(jī)出現(xiàn)的功能,當(dāng)小蛇頭尾相撞或與墻相撞時,游戲結(jié)束.這些均在測試中得到驗(yàn)證。</p>

83、<p><b>  5.2游戲控制測試</b></p><p>  在測試過程中,也著重對游戲的控制功能進(jìn)行了測試,游戲是通過方向鍵的控制來實(shí)現(xiàn)的,在游戲剛開始的階段,上下左右四個方位的控制都很成功,但隨著蛇移動的速度越來越快,按鍵的控制反應(yīng)會出現(xiàn)滯后,通過分析,可能是由于蛇的運(yùn)動速度超過了鍵盤的反應(yīng)速度造成的,與軟件無關(guān),所以得出結(jié)論,游戲的控制設(shè)計(jì)也是成功的。</p>

84、;<p><b>  5.3游戲界面測試</b></p><p>  游戲運(yùn)行之后,就是在畫面中出現(xiàn)蛇和兩個蘋果的初始位置,并且是靜止的,并且在畫面上還會出現(xiàn)操作提示“按上鍵開始游戲”,游戲運(yùn)行過程中,除了蛇的運(yùn)動之外,界面大題沒有變化,分別由綠色矩形塊的圍墻,黃色矩形塊的蘋果和紅色矩形塊的蛇身(蛇頭為黃色)組成。游戲結(jié)束后,界面處于暫停狀態(tài),提示游戲結(jié)束并顯示分?jǐn)?shù)。</

85、p><p><b>  5.4測試結(jié)果</b></p><p>  通過對游戲軟件的功能測試,控制測試和界面測試。詳細(xì)說是對游戲的開始新游戲、 退出、 查看最高成績、 計(jì)時、 統(tǒng)計(jì)分?jǐn)?shù)等功能進(jìn)行測試, 并測試程序的鼠標(biāo)點(diǎn)擊事件、菜單的響應(yīng)及按鍵響應(yīng)等事件,結(jié)論是該游戲軟件能正確實(shí)現(xiàn)功能要求。要求輸出的效果與預(yù)期的輸出效果完全 一致。</p><p>

86、;<b>  結(jié)論</b></p><p>  回顧這個設(shè)計(jì)過程,我學(xué)到了許多書本上沒有學(xué)到的知識。通過這次自己制作的軟件,豐富了自己的實(shí)踐技能,擴(kuò)展了本專業(yè)的知識面,使我受益非淺,同時 也體驗(yàn)到了搞軟件開發(fā)的困難度。 在這次設(shè)計(jì)的同時,我又從中學(xué)到了許多東西。 但由于我對這樣的軟件開發(fā)還只是一個開始,了解的不多,這其中或許還有很多 的不足,有些模塊做得不是很好,界面的設(shè)計(jì)及整體的布局還比較

87、簡單,沒有突 出特色出來,這也可能是我這個系統(tǒng)的不足之處,在這里也懇請老師能夠?qū)?我的作品指明不足并加以改正。 </p><p>  我所做的設(shè)計(jì)功能并不算強(qiáng)大,但是這些結(jié)合了本學(xué)期所學(xué)習(xí)的內(nèi)容,主要是界面的設(shè)計(jì),并改寫了兩個類。通過自己寫代碼,我更進(jìn)一步清楚了android工程的框架及設(shè)計(jì)的步驟,以及每個文件的作用,稍微掌握了一些View類的方法,同時也學(xué)到了更多的界面設(shè)計(jì)的方法,比如如何實(shí)現(xiàn)一個TextVie

88、w里顯示多行數(shù)據(jù),如何自定義視圖等。</p><p>  但同時我也遇到了問題,比如在編寫控制模塊代碼的時候,如何何時按鍵監(jiān)聽這一塊讓我很頭疼,另外在設(shè)計(jì)界面整體布局的時候,如何編寫XML文件,這也是很大的問題后來通過查閱資料,對這些問題都做到了很好的解決</p><p>  總之,在這一次的課程設(shè)計(jì)過程中,我查閱了大量的資料,對 Java 有了一 點(diǎn)初步的認(rèn)識,對于軟件工程這些輔助性的教

89、材也鞏固了不少,為我這次的課設(shè) 提供了很大的幫助,鍛煉了我的能力讓我掌握了一門新的程序設(shè)計(jì)語言:java 語言,系統(tǒng)地學(xué)習(xí)了數(shù)據(jù)庫方面的知識,并更進(jìn)一步提高了我在程序設(shè)計(jì)、調(diào)試 方面的技巧。更重要的是,它還讓我認(rèn)識到了自己的不足,在編程方面,我僅僅 是剛剛?cè)腴T而已,以后的道路任重道遠(yuǎn),需要我不斷的豐富自己、充實(shí)自己,這 樣才能在程序設(shè)計(jì)方面有所收獲。</p><p>  參考文獻(xiàn) [1] 李偉、王國輝 an

溫馨提示

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

評論

0/150

提交評論