畢業(yè)論文--基于 android 平臺(tái)的仿真水族館的實(shí)現(xiàn)_第1頁(yè)
已閱讀1頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  畢 業(yè) 設(shè) 計(jì)</b></p><p>  題 目:基于 Android 平臺(tái)的仿</p><p>  真水族館的實(shí)現(xiàn) </p><p>  所在專(zhuān)業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) </p><p><b>  摘 要</b><

2、;/p><p>  在科技日益發(fā)展的今天,社會(huì)競(jìng)爭(zhēng)越來(lái)越激烈,3G時(shí)代已經(jīng)慢慢融入了我們的日常生活。手機(jī)已經(jīng)成為人們?nèi)粘I钪胁豢扇鄙俚囊徊糠?,尤其是在電子產(chǎn)品日新月異的今天,我們?cè)谄綍r(shí)隨處可見(jiàn)的電子產(chǎn)品中,手機(jī)無(wú)疑是一個(gè)最大的用戶集,而各大廠商智能手機(jī)則依舊是電子商場(chǎng)的一個(gè)耀眼明星。</p><p>  據(jù)了解,現(xiàn)在越來(lái)越多的人們喜歡用手機(jī)玩游戲了,游戲不僅可以梳理心情,也可以作為娛樂(lè)的項(xiàng)目

3、,各種游戲也已進(jìn)入到手機(jī)的平臺(tái)上,用戶越來(lái)越需要更加個(gè)性化,優(yōu)質(zhì)化的游戲,現(xiàn)在的手機(jī)系統(tǒng)有大量的游戲。現(xiàn)在的手機(jī)游戲有很多很多比如IPhone開(kāi)發(fā)了一款水果忍者下載量對(duì)于中國(guó)來(lái)說(shuō)已經(jīng)是全球第二,然而今夏最熱的安卓版手機(jī)游戲《捕魚(yú)之海底撈》,憑借其優(yōu)秀的游戲品質(zhì)和火爆的下載人氣,就在7月1日首發(fā)安卓市場(chǎng)的前三天,其下載量便突破了百萬(wàn)大關(guān),一直穩(wěn)居當(dāng)月新游戲下載榜首!而自從1.04版“美人魚(yú)來(lái)襲”發(fā)布以來(lái),游戲中流暢的運(yùn)行速度、簡(jiǎn)單的操作、

4、華麗的畫(huà)面、神秘的美人魚(yú),以及豐富的魚(yú)種等精彩亮點(diǎn),更是贏得了眾多媒體與玩家的一致好評(píng)。</p><p>  所以本課題就利用了現(xiàn)在游戲的火熱這一點(diǎn)為基于Android手機(jī)平臺(tái)下的仿真水族館游戲進(jìn)行設(shè)計(jì)開(kāi)發(fā)。在Android SDK2.1環(huán)境下,運(yùn)用Eclipse,PhotoShop等相關(guān)工具進(jìn)行開(kāi)發(fā)。同時(shí)解決了游戲的發(fā)炮,魚(yú)的游動(dòng),關(guān)卡,背景音樂(lè)等眾多技術(shù)難題,從而深化對(duì)Java 手機(jī)應(yīng)用開(kāi)發(fā)技術(shù)和移動(dòng)軟件平臺(tái)

5、開(kāi)發(fā)技術(shù)的掌握。</p><p>  關(guān)鍵詞:Java、Android、PhotoShop、仿真水族館游戲</p><p><b>  Abstract</b></p><p>  Increasing development in technology today, more competitive society, 3G era is sl

6、owly integrated into our daily lives. Mobile phones have become an indispensable everyday part of life, especially in today's rapidly changing electronic products, we usually ubiquitous electronic products, mobile ph

7、one is undoubtedly one of the largest set of users, and smart phones is still the major manufacturers of electronic mall a dazzling star. It is understood that more and more people prefer to use mo</p><p&

8、gt;  Keywords: Java, Android, PhotoShop, aquarium simulation game</p><p><b>  目 錄</b></p><p><b>  摘 要2</b></p><p>  Abstract3</p><p><b&g

9、t;  第1章 緒論6</b></p><p>  1.1 Android概況6</p><p>  1.1 選題意義6</p><p>  第2章 可行性分析7</p><p>  2.1 開(kāi)發(fā)前景7</p><p>  2.2市場(chǎng)可行性7</p><p>  2.3技

10、術(shù)可行性7</p><p>  第3章 系統(tǒng)分析8</p><p>  3.1功能需求用例圖8</p><p><b>  3.2頁(yè)面介紹8</b></p><p>  3.3系統(tǒng)流程圖8</p><p>  3.4運(yùn)行環(huán)境需求8</p><p>  第4章 系

11、統(tǒng)功能詳細(xì)設(shè)計(jì)9</p><p>  4.1 關(guān)鍵性功能點(diǎn)實(shí)現(xiàn)9</p><p>  4.1.1汽泡自定義組件9</p><p>  4.1.2 自定義按鈕9</p><p>  4.1.3 金幣動(dòng)畫(huà)效果9</p><p>  4.1.4 游戲音效9</p><p>  第5章 系統(tǒng)

12、測(cè)試10</p><p>  5.1 測(cè)試環(huán)境10</p><p>  5.2 測(cè)試用例10</p><p>  5.2.1 白盒測(cè)試10</p><p>  5.2.2 黑盒測(cè)試12</p><p>  5.3 測(cè)試結(jié)果13</p><p><b>  第6章 總結(jié)13

13、</b></p><p><b>  致謝14</b></p><p><b>  參考文獻(xiàn)15</b></p><p><b>  第1章 緒論</b></p><p>  1.1 Android概況</p><p><b>

14、  1.1 選題意義</b></p><p><b>  第2章 可行性分析</b></p><p><b>  2.1 開(kāi)發(fā)前景</b></p><p>  隨著新技術(shù)的不斷開(kāi)發(fā)與應(yīng)用,近年來(lái)Java技術(shù)發(fā)展十分迅速,一個(gè)以Java應(yīng)用為主的新技術(shù)革命浪潮正在蓬勃興起。而基于Android的軟件開(kāi)發(fā)是一個(gè)前景

15、很大的技術(shù),然而市面上基于Android的游戲雖然有不少種,各種的手機(jī)游戲各有千秋,但是由于游戲類(lèi)型繁多,開(kāi)發(fā)思路不同,加之Google開(kāi)放的源代碼,Android的SDK的版本不同,</p><p><b>  2.2市場(chǎng)可行性</b></p><p><b>  2.3技術(shù)可行性</b></p><p><b&g

