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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《3G手機(jī)軟件開發(fā)》</p><p><b>  課程設(shè)計(jì)</b></p><p>  題目:Android平臺(tái)數(shù)獨(dú)游戲的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  院、 系: 計(jì)算機(jī)信息與技術(shù)系 </p><p>  學(xué)科專業(yè): 軟件工程 </p><p> 

2、 學(xué)生姓名: XXX </p><p>  學(xué) 號(hào): B10060XXX </p><p>  指導(dǎo)教師: XX XX </p><p>  ×××2013年06月05日</p><p><b>  目 錄</b

3、></p><p><b>  一、緒 論3</b></p><p><b>  1.課題內(nèi)容3</b></p><p><b>  2.課題意義3</b></p><p>  3.Android系統(tǒng)介紹和發(fā)展趨勢(shì)4</p><p><

4、;b>  二、需求分析4</b></p><p><b>  1.任務(wù)概述4</b></p><p><b>  2.功能需求5</b></p><p><b>  3.性能需求5</b></p><p><b>  三、概要設(shè)計(jì)6<

5、/b></p><p><b>  1.?dāng)?shù)據(jù)庫設(shè)計(jì)6</b></p><p><b>  2.功能設(shè)計(jì)6</b></p><p>  3.系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)6</p><p>  4.開發(fā)工具的選擇7</p><p><b>  四、詳細(xì)設(shè)計(jì)8</

6、b></p><p><b>  1.主界面設(shè)計(jì)8</b></p><p><b>  1.1 界面8</b></p><p>  1.2 主要代碼8</p><p>  2.游戲界面設(shè)計(jì)10</p><p><b>  2.1 界面10</b

7、></p><p>  2.2 主要代碼10</p><p><b>  3.通關(guān)界面13</b></p><p><b>  3.1 界面13</b></p><p>  3.2 主要代碼13</p><p>  4.排行榜界面16</p>&

8、lt;p><b>  4.1 界面16</b></p><p>  4.2 主要代碼17</p><p>  5.?dāng)?shù)獨(dú)簡(jiǎn)介界面18</p><p><b>  5.1 界面18</b></p><p>  5.2 主要代碼18</p><p><b>

9、;  五、軟件實(shí)現(xiàn)19</b></p><p>  1.主界面實(shí)現(xiàn)(見圖4-1)19</p><p>  2.游戲界面實(shí)現(xiàn)(見圖4-2)19</p><p>  3.通關(guān)界面實(shí)現(xiàn)(見圖4-3、圖4-4)19</p><p>  4.排行榜界面實(shí)現(xiàn)(見圖4-5)19</p><p>  5.?dāng)?shù)獨(dú)簡(jiǎn)介

10、界面實(shí)現(xiàn)(見圖4-6)19</p><p><b>  六、軟件測(cè)試19</b></p><p>  1. 測(cè)試策略19</p><p><b>  2.測(cè)試內(nèi)容20</b></p><p>  2.1 首界面主要測(cè)試內(nèi)容20</p><p>  2.2 游戲界面主

11、要測(cè)試內(nèi)容21</p><p>  2.3 游戲結(jié)束界面主要測(cè)試內(nèi)容21</p><p>  2.4 排行榜界面測(cè)試內(nèi)容21</p><p>  2.5 背景音樂測(cè)試內(nèi)容21</p><p><b>  3.測(cè)試結(jié)論21</b></p><p><b>  七、總 結(jié)22&l

12、t;/b></p><p><b>  八、參考文獻(xiàn)22</b></p><p>  附 錄(部分代碼)23</p><p><b>  一、緒 論</b></p><p><b>  1.課題內(nèi)容</b></p><p>  開發(fā)一款A(yù)ndr

13、oid平臺(tái)的數(shù)獨(dú)游戲,在教材(《Android基礎(chǔ)教程》)數(shù)獨(dú)游戲的基礎(chǔ)上進(jìn)行功能擴(kuò)展。擴(kuò)展部分的功能要求如下:</p><p> ?。?)設(shè)計(jì)游戲關(guān)口不低于3關(guān)。當(dāng)用戶從第一關(guān)通過后,可以選擇退出或游戲進(jìn)入第二關(guān)運(yùn)行,難度按照關(guān)口增加遞增;</p><p>  (2)每關(guān)不少于5種初始局,且能隨機(jī)選擇其中一局運(yùn)行;</p><p> ?。?)用戶每次通關(guān)播放動(dòng)畫(

14、或音頻、圖片),并顯示用戶當(dāng)前的分?jǐn)?shù);</p><p> ?。?)程序存儲(chǔ)得分在前5名用戶的得分;</p><p><b>  2.課題意義</b></p><p> ?。?)運(yùn)用軟件工程的原理和方法來指導(dǎo)軟件的設(shè)計(jì)與開發(fā),既是對(duì)本學(xué)期剛學(xué)習(xí)的軟件工程課程的復(fù)習(xí),同時(shí)也是一次將理論應(yīng)用到實(shí)踐中的實(shí)戰(zhàn)演練,非常有助于我們提高自己的分析問題、解決問