16、t;  第3章 系統(tǒng)分析</b></p><p>  3.1功能需求用例圖</p><p>  功能需求(用例分析)</p><p>  1.1主菜單界面的基本功能需求;</p><p><b>  圖1海底撈</b></p><p><b>  用例名稱(chēng):開(kāi)始游戲</

17、b></p><p>  目標(biāo):使得用戶可以進(jìn)入游戲界面(支持保留上一次游戲進(jìn)度,)</p><p>  用例名稱(chēng):教學(xué)幫助 </p><p>  目標(biāo):使得用戶可以了解游戲規(guī)則</p><p><b>  用例名稱(chēng): 設(shè)置</b></p><p>  目標(biāo):使得用戶可以 對(duì)游戲進(jìn)行一些設(shè)置

18、</p><p> ?。ㄈ纾罕尘耙魳?lè),音效,特效,和返回主菜單)</p><p><b>  用例名稱(chēng):排名</b></p><p>  目標(biāo):記錄游戲成績(jī)并進(jìn)行排名 </p><p>  1.2游戲界面的基本功能需求</p><p>  圖2游戲界面的基本功能需求圖</p><

19、;p>  1.用例名稱(chēng):點(diǎn)擊任意點(diǎn)</p><p>  目標(biāo):點(diǎn)擊屏幕的任意一點(diǎn),就可以發(fā)射漁網(wǎng)捕魚(yú)點(diǎn)擊成功后會(huì)看到屏幕上出現(xiàn)波紋,并發(fā)炮彈,灑網(wǎng),漁網(wǎng)范圍內(nèi)的魚(yú)都有幾率被捕捉。</p><p><b>  2.用例名稱(chēng):漁炮</b></p><p>  目標(biāo):漁炮分七種不同等級(jí),分別對(duì)應(yīng)七種不同的漁網(wǎng)。分值越高的漁炮捕捉魚(yú)的幾率越高。&

20、lt;/p><p>  3.用例名稱(chēng):點(diǎn)擊+、-號(hào)</p><p>  目標(biāo):1級(jí)漁網(wǎng)消耗1個(gè)金幣,以此類(lèi)推,7級(jí)漁網(wǎng)消耗7個(gè)金幣,點(diǎn)擊底部的漁炮和“+”“-”號(hào)可切換不同的漁網(wǎng)。</p><p><b>  4.用例名稱(chēng):魚(yú)群</b></p><p>  目標(biāo):魚(yú)群中不同種類(lèi)的魚(yú)獲得不同數(shù)量金幣,魚(yú)的等級(jí)越高,捕中率越低,

21、能獲得的金幣數(shù)越高。</p><p>  5.用例名稱(chēng):計(jì)時(shí)器 </p><p>  目標(biāo):每60秒會(huì)自動(dòng)獲得5個(gè)金幣,即便關(guān)閉了游戲也會(huì)自動(dòng)增長(zhǎng),但關(guān)閉了游戲之后自動(dòng)增長(zhǎng)速度變慢,而且最高限額增加到200個(gè)金幣 </p><p>  6.用例名稱(chēng):當(dāng)前金幣數(shù) </p><p>  目標(biāo):獲得自動(dòng)增加的金幣購(gòu)買(mǎi)或用活動(dòng)碼兌換的金幣都會(huì)在此顯示

22、 </p><p>  7.用例名稱(chēng): 購(gòu)買(mǎi)金幣、活動(dòng)號(hào)碼兌換</p><p>  目標(biāo):除了捕魚(yú)和自動(dòng)獲得的金幣外,還可以通過(guò)購(gòu)買(mǎi)“金幣”和用“活動(dòng)號(hào)碼”換取的方式獲得金幣。</p><p><b>  8.用例名稱(chēng):暫停</b></p><p>  目標(biāo):暫停游戲,可返回主菜單,設(shè)置音樂(lè)和音效</p>

23、<p>  9.用例名稱(chēng):等級(jí)和經(jīng)驗(yàn)條</p><p>  目標(biāo):等級(jí)和經(jīng)驗(yàn)條積滿時(shí)可一次灑多個(gè)網(wǎng)。</p><p>  10.用例名稱(chēng):激光蓄力槽</p><p>  目標(biāo):激光蓄力槽積滿時(shí)可發(fā)出光束,可捕中任何分值的魚(yú)。</p><p>  1.3教學(xué)幫助界面的基本功能需求</p><p>  圖2教學(xué)幫

24、助界面的基本功能需求圖</p><p>  用例名稱(chēng):游戲規(guī)則 </p><p>  目標(biāo):顯示游戲規(guī)則,幫助玩家更快的了解游戲</p><p><b>  用例名稱(chēng):返回</b></p><p><b>  目標(biāo):返回主菜單</b></p><p>  1.3設(shè)置界面的基本

25、功能需求</p><p>  圖3設(shè)置界面的基本功能需求圖</p><p>  用例名稱(chēng):背景音樂(lè) </p><p>  目標(biāo):設(shè)置有無(wú)背景音樂(lè) </p><p><b>  用例名稱(chēng):音效 </b></p><p><b>  目標(biāo):設(shè)置有無(wú)音效</b></p>

26、<p><b>  用例名稱(chēng):特效</b></p><p><b>  目標(biāo):設(shè)置有無(wú)音效</b></p><p><b>  用例名稱(chēng):產(chǎn)菜單</b></p><p><b>  目標(biāo):返回主菜單</b></p><p><b>

27、  3.2頁(yè)面介紹</b></p><p><b>  圖1.1.1主菜單</b></p><p><b>  圖1.1.2</b></p><p><b>  圖1.1.3</b></p><p><b>  圖1.1.4</b></p

28、><p><b>  3.3系統(tǒng)流程圖</b></p><p><b>  3.4運(yùn)行環(huán)境需求</b></p><p>  手機(jī)平臺(tái):HTC Wildfire S A510e(G13)</p><p>  手機(jī)系統(tǒng):Android 2.1</p><p>  CPU頻率:600M

29、Hz</p><p>  機(jī)身內(nèi)存:512MB ROM+786MB RAM</p><p><b>  儲(chǔ)存卡:2G</b></p><p>  第4章 系統(tǒng)功能詳細(xì)設(shè)計(jì) </p><p>  4.1 關(guān)鍵性功能點(diǎn)實(shí)現(xiàn)</p><p>  4.1.1汽泡自定義組件</p><p

30、>  在手面游戲開(kāi)始時(shí),菜單欄兩側(cè)會(huì)產(chǎn)生一個(gè)水溝上升的效果。它是一自定義組件。</p><p><b>  實(shí)例圖</b></p><p><b>  需要解決的技術(shù)問(wèn)題</b></p><p>  如何創(chuàng)建自定義組件。</p><p><b>  如何獲得幀圖處。</b>

31、;</p><p><b>  如何始組件動(dòng)起來(lái)。</b></p><p>  要解決以上問(wèn)題需要參考的文獻(xiàn)。</p><p><b>  自定義組件的定義</b></p><p><b>  自定義組件的使用</b></p><p><b>

32、  三.實(shí)現(xiàn)步驟</b></p><p>  第一步:要?jiǎng)?chuàng)建自定義組件。需用到BubbleView組件。在Xml中的代碼。</p><p>  Width:控件寬度</p><p>  Height:控件高度</p><p>  marginLeflt:離屏幕左邊距離</p><p>  start_x:屏

33、幕X軸坐標(biāo)</p><p>  start_y:屏幕Y軸坐標(biāo)</p><p>  top:與頂部的距離</p><p>  <com.che.BubbleView</p><p>  xmlns:app="http://schemas.android.com/apk/res/com.che"</p>&

34、lt;p>  android:layout_width="50dp" </p><p>  android:layout_height="wrap_content" </p><p>  android:layout_marginLeft="100dp"</p><p>  app:bitmap=&q

35、uot;@drawable/bubble"</p><p>  app:start_x="20"</p><p>  app:start_y="250"</p><p>  app:top="70"</p><p><b>  /></b><

36、;/p><p>  由于只實(shí)現(xiàn)氣泡的上升,不需要繪制和刷新其它的組件,為了減少代碼不必要的冗余,所以就氣泡上升這個(gè)動(dòng)畫(huà)而言,只需創(chuàng)建一個(gè)自定義組件</p><p>  1.創(chuàng)建自定義組件,獲得其氣泡圖片的資源和長(zhǎng),寬,橫縱坐標(biāo)等基本屬性。</p><p><b>  // 獲得組件屬性</b></p><p>  Typed

37、Array typdeArray = context.obtainStyledAttributes(attrs,</p><p>  R.styleable.BubbleView);</p><p>  int bitmap = typdeArray.getResourceId(R.styleable.BubbleView_bitmap, 0);</p><p> 

38、 CharSequence start_x = typdeArray</p><p>  .getText(R.styleable.BubbleView_start_x);</p><p>  CharSequence start_y = typdeArray</p><p>  .getText(R.styleable.BubbleView_start_y);&l

39、t;/p><p>  CharSequence top = typdeArray.getText(R.styleable.BubbleView_top); </p><p>  3.為了實(shí)現(xiàn)動(dòng)畫(huà)的效果,而要進(jìn)行屏幕的刷新,每0.05秒,刷新一次屏幕就可以使圖片產(chǎn)生動(dòng)態(tài)效果。為了要實(shí)現(xiàn)屏幕的不斷刷新,就要用過(guò)線程來(lái)實(shí)現(xiàn)</p><p><b>  線程創(chuàng)建與調(diào)用

40、:</b></p><p>  new ReFresh().start();</p><p><b>  線程</b></p><p>  class ReFresh extends Thread {</p><p><b>  @Override</b></p><

41、p>  public void run() {</p><p>  while (true) {</p><p><b>  try {</b></p><p>  Thread.sleep(50);</p><p>  } catch (InterruptedException e) {</p>&

42、lt;p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  // 刷屏</b></p><p>  postInvalidate();</p><p><b>  }</b></p><p

43、><b>  }</b></p><p><b>  }</b></p><p>  因?yàn)樵趯?shí)現(xiàn)氣泡上升過(guò)程中,多次反復(fù)使用有關(guān)氣泡的屬性和運(yùn)算方法。為了減少代碼的冗余,所以要將有關(guān)氣泡的所有屬性抽象成一個(gè)類(lèi),以便于創(chuàng)建該對(duì)象,方體于調(diào)用和使用。</p><p>  class Bubble {</p>

44、<p><b>  // 起始坐標(biāo)</b></p><p>  private int x = 0;</p><p>  private int y = 0;</p><p><b>  // 氣泡的上限</b></p><p>  private int top = 0;</p&

45、gt;<p><b>  // 氣泡的大小</b></p><p>  private float size = 5;</p><p><b>  // 位移的度數(shù)</b></p><p>  private int degress = 0;</p><p><b>  //

46、 位移量</b></p><p>  private float offset = 0;</p><p>  private Bitmap bubble;</p><p>  public Bubble(Bitmap bubble, int x, int y, int top) {</p><p>  this.bubble =

47、bubble;</p><p>  this.x = x;</p><p>  this.y = y;</p><p>  this.top = top;</p><p><b>  }</b></p><p><b>  }</b></p><p>