15、題以及動(dòng)手方面的能力;</p><p> ?。?)通過對(duì)數(shù)獨(dú)游戲的設(shè)計(jì)與實(shí)現(xiàn),可以加深我們對(duì)Android了解和認(rèn)識(shí),使我們對(duì)Android編程有一個(gè)系統(tǒng)的掌握,為將來的Android游戲或者應(yīng)用軟件的開發(fā)打下堅(jiān)實(shí)基礎(chǔ)。</p><p>  3.Android系統(tǒng)介紹和發(fā)展趨勢(shì)</p><p>  Android是首款基于Linux平臺(tái)的開放源代碼的操作系統(tǒng),是目前

16、市面上移動(dòng)設(shè)備最為火熱的操作系統(tǒng),其采用Linux內(nèi)核,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android是軟件堆層(軟件疊層)的架構(gòu),主要分為三部分:底層以Linux內(nèi)核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。</p><p>  Android手機(jī)系統(tǒng)的一個(gè)很大的優(yōu)勢(shì)在于其開放性和服務(wù)免費(fèi)。Android是一個(gè)對(duì)第三方軟件完全開放的平臺(tái),開發(fā)者在為

17、其開發(fā)程序軟件時(shí)擁有更大的自由度。Android突破了iPhone 等只能添加為數(shù)不多的固定軟件的枷鎖;同時(shí)與Windows Mobile、Symbian等廠商不同,Android操作系統(tǒng)免費(fèi)向開發(fā)人員提供。Android項(xiàng)目目前正從手機(jī)運(yùn)營(yíng)商、廠商、開發(fā)者和消費(fèi)者那里獲得大力支持。</p><p>  安卓在全球市場(chǎng)的成長(zhǎng)壯大,塞班市場(chǎng)份額不斷下跌已成不爭(zhēng)事實(shí)。安卓操作系統(tǒng)發(fā)展迅猛主要得益于免費(fèi)、開源

18、和良好產(chǎn)業(yè)運(yùn)作策略,這三點(diǎn)為安卓在智能手機(jī)市場(chǎng)贏得更多的發(fā)展機(jī)遇。系統(tǒng)的免費(fèi)讓更多的廠商加入,推動(dòng)了份額的上升;代碼的開源讓更多的開發(fā)者進(jìn)入應(yīng)用開發(fā);應(yīng)用的豐富吸引了更多用戶選擇,這也是谷歌值得眾多廠商學(xué)習(xí)的地方。此外,谷歌通過OHA聯(lián)合眾多廠商進(jìn)行系統(tǒng)研發(fā),不斷更新版本,將系統(tǒng)應(yīng)用推廣到更多的終端產(chǎn)品中,確保用戶體驗(yàn)持續(xù)改善。</p><p><b>  二、需求分析</b></p&

19、gt;<p><b>  1.任務(wù)概述</b></p><p>  利用所學(xué)知識(shí)和通過一些拓展開發(fā)一款A(yù)ndroid平臺(tái)的數(shù)獨(dú)游戲。數(shù)獨(dú)是一種源自18世紀(jì)末的瑞士,后在美國(guó)發(fā)展、并在日本得以發(fā)揚(yáng)光大的數(shù)字謎題,是一種運(yùn)用紙、筆進(jìn)行演算的邏輯游戲。玩家需要根據(jù)9X9盤面上給出的已知數(shù)字和解題幫助推理出所有剩余空格的數(shù)字,并填入1-9的數(shù)字,使其滿足每一行、每一列、每一個(gè)粗線宮內(nèi)的

20、數(shù)字均含1-9且不重復(fù)。每一道合格的數(shù)獨(dú)謎題都有且僅有一個(gè)唯一答案,推理方法也以此為基礎(chǔ)任何無解或者多解的題目都是不合格的。這種游戲全面考驗(yàn)玩家的觀察能力和推理能力,雖然玩法不是很難,但數(shù)字排列方式卻千變?nèi)f化,所以不少教育者認(rèn)為數(shù)獨(dú)是訓(xùn)練頭腦的絕佳方式。</p><p><b>  2.功能需求</b></p><p>  本程序需要實(shí)現(xiàn)選擇難度關(guān)卡選擇,繼續(xù)上一次未

21、完成游戲,查看排行榜以及退出游戲等一系列基本功能。擴(kuò)展部分的功能要求如下:</p><p>  (1)設(shè)計(jì)游戲關(guān)口不低于3關(guān)。當(dāng)用戶從第一關(guān)通過后,可以選擇退出或游戲進(jìn)入第二關(guān)運(yùn)行,難度按照關(guān)口增加遞增;</p><p> ?。?)每關(guān)不少于5種初始局,且能隨機(jī)選擇其中一局運(yùn)行;</p><p> ?。?)用戶每次通關(guān)播放動(dòng)畫(或音頻、圖片),并顯示用戶當(dāng)前的分?jǐn)?shù);

22、</p><p> ?。?)程序存儲(chǔ)得分在前5名用戶的得分。</p><p><b>  3.性能需求</b></p><p> ?。?)處理的準(zhǔn)確性和及時(shí)性</p><p>  游戲處理的準(zhǔn)確性和及時(shí)性是游戲的必要性能。在系統(tǒng)設(shè)計(jì)和開發(fā)過程中,要充分考慮系統(tǒng)當(dāng)前和將來可能承受的工作量,使系統(tǒng)的處理能力和響應(yīng)時(shí)間能夠滿足

23、用戶對(duì)信息處理的需求。</p><p><b> ?。?)軟件的易用性</b></p><p>  該游戲能讓用戶很簡(jiǎn)單的操作,使用戶能在很快的時(shí)間內(nèi)學(xué)會(huì)玩該游戲,可以便于用戶之間進(jìn)行思維的比拼。</p><p> ?。?)系統(tǒng)的響應(yīng)速度</p><p>  游戲在用戶使用過程中的響應(yīng)速度要快,達(dá)到實(shí)時(shí)要求,以及時(shí)反饋信

24、息。能正確的反應(yīng)用戶的做題時(shí)間。</p><p><b> ?。?)解題時(shí)間:</b></p><p>  因?yàn)樘幚頂?shù)據(jù)需要不同的算法,算法的好壞在一定程度上就決定了軟件的成敗,接替時(shí)間控制要達(dá)到一定的要求,只有不斷的優(yōu)化算法才能降低解題的時(shí)間從而加強(qiáng)軟件的快速響應(yīng)從而更好的滿足客戶的需求。</p><p><b>  三、概要設(shè)計(jì)&

25、lt;/b></p><p><b>  1.?dāng)?shù)據(jù)庫設(shè)計(jì)</b></p><p>  本程序的數(shù)據(jù)庫名為rank.db,其中的數(shù)據(jù)表名為myrank,數(shù)據(jù)內(nèi)容具體如表3-1所示。</p><p>  表3-1 myrank</p><p><b>  2.功能設(shè)計(jì)</b></p>

26、<p> ?。?)游戲開始功能:通過難度關(guān)卡的選擇,調(diào)用不同游戲局開始新的游戲;</p><p> ?。?)游戲繼續(xù)功能:?jiǎn)?dòng)因玩家有事或其他原因而暫停的游戲局;</p><p> ?。?)英雄榜功能:通過調(diào)用數(shù)據(jù)庫顯示前五名玩家的名次、姓名和用時(shí);</p><p> ?。?)音樂播放功能:進(jìn)入游戲主界面、開始游戲以及順利完成一局游戲或者通關(guān),播放不同的

27、背景音樂;</p><p>  (5)數(shù)據(jù)存儲(chǔ)(數(shù)據(jù)庫)功能:存儲(chǔ)玩家的用時(shí)、姓名、名次等相關(guān)信息;</p><p>  (6)計(jì)時(shí)功能:記錄玩家完成一局游戲所花費(fèi)的時(shí)間;</p><p>  (7)數(shù)獨(dú)簡(jiǎn)介功能:對(duì)數(shù)獨(dú)進(jìn)行簡(jiǎn)要的介紹,同時(shí)對(duì)游戲的玩法進(jìn)行講解和說明;</p><p> ?。?)退出程序功能:可以順利退出游戲。</p&g

28、t;<p><b>  3.系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)</b></p><p>  系統(tǒng)結(jié)構(gòu)為進(jìn)入主界面顯示游戲界面,選擇菜單分為五項(xiàng)功能:繼續(xù)之前的游戲功能、游戲開始功能,查看排行榜功能,數(shù)獨(dú)簡(jiǎn)介功能以及退出功能。具體系統(tǒng)結(jié)構(gòu)如圖3-1所示。</p><p>  圖3-1 系統(tǒng)結(jié)構(gòu)圖</p><p><b>  4.開發(fā)工具的選擇

29、</b></p><p>  本軟件采用 Android嵌入式數(shù)據(jù)庫引擎SQLite創(chuàng)建數(shù)據(jù)庫,開發(fā)工具采用的是Eclipse。如圖3-2所示。</p><p>  圖3-3 Eclipse</p><p><b>  四、詳細(xì)設(shè)計(jì)</b></p><p><b>  1.主界面設(shè)計(jì)</b&

30、gt;</p><p>  主界面作為游戲的啟動(dòng)界面,用于顯示軟件的基本功能,使用戶對(duì)軟件有一個(gè)整體了解,主界面主要文件名為“Sudoku.java”,主界面布局文件名為“main.xml”。</p><p><b>  1.1 界面</b></p><p>  主界面如圖4-1所示。</p><p>  圖4-1 數(shù)