48、  在class Bubble{}中創(chuàng)建drawBubble()方法,由于每畫(huà)一個(gè)氣泡都要重新計(jì)算一次坐標(biāo)并且執(zhí)行一次氣泡的重繪,所以我們將坐標(biāo)的計(jì)算和氣泡重繪的算法封裝成一個(gè)方法。減少代碼量,便于程序的重構(gòu)與分析。</p><p><b>  代碼解析:</b></p><p>  public void drawBubble(Canvas canvas, Pain

49、t paint) {</p><p>  // 更新氣泡的大小</p><p>  size += 0.03;</p><p>  // 更新 y 坐標(biāo)</p><p><b>  y -= 1;</b></p><p><b>  // 更新位移度數(shù)</b></p&g

50、t;<p>  degress += 30;</p><p><b>  // 更新位移</b></p><p>  offset += 0.02;</p><p><b>  int nowX;</b></p><p>  if (degress > 90 || degress

51、 < 270) {</p><p>  // 更新 x 坐標(biāo)</p><p>  nowX = (int) ((float) x + offset</p><p>  * Math.sin(degress * Math.PI / 180));</p><p><b>  } else {</b></p>

52、<p>  // 更新 x 坐標(biāo)</p><p>  nowX = (int) ((float) x - offset</p><p>  * Math.sin(degress * Math.PI / 180));</p><p><b>  }</b></p><p><b>  // 類(lèi)型轉(zhuǎn)換

53、</b></p><p>  int size = (int) this.size;</p><p><b>  // 畫(huà)氣泡</b></p><p>  canvas.drawBitmap(bubble,</p><p>  //從0,0開(kāi)始獲取圖片的長(zhǎng),圖片的寬</p><p> 

54、 new Rect(0, 0, bubble.getWidth(), bubble.getHeight()),</p><p>  //在從nowX, y開(kāi)始畫(huà),畫(huà)nowX + size, y + size參數(shù)變么大</p><p>  new Rect(nowX, y, nowX + size, y + size), paint);</p><p>  if (d

55、egress > 360) {</p><p>  degress = 0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.執(zhí)行onDraw()方法。</p><p>  該方法主要負(fù)責(zé)游戲界面的繪制工作。刷帖線

56、程會(huì)定時(shí)調(diào)用該方法進(jìn)行屏幕刷新。</p><p><b>  該方法的分析:</b></p><p>  運(yùn)用判斷語(yǔ)句來(lái)實(shí)現(xiàn)每10幀向集合中添加一個(gè)氣泡,用循環(huán)語(yǔ)句來(lái)獲得集合中的每一個(gè)氣泡,超過(guò)長(zhǎng)度時(shí)移除。并創(chuàng)建其對(duì)象,用自義bubble.drawBubble()方法,來(lái)畫(huà)氣泡。</p><p>  protected void onDraw(

57、Canvas canvas) {</p><p>  super.onDraw(canvas);</p><p><b>  // 累加當(dāng)前幀數(shù)</b></p><p><b>  fream++;</b></p><p>  // 每10幀增加一個(gè)氣泡</p><p>  

58、if ((fream % 10) == 1) {</p><p><b>  // 增加一個(gè)氣泡</b></p><p>  list.add(new Bubble(bubble, start_x, start_y, top));</p><p><b>  }</b></p><p>  // 每

59、15幀增加一個(gè)氣泡</p><p>  if ((fream % 15) == 1) {</p><p><b>  // 增加一個(gè)氣泡</b></p><p>  list.add(new Bubble(bubble, start_x, start_y, top));</p><p><b>  }</

60、b></p><p><b>  // 畫(huà)出所有氣泡</b></p><p>  for (int i = 0; i < list.size(); i++) {</p><p><b>  // 得到氣泡對(duì)象</b></p><p>  Bubble bubble = list.get(

61、i);</p><p><b>  // 畫(huà)出氣泡</b></p><p>  bubble.drawBubble(canvas, paint);</p><p>  // 如果氣泡到達(dá)上限</p><p>  if (bubble.death()) {</p><p>  // 從氣泡集合中移出

62、此對(duì)象</p><p>  list.remove(i);</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.1.2 自定義按鈕</p><p><b>  實(shí)例圖</b></p>&l

63、t;p><b>  要解決的技術(shù)問(wèn)題</b></p><p><b>  獲取資源</b></p><p><b>  創(chuàng)建自定義按鈕</b></p><p><b>  給自定義按鈕加事件</b></p><p>  三.整體的功能的實(shí)現(xiàn)</

64、p><p><b>  1.功能點(diǎn)概述</b></p><p>  根據(jù)自已的需要繪制出想要的組件,并添加相應(yīng)的事件,使其獲得相應(yīng)的功能。</p><p><b>  2.功能實(shí)現(xiàn)步驟</b></p><p>  4.1.3 金幣動(dòng)畫(huà)效果</p><p>  二維游戲海底撈中,玩

65、家在每捕到一種魚(yú)時(shí),屏幕就會(huì)顯示該魚(yú)應(yīng)得的分值。分值就會(huì)產(chǎn)生一閃爍的效果。</p><p><b>  實(shí)例圖如:</b></p><p><b>  需要解決的技術(shù)問(wèn)題</b></p><p>  1.如何獲得分值圖片資源。</p><p>  2. 如何讓水波圖片產(chǎn)生動(dòng)態(tài)效果。</p>

66、;<p>  二.解決上述技術(shù)問(wèn)題的需要的一些相關(guān)文獻(xiàn)資料</p><p>  1. 從資源中獲取位圖</p><p>  可以使用BitmapDrawable或者BitmapFactory來(lái)獲取資源中的位圖。 </p><p>  當(dāng)然,首先需要獲取資源: </p><p>  Resources res=getResourc

67、es(); </p><p>  使用BitmapDrawable獲取位圖 </p><p>  使用BitmapDrawable (InputStream is)構(gòu)造一個(gè)BitmapDrawable; </p><p>  使用BitmapDrawable類(lèi)的getBitmap()獲取得到位圖;</p><p>  2.實(shí)現(xiàn)圖片的動(dòng)態(tài)效果&

68、lt;/p><p>  主要通過(guò)自定義View來(lái)開(kāi)發(fā)程序中的動(dòng)太效果。其主要的工作包括</p><p>  繪制屏幕:由于使用自定義Veiw,程序的畫(huà)面需要從頭到尾進(jìn)行設(shè)計(jì)。這些工作都需要放在繪制屏幕模塊中進(jìn)行。</p><p>  刷新屏幕:在程序的運(yùn)行中,如果后臺(tái)數(shù)據(jù)發(fā)生了變化,需要開(kāi)發(fā)人員自己刷新屏幕以將最新的數(shù)據(jù)顯示給用戶。</p><p&g

69、t;  只要按照一定的時(shí)間刷新屏幕的圖片資源,顯示出來(lái)就形成了動(dòng)畫(huà)效果,而時(shí)時(shí)刷新屏幕主要是用線程來(lái)時(shí)現(xiàn)的。</p><p>  線程主要功能是修改View類(lèi)繪制的數(shù)據(jù),這樣就實(shí)現(xiàn)了水波的動(dòng)畫(huà)播放。</p><p><b>  線程的格式:</b></p><p>  class RippleThread extends Thread {<

70、;/p><p>  public void run(){</p><p>  super.run();</p><p><b>  }</b></p><p><b>  }</b></p><p>  將一個(gè)位圖按照需求重畫(huà)一遍,畫(huà)后的位圖就是我們需要的了,與位圖的顯示幾乎一樣

71、:drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) </p><p><b>  三.整體功能的實(shí)現(xiàn)</b></p><p>  1.整體功能的概述分析:</p><p>  其實(shí)本功能的實(shí)現(xiàn)就是將分值的序列幀圖片,在一個(gè)定點(diǎn)坐標(biāo)上的播放。</p><p&

72、gt;  首先就要獲得各分值動(dòng)畫(huà)的序列幀圖片在一定點(diǎn)上通過(guò)集合下標(biāo)的變換播放水波圖片序列幀。再通過(guò)線程刷新出來(lái)。</p><p><b>  1實(shí)現(xiàn)步驟</b></p><p><b>  第一步:</b></p><p>  抽取分值類(lèi),在類(lèi)中分值圖片資源的獲取。</p><p>  由于,在編程

73、過(guò)程中,由于反復(fù)使用圖片資源。所以將圖片資源提取出來(lái)封裝成一個(gè)類(lèi)。以便運(yùn)算時(shí)的調(diào)用,減少資源的浪費(fèi)。</p><p>  使用BitmapFactory類(lèi)decodeStream(InputStream is)解碼位圖資源,獲取位圖。</p><p>  用BitmapFactory.decodeResource()方法來(lái)獲得圖片的ID,路徑。</p><p>  

74、建立一個(gè)集合。用add()方法將圖片的坐標(biāo)添加進(jìn)去。</p><p>  設(shè)置各分值的get方法來(lái),便于其它類(lèi)調(diào)用其資源。</p><p>  第二步:分值圖片產(chǎn)生動(dòng)態(tài)效果</p><p>  上面以經(jīng)獲得圖片的序列幀。只要按照一定的時(shí)間刷新屏幕的圖片資源,顯示出來(lái)就形成了動(dòng)畫(huà)效果,而時(shí)時(shí)刷新屏幕,重復(fù)調(diào)用OnDraw()方法。主要是用線程來(lái)時(shí)現(xiàn)的。</p&g

75、t;<p>  線程主要功能是修改View類(lèi)OnDraw()方法中繪制的數(shù)據(jù),這樣就實(shí)現(xiàn)了分值的動(dòng)畫(huà)播放。</p><p>  View類(lèi)中的OnDraw()方法來(lái)主要負(fù)責(zé)界面的繪制工作,前所編的程序最后都是通過(guò)訪方法最后實(shí)現(xiàn)在屏幕上的。</p><p><b>  /**</b></p><p><b>  * 畫(huà)筆類(lèi)

76、</b></p><p><b>  */</b></p><p><b>  @Override</b></p><p>  protected void onDraw(Canvas canvas) {</p><p>  super.onDraw(canvas);</p>

77、<p>  // 背景顏色--白色</p><p>  canvas.drawColor(Color.WHITE);</p><p>  point.drawPoint(canvas, paint);</p><p><b>  }</b></p><p>  上段代碼中的point.drawPoint(c

78、anvas, paint)是類(lèi)Point{}中的一個(gè)方法,通過(guò)對(duì)象point來(lái)調(diào)用。</p><p>  第四步:類(lèi)Point{}是我們自己創(chuàng)建的。因?yàn)閷⒁粋€(gè)位圖按照需求重畫(huà)一遍,畫(huà)后的位圖就是我們需要的了,用到的方法:drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)。由于每畫(huà)一幀,就重寫(xiě)一次方法。為了程序的可讀性和管理性。也為了使代碼更減潔。我