31、獨(dú)主界面</p><p><b>  1.2 主要代碼</b></p><p>  public void onCreate(Bundle savedInstanceState) {</p><p>  super.onCreate(savedInstanceState);</p><p>  setContentVie

32、w(R.layout.main);</p><p>  // Set up click listeners for all the buttons</p><p>  View continueButton = findViewById(R.id.continue_button);</p><p>  continueButton.setOnClickListene

33、r(this);</p><p>  View newButton = findViewById(R.id.new_button);</p><p>  newButton.setOnClickListener(this);</p><p>  View aboutButton = findViewById(R.id.about_button);</p>

34、<p>  aboutButton.setOnClickListener(this);</p><p>  View exitButton = findViewById(R.id.exit_button);</p><p>  exitButton.setOnClickListener(this);</p><p>  View rankButton=

35、findViewById(R.id.rank_button);</p><p>  rankButton.setOnClickListener(this);}</p><p>  public void onClick(View v) {</p><p>  switch (v.getId()) {</p><p>  case R.id.c

36、ontinue_button: </p><p>  startGame(Game.DIFFICULTY_CONTINUE);</p><p><b>  break;</b></p><p>  case R.id.about_button:</p><p>  Intent i = new Intent(

37、this, About.class);</p><p>  startActivity(i);</p><p><b>  break;</b></p><p>  case R.id.new_button:</p><p>  openNewGameDialog();</p><p><b

38、>  break;</b></p><p>  case R.id.rank_button:</p><p>  Intent t=new Intent(this,Rank.class);</p><p>  startActivity(t);</p><p>  Log.d("ttt", "i

39、ntent go");</p><p><b>  break;</b></p><p>  case R.id.exit_button:</p><p><b>  finish();</b></p><p><b>  break;}</b></p>

40、<p><b>  }</b></p><p><b>  2.游戲界面設(shè)計(jì)</b></p><p>  游戲界面是數(shù)獨(dú)游戲的開始界面,顯示了正在進(jìn)行的某一局游戲。游戲界面主要文件名為“Game.java”和“PuzzleView.java”。</p><p><b>  2.1 界面</b&g

41、t;</p><p>  游戲界面如圖4-2所示。</p><p>  圖4-2 數(shù)獨(dú)游戲界面</p><p><b>  2.2 主要代碼</b></p><p>  public class Game extends Activity {</p><p>  private static f

42、inal String TAG = "Sudoku";</p><p>  public static final String KEY_DIFFICULTY =</p><p>  "org.example.sudoku.difficulty";</p><p>  private static final String P

43、REF_PUZZLE = "puzzle" ; </p><p>  protected static String recordtime="recordtime"; //記錄時(shí)間</p><p>  private static int continuetime;</p><p>  public static fin

44、al int DIFFICULTY_EASY = 0;</p><p>  public static final int DIFFICULTY_MEDIUM = 1;</p><p>  public static final int DIFFICULTY_HARD = 2;</p><p>  protected static final int DIFFICU

45、LTY_CONTINUE = -1;</p><p>  int time=0;//定義定時(shí)器</p><p>  int rdm;//生成開局?jǐn)?shù)組隨機(jī)數(shù)</p><p>  static int sec=0;//計(jì)算計(jì)時(shí)器分 秒</p><p>  private int puzzle[] = new int[9 * 9];//用一個(gè)數(shù)組來

46、存下面的每個(gè)數(shù)字</p><p>  private final String easyPuzzle =</p><p>  "360000000004230800000004200" +</p><p>  "070460003820000014500013020" +</p><p>  "

47、;001900000007048300000000045";</p><p>  private final String mediumPuzzle =</p><p>  "650000070000506000014000005" +</p><p>  "007009000002314700000700800"

48、+</p><p>  "500000630000201000030000097";</p><p>  private final String hardPuzzle =</p><p>  "009000000080605020501078000" +</p><p>  "0000007

49、00706040102004000000" +</p><p>  "000720903090301080000000600";</p><p>  private PuzzleView puzzleView;</p><p>  protected void onCreate(Bundle savedInstanceState) {&

50、lt;/p><p>  super.onCreate(savedInstanceState);</p><p>  Log.d(TAG, "onCreate");</p><p>  rdm=(int)(Math.random()*100%5);//生成隨機(jī)數(shù)獲得數(shù)組布局中的一種 </p><p>  //Math.r

51、andom()是令系統(tǒng)隨機(jī)選取0-1之間的14位的隨機(jī)數(shù)。</p><p>  //通過調(diào)用getPuzzle(diff)來啟動(dòng)不同難度級(jí)別</p><p>  int diff = getIntent().getIntExtra(KEY_DIFFICULTY,</p><p>  DIFFICULTY_EASY); //獲取Activity傳來的整形數(shù)據(jù)<

52、;/p><p>  puzzle = getPuzzle(diff);//puzzle數(shù)組的值來自于getPuzzle(diff)返回的值</p><p>  calculateUsedTiles(); </p><p>  puzzleView = new PuzzleView(this);</p><p>  setContentView(p

53、uzzleView);</p><p>  puzzleView.requestFocus(); //用于指定屏幕內(nèi)的焦點(diǎn)View</p><p>  getIntent().putExtra(KEY_DIFFICULTY, DIFFICULTY_CONTINUE);</p><p>  getIntent().putExtra(recordtime,this.t

54、ime);//獲得用戶用時(shí) }</p><p>  private int[] getPuzzle(int diff) {</p><p>  String puz;</p><p>  switch (diff) {</p><p>  case DIFFICULTY_CONTINUE:</p><p>  puz

55、= getPreferences(MODE_PRIVATE).getString(PREF_PUZZLE,</p><p>  easyPuzzle[rdm]);//easypuzzle</p><p>  time=getPreferences(MODE_PRIVATE).getInt(recordtime, continuetime);//讀取保存的用戶用時(shí)</p>&l

56、t;p><b>  break;</b></p><p>  case DIFFICULTY_HARD:</p><p>  puz = hardPuzzle[rdm];</p><p><b>  break;</b></p><p>  case DIFFICULTY_MEDIUM:<

57、;/p><p>  puz = mediumPuzzle[rdm];</p><p><b>  break;</b></p><p>  case DIFFICULTY_EASY:</p><p><b>  default:</b></p><p>  puz = easyP

58、uzzle[rdm];</p><p><b>  break;}</b></p><p>  return fromPuzzleString(puz);}</p><p>  private void calculateUsedTiles() {</p><p>  for (int x = 0; x < 9;

59、x++) {</p><p>  for (int y = 0; y < 9; y++) {</p><p>  used[x][y] = calculateUsedTiles(x, y);}</p><p><b>  }</b></p><p><b>  //游戲結(jié)束</b></p

60、><p>  int num=0;</p><p>  for(int i=0;i<81;i++){</p><p>  if(puzzle[i]!=0)</p><p><b>  num++;}</b></p><p>  if(num==81){ </p><p&g

61、t;  Intent t=new Intent(this,GameOver.class);</p><p>  sec=time;//計(jì)算用戶用時(shí)分秒</p><p>  PuzzleView.timethread.flag=false;//停止計(jì)時(shí)</p><p>  Log.d("aaa","flag false");&l

62、t;/p><p>  startActivity(t); }</p><p><b>  }</b></p><p><b>  3.通關(guān)界面</b></p><p>  通關(guān)界面是完成一局?jǐn)?shù)獨(dú)游戲后彈出的的界面,顯示玩家該局游戲的得分,如果得分破了數(shù)據(jù)庫里面的前五條記錄則彈出破紀(jì)錄界面。通關(guān)界面的文件

63、名為“GameOver.java”,布局文件為“gameover.xml”和“gameover1.xml”。</p><p><b>  3.1 界面</b></p><p>  通關(guān)界面如圖4-3、圖4-4所示。</p><p>  圖4-3 通關(guān)界面1 圖4-4 通關(guān)界面2</p>

64、<p><b>  3.2 主要代碼</b></p><p>  public class GameOver extends Activity implements OnClickListener{</p><p>  private Button restart,outgame,orderbutton;</p><p>  pr

65、ivate TextView mytime,gameover,score1;</p><p>  private EditText myname;</p><p>  static int num=0;</p><p>  SQLiteOpenHelper helper=null;</p><p>  private MytabOperate

66、 myrank = null ;</p><p>  private MytabCursor mytabcursor;</p><p>  MediaPlayer mp;</p><p>  int s,mn,t=1,score=0;</p><p>  protected void onCreate(Bundle savedInstanc

67、eState) {</p><p>  super.onCreate(savedInstanceState);</p><p>  helper = new MyDatabaseHelper(this);</p><p>  mytabcursor=new MytabCursor(GameOver.this.helper.getWritableDatabase())

68、;</p><p>  s=Game.sec;</p><p>  Log.d("aaa",s+" ----------");</p><p>  Log.d("aaa",s+" gameover");</p><p>  mn=mytabcursor.findm

69、in();</p><p>  Log.d("aaa",mn+" gameover");</p><p><b>  //恭喜您通關(guān)了</b></p><p>  //s>mn&&mn!=0</p><p>  if(s>mn&&mn!

70、=0){ </p><p>  setContentView(R.layout.gameover);</p><p>  restart=(Button)findViewById(R.id.restart);</p><p>  outgame=(Button)findViewById(R.id.outgame);</p><p>  sc

71、ore1=(TextView)findViewById(R.id.score1);</p><p>  restart.setOnClickListener(this);</p><p>  outgame.setOnClickListener(this);</p><p>  score= 1000 - s*10;</p><p>  sc

72、ore1.setText(score+"分");//setText(String.valueOf(score))</p><p><b>  }</b></p><p><b>  //恭喜您破紀(jì)錄了</b></p><p><b>  else</b></p>&l

73、t;p><b>  {</b></p><p>  setContentView(R.layout.gameover1);</p><p>  mytime=(TextView)findViewById(R.id.mytime);</p><p>  myname=(EditText)findViewById(R.id.myname);

74、</p><p>  orderbutton=(Button)findViewById(R.id.orderbutton);</p><p>  orderbutton.setOnClickListener(this);</p><p>  mytime.setText(s+"秒");</p><p><b> 

75、 }</b></p><p><b>  }</b></p><p>  public void onClick(View v) {</p><p>  switch(v.getId()){</p><p>  case R.id.restart:</p><p>  num=num

76、+1;</p><p>  if (num>2) {</p><p>  mp.stop();</p><p>  Toast toast = Toast.makeText(this,"恭喜您順利通過三關(guān),完成了本關(guān)卡的挑戰(zhàn)", 2500); // (duration:顯示時(shí)間)</p><p>  toast.s

77、etGravity(Gravity.CENTER, 0, 0);//setGravity(起點(diǎn)位置,水平向右位移,垂直向下位移)</p><p>  toast.show();</p><p>  Intent tt=new Intent(this,Sudoku.class);</p><p>  startActivity(tt);</p><

78、p><b>  break;</b></p><p><b>  }</b></p><p><b>  else {</b></p><p>  Intent t=new Intent(this,Game.class);</p><p>  startActivity(

79、t);</p><p><b>  break;</b></p><p><b>  }</b></p><p>  case R.id.outgame:</p><p>  mp.stop();</p><p>  Intent tt=new Intent(this,Sud

80、oku.class);</p><p>  startActivity(tt);</p><p><b>  break;</b></p><p>  case R.id.orderbutton:</p><p>  //傳輸數(shù)據(jù)到數(shù)據(jù)庫</p><p>  if(myname.getText()

81、.length()<=10&&s!=0)</p><p>  {GameOver.this.myrank = new MytabOperate(</p><p>  GameOver.this.helper.getWritableDatabase());</p><p>  GameOver.this.myrank.insert(myname

82、.getText().toString(), s);</p><p>  Log.d("aaa","insert success");</p><p>  setContentView(R.layout.gameover);</p><p>  gameover=(TextView)findViewById(R.id.game

83、over);</p><p>  restart=(Button)findViewById(R.id.restart);//再來一局</p><p>  outgame=(Button)findViewById(R.id.outgame);//返回</p><p>  score1=(TextView)findViewById(R.id.score1);</p

84、><p>  score= 1000 - s*10;</p><p>  score1.setText(score+"分");</p><p>  restart.setOnClickListener(this);</p><p>  outgame.setOnClickListener(this);</p>&

85、lt;p>  gameover.setText("成績(jī)已登錄排行榜!");</p><p><b>  }</b></p><p><b>  else </b></p><p>  { //消息對(duì)話框</p><p>  new AlertDialog.Builder

86、(this).setMessage("您輸入的名字過長(zhǎng)(不超過10位)請(qǐng)返回重新輸入!").create().show();</p><p><b>  }</b></p><p><b>  break;}</b></p><p><b>  }</b></p>