79、們就將和畫(huà)分值的和關(guān)方法單獨(dú)封裝成一個(gè)類(lèi)為:類(lèi)Point{}。</p><p>  構(gòu)造函數(shù)是負(fù)責(zé)設(shè)置定點(diǎn)坐標(biāo)的。該定點(diǎn)設(shè)定為的屏幕的中心點(diǎn)。</p><p>  drawPoint()方法:用來(lái)時(shí)實(shí)動(dòng)畫(huà)效果幀的變化。也就是通過(guò)圖片集合的下標(biāo)的變化。來(lái)實(shí)現(xiàn)一幀一幀的變化。</p><p><b>  /**</b></p><

80、;p><b>  * 設(shè)置圖片</b></p><p><b>  * </b></p><p>  * @param point</p><p>  * @param centerX</p><p>  * @param centerY</p><p><b&g

81、t;  */</b></p><p>  //構(gòu)造函數(shù)中的屏幕中心點(diǎn)坐標(biāo)(width,Hinght)</p><p>  public Point(ArrayList<Bitmap> point, int centerX, int centerY) {</p><p>  this.point = point;</p><

82、p>  // 獲得圖片的寬度、高度</p><p>  int width = point.get(0).getWidth() / 2;</p><p>  int Hinght= point.get(0).getHeight() / 2;</p><p><b>  // 獲取X坐標(biāo)</b></p><p>  

83、this.left = centerX - width;</p><p><b>  // 獲取Y坐標(biāo)</b></p><p>  this.top = centerY - height;</p><p><b>  }</b></p><p><b>  /**</b><

84、;/p><p>  * 獎(jiǎng)勵(lì)動(dòng)畫(huà)開(kāi)始、結(jié)束時(shí)間</p><p><b>  * </b></p><p>  * @param canvas</p><p>  * @param paint</p><p><b>  */</b></p><p>  /