87、<p>  protected void onResume(){</p><p>  super.onResume();</p><p>  mp=MediaPlayer.create(this, R.raw.shengli);</p><p>  mp.start();</p><p><b>  }</b>

88、</p><p><b>  }</b></p><p><b>  4.排行榜界面</b></p><p>  排行榜界面是點(diǎn)擊“英雄榜”彈出的界面,調(diào)用數(shù)據(jù)庫顯示前五名玩家的名次、用戶名和用時(shí)等數(shù)據(jù)。排行榜界面的文件名為“Rank.java”,布局文件為“Rank.xml”。</p><p>&

89、lt;b>  4.1 界面</b></p><p>  排行榜界面如圖4-5所示。</p><p>  圖4-5 排行榜界面</p><p><b>  4.2 主要代碼</b></p><p>  public class Rank extends Activity{</p><

90、p>  private SQLiteOpenHelper helper = null ;</p><p>  private LinearLayout mylayout = null ;</p><p>  public void onCreate(Bundle savedInstanceState) {</p><p>  super.onCreate(sa

91、vedInstanceState);</p><p>  super.setContentView(R.layout.rank);</p><p>  Log.d("aaa", "contentView go");</p><p>  this.mylayout</p><p>  = (LinearL

92、ayout) super.findViewById(R.id.ranklayout);</p><p>  this.helper = new MyDatabaseHelper(this);</p><p>  ListView listView = new ListView(this) ;</p><p><b>  // 要設(shè)置數(shù)據(jù)</b>

93、</p><p>  listView.setAdapter(</p><p>  // 所有的數(shù)據(jù)是字符串</p><p>  new ArrayAdapter<String>( this,// 上下文對(duì)象</p><p>  // 列表顯示的布局 </p><p>  android.R.layou

94、t.simple_list_item_1,new MytabCursor(// 實(shí)例化查詢</p><p>  // 取得SQLiteDatabase對(duì)象</p><p>  this.helper.getReadableDatabase()).find()));// 調(diào)用find()方法,返回List<String> ;</p>

95、;<p>  this.mylayout.addView(listView) ;}</p><p><b>  }</b></p><p><b>  5.?dāng)?shù)獨(dú)簡(jiǎn)介界面</b></p><p>  簡(jiǎn)介界面是點(diǎn)擊“關(guān)于數(shù)獨(dú)”彈出的界面,這是顯示的是數(shù)獨(dú)的簡(jiǎn)要介紹以及對(duì)游戲的玩法進(jìn)行講解和說明的文字。簡(jiǎn)介界面的

96、文件名為“About.java”,布局文件為“about.xml”。</p><p><b>  5.1 界面</b></p><p>  數(shù)獨(dú)簡(jiǎn)介界面如圖4-6所示。</p><p>  圖4-6 排行榜界面</p><p><b>  5.2 主要代碼</b></p><

97、p>  public class About extends Activity {</p><p><b>  @Override</b></p><p>  protected void onCreate(Bundle savedInstanceState) {</p><p>  super.onCreate(savedInstanc

98、eState);</p><p>  setContentView(R.layout.about); }</p><p><b>  }</b></p><p><b>  五、軟件實(shí)現(xiàn)</b></p><p>  1.主界面實(shí)現(xiàn)(見圖4-1)</p><p>  2.游戲界

99、面實(shí)現(xiàn)(見圖4-2)</p><p>  3.通關(guān)界面實(shí)現(xiàn)(見圖4-3、圖4-4)</p><p>  4.排行榜界面實(shí)現(xiàn)(見圖4-5)</p><p>  5.?dāng)?shù)獨(dú)簡(jiǎn)介界面實(shí)現(xiàn)(見圖4-6)</p><p><b>  六、軟件測(cè)試</b></p><p><b>  1. 測(cè)試策略&

100、lt;/b></p><p>  以黑盒測(cè)試為主,白盒測(cè)試為輔,通過簡(jiǎn)單的查看軟件內(nèi)部代碼,了解軟件的運(yùn)行狀態(tài)。</p><p><b> ?。?)、易用性測(cè)試</b></p><p><b> ?。?)、功能測(cè)試</b></p><p><b> ?。?)、性能測(cè)試</b&g

101、t;</p><p>  (4)、配置/兼容性測(cè)試</p><p><b> ?。?)、安全性測(cè)試</b></p><p><b>  2.測(cè)試內(nèi)容</b></p><p>  2.1 首界面主要測(cè)試內(nèi)容</p><p>  按鈕是否響應(yīng),是否能彈出相應(yīng)對(duì)話框。</p&

102、gt;<p>  2.2 游戲界面主要測(cè)試內(nèi)容</p><p>  (1)是否能正確彈出棋局;</p><p> ?。?)棋盤是否正常顯示;</p><p> ?。?)點(diǎn)擊界面是否彈出當(dāng)前位置的小鍵盤,是否有數(shù)字提示;</p><p>  (4)數(shù)字是否能正確填入,填寫出錯(cuò)是否響應(yīng)錯(cuò)誤提示。</p><p&g

103、t;  2.3 游戲結(jié)束界面主要測(cè)試內(nèi)容</p><p> ?。?)是否正確彈出“通過提示”對(duì)話框;</p><p> ?。?)圖片是否正常顯示,得分顯示是否正確;</p><p>  (3)當(dāng)玩家用時(shí)低于數(shù)據(jù)庫中的記錄時(shí)是否能彈出“破紀(jì)錄”對(duì)話框,并正確顯示玩家的用時(shí);</p><p> ?。?)輸入用戶信息時(shí):合法輸入,能否正常存入數(shù)據(jù)庫

104、并再次彈出“通關(guān)提示”對(duì)話框;非法輸入,系統(tǒng)能否辨別并作出響應(yīng);</p><p> ?。?)當(dāng)玩家成功通過三大關(guān)卡中的某一個(gè)三局及其以上游戲,是否能彈出相應(yīng)提示并結(jié)束。</p><p>  2.4 排行榜界面測(cè)試內(nèi)容</p><p> ?。?)是否能正常調(diào)用數(shù)據(jù)庫;</p><p> ?。?)信息是否正確顯示。</p><

105、p>  2.5 背景音樂測(cè)試內(nèi)容</p><p> ?。?)打開游戲首界面、進(jìn)行游戲、游戲通關(guān)是否播放不同背景音樂;</p><p> ?。?)點(diǎn)擊“返回”退出游戲,是否音樂停止。</p><p><b>  3.測(cè)試結(jié)論 </b></p><p> ?。?)測(cè)試目標(biāo)基本完成;</p><p&g

106、t;  (2)測(cè)試全部通過。</p><p>  此次測(cè)試是將系統(tǒng)各功能模塊進(jìn)行逐一的檢查,對(duì)系統(tǒng)各功能的正常運(yùn)行做了充分的測(cè)試。輸入數(shù)據(jù)庫數(shù)據(jù)的檢測(cè)功能以及出錯(cuò)處理情況。但由于功能模塊較多,采用功能測(cè)試設(shè)計(jì)的測(cè)試用例比較多,測(cè)試花費(fèi)了一定的時(shí)間。</p><p><b>  七、總 結(jié)</b></p><p>  在做課程設(shè)計(jì)之前,我對(duì)And

107、roid知識(shí)的掌握是很有限的,主要來自于課堂上老師授予的,而自己在課后花的時(shí)間相對(duì)較少。因此有些知識(shí)記得不清楚甚至不知道,這就在很大程度上給本次課程設(shè)計(jì)帶來了很多麻煩,如時(shí)間的多余開銷,程序編寫的效率低下,代碼顯得長(zhǎng)而復(fù)雜等。</p><p>  在本次課程設(shè)計(jì)的過程中,每一步功能的實(shí)現(xiàn)都讓我感到無比高興,哪怕只是一小步。因?yàn)槊恳恍↑c(diǎn)的成功都能讓我學(xué)到并掌握許多的知識(shí)。SQLite 數(shù)據(jù)庫的實(shí)現(xiàn)是一個(gè)非常艱難的過

108、程,但成功連接的那一刻真的是難以言說的激動(dòng)。通過TimeThread類實(shí)現(xiàn)游戲的計(jì)時(shí),GameOver類實(shí)現(xiàn)游戲通關(guān)的提示與跳轉(zhuǎn),Rank類將存入數(shù)據(jù)庫中的記錄顯示輸出等功能的實(shí)現(xiàn)都是本次課程設(shè)計(jì)中令我感到驕傲的地方,也是收獲最多的地方。</p><p>  通過這次課程設(shè)計(jì),讓我意識(shí)到自己和周圍的同學(xué)存在著很大的差距,小到Android中語句的定義,我都需要重新去學(xué)習(xí)。因此我比別人花的更多的時(shí)間,浪費(fèi)了更多的精