85、/根據(jù)下標(biāo)index的變更。變換傳值圖片。</p><p>  public void drawPoint(Canvas canvas, Paint paint) {</p><p><b>  // 累加幀數(shù)</b></p><p><b>  index++;</b></p><p>  //

86、判斷幀數(shù)是否越界</p><p>  if (index > point.size() - 1) {</p><p><b>  // 返回初始值</b></p><p>  index = 0;</p><p><b>  }</b></p><p>  canvas

87、.drawBitmap(point.get(index), left, top, paint);</p><p><b>  // 累加時(shí)間</b></p><p>  nowFrame++;</p><p>  // 判斷動(dòng)畫(huà)時(shí)間是否越界</p><p>  if (nowFrame > maxFrame) {&

88、lt;/p><p><b>  // 停止動(dòng)畫(huà)</b></p><p>  alive = false;</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.1.4 游戲音效</p><

89、p>  在二維游戲海底撈中,用戶打開(kāi)游戲頁(yè)面時(shí),會(huì)有音樂(lè)播放,當(dāng)用戶在玩的過(guò)程中想要取消音樂(lè)播放效果,則可以點(diǎn)擊相應(yīng)的按鈕進(jìn)行相關(guān)設(shè)置。</p><p><b>  實(shí)例圖如:</b></p><p>  一.需要解決的技術(shù)問(wèn)題</p><p><b>  如果播放背景音樂(lè)</b></p><p&

90、gt;<b>  如果釋放資源</b></p><p><b>  如何播放音效</b></p><p>  二.解決上述技術(shù)問(wèn)題的需要的一些相關(guān)文獻(xiàn)資料</p><p><b>  1. 播放背景音樂(lè)</b></p><p>  首先,先定義一個(gè)音樂(lè)播放器</p>

91、<p>  Android中的多媒體播放由Media Player類(lèi)來(lái)進(jìn)行處理。能夠播放存儲(chǔ)在應(yīng)用程序資源、本地文件、內(nèi)容提供器或者來(lái)自網(wǎng)絡(luò)URL的流式傳輸中的媒體。</p><p>  Media Player對(duì)音頻和視頻文件以及數(shù)據(jù)流的管理是作為一個(gè)狀態(tài)機(jī)來(lái)處理的。通過(guò)狀態(tài)機(jī)的轉(zhuǎn)換可以描述如下:</p><p>  使用將要播放的媒體初始化Media Player<

92、/p><p>  使Media Player準(zhǔn)備播放</p><p><b>  開(kāi)始播放</b></p><p>  在播放完成之前暫?;蛘咄V共シ?lt;/p><p><b>  播放完成</b></p><p>  private MediaPlayer player;<

93、/p><p><b>  然后,播放背景音樂(lè)</b></p><p>  public void playMusic() {</p><p><b>  //傳送上下文</b></p><p>  player = MediaPlayer.create(musicContext, id);</p&

94、gt;<p><b>  //循環(huán)播放</b></p><p>  player.setLooping(true);</p><p><b>  //開(kāi)始播放</b></p><p>  player.start();</p><p><b>  }</b><

95、;/p><p><b>  最后,暫停播放</b></p><p>  public void pauseMusic() {</p><p>  player.pause();</p><p><b>  }</b></p><p><b>  2.釋放資源 </

96、b></p><p>  Android支持有限數(shù)量的同步Media Player對(duì)象,如果不釋放它們,將會(huì)在系統(tǒng)耗盡資源時(shí)導(dǎo)致運(yùn)行時(shí)異常</p><p>  public void destroyMusic() {</p><p>  if (player != null) {</p><p><b>  try {<

97、/b></p><p>  if (player.isPlaying()) {</p><p><b>  //停止播放</b></p><p>  player.stop();</p><p><b>  }</b></p><p><b>  } //判斷

98、異常</b></p><p>  catch (Exception e) {</p><p>  System.out.println("背景音樂(lè)釋放資源錯(cuò)誤");</p><p>  e.printStackTrace();</p><p><b>  }</b></p>

99、<p>  player.release();</p><p><b>  }</b></p><p><b>  3.播放音效</b></p><p>  public void playSound(String soundType) {</p><p>  if (isPlay ==

100、true) {</p><p>  AudioManager mgr = (AudioManager) context</p><p>  .getSystemService(Context.AUDIO_SERVICE);</p><p>  // 獲取當(dāng)前的音量值</p><p>  int streamVolume = mgr.getSt

101、reamVolume(AudioManager.STREAM_MUSIC);</p><p><b>  // 獲得資源ID</b></p><p>  int soundID = soundPoolMap.get(soundType);</p><p><b>  // 播放音效</b></p><p

102、>  soundPool.play(soundID, streamVolume, streamVolume, 0, 0, 1f);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  三.整體功能的實(shí)現(xiàn)</b></p><

103、;p><b>  實(shí)現(xiàn)步驟</b></p><p><b>  第一步:</b></p><p>  建立音樂(lè)播放器類(lèi),在這里主要實(shí)現(xiàn)背景音樂(lè)的播放,暫停以及釋放資源</p><p><b>  /**</b></p><p><b>  * 播放背景音樂(lè)<

104、;/b></p><p><b>  */</b></p><p>  public void playMusic() {</p><p>  player = MediaPlayer.create(musicContext, id);</p><p>  player.setLooping(true);</

105、p><p>  player.start();</p><p><b>  }</b></p><p><b>  /**</b></p><p><b>  * 暫停</b></p><p><b>  */</b></p>

106、;<p>  public void pauseMusic() {</p><p>  player.pause();</p><p><b>  }</b></p><p><b>  /**</b></p><p><b>  * 釋放資源</b></p

107、><p><b>  */</b></p><p>  public void destroyMusic() {</p><p>  if (player != null) {</p><p><b>  try {</b></p><p>  if (player.isPlay

108、ing()) {</p><p>  player.stop();</p><p><b>  }</b></p><p>  } catch (Exception e) {</p><p>  System.out.println("背景音樂(lè)釋放資源錯(cuò)誤");</p><p>

109、;  e.printStackTrace();</p><p><b>  }</b></p><p><b>  // 釋放資源</b></p><p>  player.release();</p><p><b>  }</b></p><p>&

110、lt;b>  }</b></p><p><b>  第二步:</b></p><p>  游戲音效類(lèi),主要實(shí)現(xiàn)音效的播放效果以及釋放資源</p><p><b>  /**</b></p><p><b>  * 播放音效</b></p>&l

111、t;p><b>  * </b></p><p>  * @param soundType</p><p><b>  */</b></p><p>  public void playSound(String soundType) {</p><p>  if (isPlay == true

112、) {</p><p>  AudioManager mgr = (AudioManager) context</p><p>  .getSystemService(Context.AUDIO_SERVICE);</p><p>  // 獲取當(dāng)前的音量值</p><p>  int streamVolume = mgr.getStream

113、Volume(AudioManager.STREAM_MUSIC);</p><p><b>  // 獲得資源ID</b></p><p>  int soundID = soundPoolMap.get(soundType);</p><p><b>  // 播放音效</b></p><p>

114、  soundPool.play(soundID, streamVolume, streamVolume, 0, 0, 1f);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /**</b></p><p><

115、b>  * 釋放資源</b></p><p><b>  */</b></p><p>  public void destroy() {</p><p>  isPlay = false;</p><p>  soundPool.release();</p><p><b

116、>  }</b></p><p><b>  第5章 系統(tǒng)測(cè)試</b></p><p><b>  5.1 測(cè)試環(huán)境</b></p><p>  手機(jī)平臺(tái):HTC Wildfire S A510e(G13)</p><p>  手機(jī)系統(tǒng):Android OS v2.1</p&

117、gt;<p>  CPU頻率:1024MHz</p><p>  機(jī)身內(nèi)存:512MB RAM</p><p><b>  儲(chǔ)存卡:4GB</b></p><p><b>  5.2 測(cè)試用例</b></p><p>  5.2.1 白盒測(cè)試</p><p> 

118、 白盒測(cè)試法的覆蓋標(biāo)準(zhǔn)有邏輯覆蓋、循環(huán)覆蓋和基本路徑測(cè)試。其中邏輯覆蓋包括語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。 </p><p>  六種覆蓋標(biāo)準(zhǔn):語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋發(fā)現(xiàn)錯(cuò)誤的能力呈由弱至強(qiáng)的變化。語(yǔ)句覆蓋每條語(yǔ)句至少執(zhí)行一次。判定覆蓋每個(gè)判定的每個(gè)分支至少執(zhí)行一次。條件覆蓋每個(gè)判定的每個(gè)條件應(yīng)取到各種可能的值。判定/條件覆蓋同時(shí)

119、滿足判定覆蓋條件覆蓋。條件組合覆蓋每個(gè)判定中各條件的每一種組合至少出現(xiàn)一次。路徑覆蓋使程序中每一條可能的路徑至少執(zhí)行一次。 </p><p>  白盒測(cè)試也稱(chēng)結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試,它是知道產(chǎn)品內(nèi)部工作過(guò)程,可通過(guò)測(cè)試來(lái)檢測(cè)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行,按照程序內(nèi)部的結(jié)構(gòu)測(cè)試程序,檢驗(yàn)程序中的每條通路是否都有能按預(yù)定要求正確工作,而不顧它的功能,白盒測(cè)試的主要方法有邏輯驅(qū)動(dòng)、基路測(cè)試等,主要用于軟

120、件驗(yàn)證。</p><p>  "白盒"法全面了解程序內(nèi)部邏輯結(jié)構(gòu)、對(duì)所有邏輯路徑進(jìn)行測(cè)試。"白盒"法是窮舉路徑測(cè)試。在使用這一方案時(shí),測(cè)試者必須檢查程序的內(nèi)部結(jié)構(gòu),從檢查程序的邏輯著手,得出測(cè)試數(shù)據(jù)。貫穿程序的獨(dú)立路徑數(shù)是天文數(shù)字。但即使每條路徑都測(cè)試了仍然可能有錯(cuò)誤。第一,窮舉路徑測(cè)試決不能查出程序違反了設(shè)計(jì)規(guī)范,即程序本身是個(gè)錯(cuò)誤的程序。第二,窮舉路徑測(cè)試不可能查出程序

121、中因遺漏路徑而出錯(cuò)。第三,窮舉路徑測(cè)試可能發(fā)現(xiàn)不了一些與數(shù)據(jù)相關(guān)的錯(cuò)誤。</p><p>  白盒測(cè)試目前主要用在具有高可靠性要求的軟件領(lǐng)域,例如:軍工軟件、航天航空軟件、工業(yè)控制軟件等等。白盒測(cè)試工具在選購(gòu)時(shí)應(yīng)當(dāng)主要是對(duì)開(kāi)發(fā)語(yǔ)言的支持、代碼覆蓋的深度、嵌入式軟件的測(cè)試、測(cè)試的可視化等。</p><p>  對(duì)開(kāi)發(fā)語(yǔ)言的支持:白盒測(cè)試工具是對(duì)源代碼進(jìn)行的測(cè)試,測(cè)試的主要內(nèi)容包括詞法分析與語(yǔ)

122、法分析、靜態(tài)錯(cuò)誤分析、動(dòng)態(tài)檢測(cè)等。但是對(duì)于不同的開(kāi)發(fā)語(yǔ)言,測(cè)試工具實(shí)現(xiàn)的方式和內(nèi)容差別是較大的。目前測(cè)試工具主要支持的開(kāi)發(fā)語(yǔ)言包括:標(biāo)準(zhǔn)C、C++、Visual C++、Java、Visual J++等。</p><p>  代碼的覆蓋深度:從覆蓋源程序語(yǔ)句的詳盡程度分析,邏輯覆蓋標(biāo)準(zhǔn)包括以下不同的覆蓋標(biāo)準(zhǔn):語(yǔ)句覆蓋、判定覆蓋、條件覆蓋、條件判定組合覆蓋、多條件覆蓋和修正判定條件覆蓋。</p>&l

123、t;p>  ·語(yǔ)句覆蓋 為了暴露程序中的錯(cuò)誤,程序中的每條語(yǔ)句至少應(yīng)該執(zhí)行一次。因此語(yǔ)句覆蓋(STatement Coverage)的含義是:選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中每條語(yǔ)句至少執(zhí)行一次。語(yǔ)句覆蓋是很弱的邏輯覆蓋。</p><p>  ·判定覆蓋 比語(yǔ)句覆蓋稍強(qiáng)的覆蓋標(biāo)準(zhǔn)是判定覆蓋(DECision Coverage)。判定覆蓋的含義是:設(shè)計(jì)足夠的測(cè)試用例,使得程序中的每個(gè)判定

124、至少都獲得一次“真值”或“假值”,或者說(shuō)使得程序中的每一個(gè)取“真”分支和取“假”分支至少經(jīng)歷一次,因此判定覆蓋又稱(chēng)為分支覆蓋。</p><p>  ·條件覆蓋 在設(shè)計(jì)程序中,一個(gè)判定語(yǔ)句是由多個(gè)條件組合而成的復(fù)合判定。為了更徹底地實(shí)現(xiàn)邏輯覆蓋,可以采用條件覆蓋(ConDItion Coverage)的標(biāo)準(zhǔn)。條件覆蓋的含義是:構(gòu)造一組測(cè)試用例,使得每一判定語(yǔ)句中每個(gè)邏輯條件的可能值至少滿足一次。</

125、p><p>  ·多條件覆蓋 多條件覆蓋也稱(chēng)條件組合覆蓋,它的含義是:設(shè)計(jì)足夠的測(cè)試用例,使得每個(gè)判定中條件的各種可能組合都至少出現(xiàn)一次。顯然滿足多條件覆蓋的測(cè)試用例是一定滿足判定覆蓋、條件覆蓋和條件判定組合覆蓋的。</p><p>  ·修正條件判定覆蓋 修正條件判定覆蓋是由歐美的航空/航天制造廠商和使用單位聯(lián)合制定的“航空運(yùn)輸和裝備系統(tǒng)軟件認(rèn)證標(biāo)準(zhǔn)”,目前在國(guó)外的國(guó)防、

126、航空航天領(lǐng)域應(yīng)用廣泛。這個(gè)覆蓋度量需要足夠的測(cè)試用例來(lái)確定各個(gè)條件能夠影響到包含的判定的結(jié)果。它要求滿足兩個(gè)條件:首先,每一個(gè)程序模塊的入口和出口點(diǎn)都要考慮至少要被調(diào)用一次,每個(gè)程序的判定到所有可能的結(jié)果值要至少轉(zhuǎn)換一次;其次,程序的判定被分解為通過(guò)邏輯操作符(and、or)連接的布爾條件,每個(gè)條件對(duì)于判定的結(jié)果值是獨(dú)立的。</p><p>  5.2.2 黑盒測(cè)試</p><p>  黑

127、盒測(cè)試也稱(chēng)功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試,它是在已知產(chǎn)品所應(yīng)具有的功能,通過(guò)測(cè)試來(lái)檢測(cè)每個(gè)功能是否都能正常使用,在測(cè)試時(shí),把程序看作一個(gè)不能打開(kāi)的黑盆子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和內(nèi)部特性的情況下,測(cè)試者在程序接口進(jìn)行測(cè)試,它只檢查程序功能是否按照需求規(guī)格說(shuō)明書(shū)的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)鋸而產(chǎn)生正確的輸出信息,并且保持外部信息(如數(shù)據(jù)庫(kù)或文件)的完整性。黑盒測(cè)試方法主要有等價(jià)類(lèi)劃分、邊值分析、因—果圖、錯(cuò)誤推測(cè)等,主要用于軟件確

128、認(rèn)測(cè)試。 “黑盒”法著眼于程序外部結(jié)構(gòu)、不考慮內(nèi)部邏輯結(jié)構(gòu)、針對(duì)軟件界面和軟件功能進(jìn)行測(cè)試?!昂诤小狈ㄊ歉F舉輸入測(cè)試,只有把所有可能的輸入都作為測(cè)試情況使用,才能以這種方法查出程序中所有的錯(cuò)誤。實(shí)際上測(cè)試情況有無(wú)窮多個(gè),人們不僅要測(cè)試所有合法的輸入,而且還要對(duì)那些不合法但是可能的輸入進(jìn)行測(cè)試。</p><p>  采用黑盒技術(shù)設(shè)計(jì)測(cè)試用例的方法有:等價(jià)類(lèi)劃分、邊界值分析、錯(cuò)誤推測(cè)、因果圖和綜合策略。 </p

129、><p>  黑盒測(cè)試注重于測(cè)試軟件的功能性需求,也即黑盒測(cè)試使軟件工程師派生出執(zhí)行程序所有功能需求的輸入條件。黑盒測(cè)試并不是白盒測(cè)試的替代品,而是用于輔助白盒測(cè)試發(fā)現(xiàn)其他類(lèi)型的錯(cuò)誤。</p><p>  黑盒測(cè)試試圖發(fā)現(xiàn)以下類(lèi)型的錯(cuò)誤:</p><p>  1)功能錯(cuò)誤或遺漏;</p><p><b>  2)界面錯(cuò)誤;</b&

130、gt;</p><p>  3)數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤;</p><p><b>  4)性能錯(cuò)誤;</b></p><p>  5)初始化和終止錯(cuò)誤。</p><p><b>  黑盒測(cè)試的優(yōu)點(diǎn)</b></p><p>  1.基本上不用人管著,如果程序停止運(yùn)行了一般

131、就是被測(cè)試程序CRASh了</p><p>  2.設(shè)計(jì)完測(cè)試?yán)螅聛?lái)的工作就是爽了,當(dāng)然更苦悶的是確定crash原因</p><p><b>  黑盒測(cè)試的缺點(diǎn)</b></p><p>  1.結(jié)果取決于測(cè)試?yán)脑O(shè)計(jì),測(cè)試?yán)脑O(shè)計(jì)部分來(lái)勢(shì)來(lái)源于經(jīng)驗(yàn),OUSPG的東西很值得借鑒。</p><p>  2.沒(méi)有狀態(tài)轉(zhuǎn)換

132、的概念,目前一些成功的例子基本上都是針對(duì)PDU來(lái)做的,還做不到針對(duì)被測(cè)試程序的狀態(tài)轉(zhuǎn)換。</p><p>  3.就沒(méi)有狀態(tài)概念的測(cè)試來(lái)說(shuō),尋找和確定造成程序crash的測(cè)試?yán)莻€(gè)麻煩事情,必須把周?chē)赡艿臏y(cè)試?yán)龁为?dú)確認(rèn)一遍。而就有狀態(tài)的測(cè)試來(lái)說(shuō),就更麻煩了,尤其不是一個(gè)單獨(dú)的tEStcase造成的問(wèn)題。這些在堆的問(wèn)題中表現(xiàn)的更為突出。</p><p><b>  5.3 測(cè)試結(jié)