109、力,但這些都是值得的,因?yàn)檫@一過程中我學(xué)到了許多知識(shí)。通過本次課程設(shè)計(jì)讓我進(jìn)一步熟悉了Android的編程,進(jìn)一步掌握各種程序調(diào)試方法,進(jìn)一步了解和學(xué)習(xí)了良好的程序設(shè)計(jì)風(fēng)格,受益匪淺!</p><p>  本次課程設(shè)計(jì)的基本成功是在老師的辛勤幫助下才得以實(shí)現(xiàn),在此感謝張琳老師給我提供了這一個(gè)實(shí)踐動(dòng)手的機(jī)會(huì)以及給予我們的悉心指導(dǎo)和幫助,同時(shí)也感謝幫助我的各位同學(xué),因?yàn)橛兴麄兊奶嵝押徒ㄗh,才有了我本次課程設(shè)計(jì)的成功。

110、</p><p><b>  八、參考文獻(xiàn)</b></p><p>  [1] Ed Burnette著,田俊靜,張波,黃湘清譯.Android基礎(chǔ)教程(第3版·修訂版)[M].北京:人民郵電出版社.2011</p><p>  [2] Nicolas Gramlich,張勁鋒.Android編程入門教程andbook中文版[M].北

111、京:人民郵電出版社.2010</p><p>  [3] 吳亞峰,索依娜.Android核心技術(shù)與實(shí)例詳解[M].北京:電子工業(yè)出版社.2010</p><p>  [4] Rogers Cadenhead,Laura Lemay.21天學(xué)通Java 2[M].北京:民郵電出版社.2004 </p><p>  [5] 張海藩.

112、軟件工程導(dǎo)論(第五版)[M].北京:清華大學(xué)出版社,2008</p><p>  [6] 李鐘尉,周小彤,陳丹丹.Java從入門到精通(第2版)[M].北京:清華大學(xué)出版社,2010</p><p>  [7] 郭宏志.android應(yīng)用開發(fā)詳解.電子工業(yè)出版社</p><p>  [8]Mars.千鋒3G學(xué)院android游戲開發(fā)教程</p><

113、;p>  [DB/OL].http://www.mobiletrain.org/ </p><p><b>  附 錄(部分代碼)</b></p><p><b>  主程序代碼:</b></p><p>  import org.example.sudoku.Game;</p><p>  

114、import android.app.Activity;</p><p>  import android.app.AlertDialog;</p><p>  import android.app.AlertDialog.Builder;</p><p>  import android.content.DialogInterface;</p>&l

115、t;p>  import android.content.Intent;</p><p>  import android.os.Bundle;</p><p>  import android.util.Log;</p><p>  import android.view.KeyEvent;</p><p>  import andr

116、oid.view.Menu;</p><p>  import android.view.MenuInflater;</p><p>  import android.view.MenuItem;</p><p>  import android.view.View;</p><p>  import android.view.View.On

117、ClickListener;</p><p>  public class Sudoku extends Activity implements OnClickListener {</p><p>  private static final String TAG = "Sudoku";</p><p>  public void onCreat

118、e(Bundle savedInstanceState) {</p><p>  super.onCreate(savedInstanceState);</p><p>  setContentView(R.layout.main);</p><p>  // Set up click listeners for all the buttons</p>

119、<p>  View continueButton = findViewById(R.id.continue_button);</p><p>  continueButton.setOnClickListener(this);</p><p>  View newButton = findViewById(R.id.new_button);</p><p&

120、gt;  newButton.setOnClickListener(this);</p><p>  View aboutButton = findViewById(R.id.about_button);</p><p>  aboutButton.setOnClickListener(this);</p><p>  View exitButton = findV

121、iewById(R.id.exit_button);</p><p>  exitButton.setOnClickListener(this);</p><p>  View rankButton=findViewById(R.id.rank_button);</p><p>  rankButton.setOnClickListener(this); }<

122、/p><p>  protected void onResume() {</p><p>  super.onResume();</p><p>  Music.play(this, R.raw.main); }</p><p>  protected void onPause() {</p><p>  super.o

123、nPause();</p><p>  Music.stop(this);}</p><p>  public void onClick(View v) {</p><p>  switch (v.getId()) {</p><p>  case R.id.continue_button: </p><p&g

124、t;  Intent c=new Intent(this,Game.class);</p><p>  c.putExtra(Game.KEY_DIFFICULTY, -1);</p><p>  startActivity(c);</p><p><b>  break;</b></p><p>  case R.id

125、.about_button:</p><p>  Intent i = new Intent(this, About.class);</p><p>  startActivity(i);</p><p><b>  break;</b></p><p>  case R.id.new_button:</p>

126、<p>  openNewGameDialog();</p><p><b>  break;</b></p><p>  case R.id.rank_button:</p><p>  Intent t=new Intent(this,Rank.class);</p><p>  startActivi

127、ty(t);</p><p>  Log.d("ttt", "intent go");</p><p><b>  break;</b></p><p>  case R.id.exit_button:</p><p><b>  exit();</b><

128、;/p><p><b>  break;} }</b></p><p>  public boolean onCreateOptionsMenu(Menu menu) {</p><p>  super.onCreateOptionsMenu(menu);</p><p>  MenuInflater inflater =

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論