133、果</b></p><p><b>  第6章 總結(jié)</b></p><p>  Android是目前最流行的軟件開(kāi)發(fā)語(yǔ)言之一。Android是一門(mén)包含多種知識(shí)的學(xué)科,提供了豐富的類(lèi)庫(kù),能最大限度地利用網(wǎng)絡(luò)。在學(xué)習(xí)的過(guò)程中我學(xué)到了許多以前沒(méi)有學(xué)到的概念和新鮮資訊。運(yùn)用這些知識(shí)可以完成老師交給我的課程設(shè)計(jì)任務(wù)。這次老師讓我們自己擬訂題目,給了我們很大的想象空

134、間。我選了一個(gè)基于Android手機(jī)平臺(tái)下的仿真水族館游戲進(jìn)行設(shè)計(jì)開(kāi)發(fā)。。</p><p>  在接到這個(gè)程序設(shè)計(jì)任務(wù)的時(shí)候,我茫然了,不知道應(yīng)該作些什么,從哪里出發(fā)?;氐綄嬍椅异o靜的思考,整理了一下思緒,又在同學(xué)的幫助下,我有了系統(tǒng)的規(guī)劃。我首先去圖書(shū)館查找資料,找了一些Android課程設(shè)計(jì)相關(guān)的書(shū)籍;然后我又上網(wǎng)查找了有關(guān)的圖片和說(shuō)明。最后,在老師的指導(dǎo)和幫助下,在加上自己的努力,一份成功的Android程

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論