Android平臺數(shù)獨游戲的設計與實現(xiàn)_第1頁
Android平臺數(shù)獨游戲的設計與實現(xiàn)_第2頁
Android平臺數(shù)獨游戲的設計與實現(xiàn)_第3頁
Android平臺數(shù)獨游戲的設計與實現(xiàn)_第4頁
Android平臺數(shù)獨游戲的設計與實現(xiàn)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、3G手機軟件開發(fā)課程設計題目:Android平臺數(shù)獨游戲的設計與實現(xiàn)院、 系: 計算機信息與技術系 學科專業(yè): 軟件工程 學生姓名: XXX 學 號: B10060XXX 指導教師: XX XX 2013年06月05日目 錄一、緒 論31課題內容32課題意義33Android系統(tǒng)介紹和發(fā)展趨勢4二、需求分析41任務概述42功能需求53性能需求5三、概要設計61數(shù)據(jù)庫設計62功能設計63系統(tǒng)的結構設計64開發(fā)工具的選擇7四、詳細設計81主界面設計811 界面812 主要代碼82游戲界面設計1021 界面1022 主要代碼103通關界面1331 界面1332 主要代碼134排行榜界面1641 界面

2、1642 主要代碼175數(shù)獨簡介界面1851 界面1852 主要代碼18五、軟件實現(xiàn)191主界面實現(xiàn)(見圖4-1)192游戲界面實現(xiàn)(見圖4-2)193通關界面實現(xiàn)(見圖4-3、圖4-4)194排行榜界面實現(xiàn)(見圖4-5)195數(shù)獨簡介界面實現(xiàn)(見圖4-6)19六、軟件測試191. 測試策略192測試內容202.1 首界面主要測試內容202.2 游戲界面主要測試內容212.3 游戲結束界面主要測試內容212.4 排行榜界面測試內容212.5 背景音樂測試內容213測試結論21七、總 結22八、參考文獻22附 錄(部分代碼)23一、緒 論1課題內容開發(fā)一款Android平臺的數(shù)獨游戲,在教材(A

3、ndroid基礎教程)數(shù)獨游戲的基礎上進行功能擴展。擴展部分的功能要求如下:(1)設計游戲關口不低于3關。當用戶從第一關通過后,可以選擇退出或游戲進入第二關運行,難度按照關口增加遞增;(2)每關不少于5種初始局,且能隨機選擇其中一局運行;(3)用戶每次通關播放動畫(或音頻、圖片),并顯示用戶當前的分數(shù);(4)程序存儲得分在前5名用戶的得分;2課題意義(1)運用軟件工程的原理和方法來指導軟件的設計與開發(fā),既是對本學期剛學習的軟件工程課程的復習,同時也是一次將理論應用到實踐中的實戰(zhàn)演練,非常有助于我們提高自己的分析問題、解決問題以及動手方面的能力;(2)通過對數(shù)獨游戲的設計與實現(xiàn),可以加深我們對A

4、ndroid了解和認識,使我們對Android編程有一個系統(tǒng)的掌握,為將來的Android游戲或者應用軟件的開發(fā)打下堅實基礎。3Android系統(tǒng)介紹和發(fā)展趨勢Android是首款基于Linux平臺的開放源代碼的操作系統(tǒng),是目前市面上移動設備最為火熱的操作系統(tǒng),其采用Linux內核,由Google公司和開放手機聯(lián)盟領導及開發(fā)。Android是軟件堆層(軟件疊層)的架構,主要分為三部分:底層以Linux內核工作為基礎,只提供基本功能;其他的應用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。Android手機系統(tǒng)的一個很大的優(yōu)勢在于其開放性和服務免費。Android是一個對第三方軟件完全

5、開放的平臺,開發(fā)者在為其開發(fā)程序軟件時擁有更大的自由度。Android突破了iPhone 等只能添加為數(shù)不多的固定軟件的枷鎖;同時與WindowsMobile、Symbian等廠商不同,Android操作系統(tǒng)免費向開發(fā)人員提供。Android項目目前正從手機運營商、廠商、開發(fā)者和消費者那里獲得大力支持。安卓在全球市場的成長壯大,塞班市場份額不斷下跌已成不爭事實。安卓操作系統(tǒng)發(fā)展迅猛主要得益于免費、開源和良好產(chǎn)業(yè)運作策略,這三點為安卓在智能手機市場贏得更多的發(fā)展機遇。系統(tǒng)的免費讓更多的廠商加入,推動了份額的上升;代碼的開源讓更多的開發(fā)者進入應用開發(fā);應用的豐富吸引了更多用戶選擇,這也是谷歌值得眾

6、多廠商學習的地方。此外,谷歌通過OHA聯(lián)合眾多廠商進行系統(tǒng)研發(fā),不斷更新版本,將系統(tǒng)應用推廣到更多的終端產(chǎn)品中,確保用戶體驗持續(xù)改善。二、需求分析1任務概述利用所學知識和通過一些拓展開發(fā)一款Android平臺的數(shù)獨游戲。數(shù)獨是一種源自18世紀末的瑞士,后在美國發(fā)展、并在日本得以發(fā)揚光大的數(shù)字謎題,是一種運用紙、筆進行演算的邏輯游戲。玩家需要根據(jù)9X9盤面上給出的已知數(shù)字和解題幫助推理出所有剩余空格的數(shù)字,并填入1-9的數(shù)字,使其滿足每一行、每一列、每一個粗線宮內的數(shù)字均含1-9且不重復。每一道合格的數(shù)獨謎題都有且僅有一個唯一答案,推理方法也以此為基礎任何無解或者多解的題目都是不合格的。這種游戲

7、全面考驗玩家的觀察能力和推理能力,雖然玩法不是很難,但數(shù)字排列方式卻千變萬化,所以不少教育者認為數(shù)獨是訓練頭腦的絕佳方式。2功能需求本程序需要實現(xiàn)選擇難度關卡選擇,繼續(xù)上一次未完成游戲,查看排行榜以及退出游戲等一系列基本功能。擴展部分的功能要求如下:(1)設計游戲關口不低于3關。當用戶從第一關通過后,可以選擇退出或游戲進入第二關運行,難度按照關口增加遞增;(2)每關不少于5種初始局,且能隨機選擇其中一局運行;(3)用戶每次通關播放動畫(或音頻、圖片),并顯示用戶當前的分數(shù);(4)程序存儲得分在前5名用戶的得分。3性能需求(1)處理的準確性和及時性游戲處理的準確性和及時性是游戲的必要性能。在系統(tǒng)

8、設計和開發(fā)過程中,要充分考慮系統(tǒng)當前和將來可能承受的工作量,使系統(tǒng)的處理能力和響應時間能夠滿足用戶對信息處理的需求。(2)軟件的易用性該游戲能讓用戶很簡單的操作,使用戶能在很快的時間內學會玩該游戲,可以便于用戶之間進行思維的比拼。(3)系統(tǒng)的響應速度游戲在用戶使用過程中的響應速度要快,達到實時要求,以及時反饋信息。能正確的反應用戶的做題時間。(4)解題時間:因為處理數(shù)據(jù)需要不同的算法,算法的好壞在一定程度上就決定了軟件的成敗,接替時間控制要達到一定的要求,只有不斷的優(yōu)化算法才能降低解題的時間從而加強軟件的快速響應從而更好的滿足客戶的需求。三、概要設計1數(shù)據(jù)庫設計本程序的數(shù)據(jù)庫名為,其中的數(shù)據(jù)表

9、名為myrank,數(shù)據(jù)內容具體如表3-1所示。表3-1 myrank屬性數(shù)據(jù)類型說明idINTEGER名次nameVARCHAR(10)用戶名timeINTEGER用時2功能設計(1)游戲開始功能:通過難度關卡的選擇,調用不同游戲局開始新的游戲;(2)游戲繼續(xù)功能:啟動因玩家有事或其他原因而暫停的游戲局;(3)英雄榜功能:通過調用數(shù)據(jù)庫顯示前五名玩家的名次、姓名和用時;(4)音樂播放功能:進入游戲主界面、開始游戲以及順利完成一局游戲或者通關,播放不同的背景音樂;(5)數(shù)據(jù)存儲(數(shù)據(jù)庫)功能:存儲玩家的用時、姓名、名次等相關信息;(6)計時功能:記錄玩家完成一局游戲所花費的時間;(7)數(shù)獨簡介功

10、能:對數(shù)獨進行簡要的介紹,同時對游戲的玩法進行講解和說明;(8)退出程序功能:可以順利退出游戲。3系統(tǒng)的結構設計系統(tǒng)結構為進入主界面顯示游戲界面,選擇菜單分為五項功能:繼續(xù)之前的游戲功能、游戲開始功能,查看排行榜功能,數(shù)獨簡介功能以及退出功能。具體系統(tǒng)結構如圖3-1所示。圖3-1 系統(tǒng)結構圖4開發(fā)工具的選擇本軟件采用 Android嵌入式數(shù)據(jù)庫引擎SQLite創(chuàng)建數(shù)據(jù)庫,開發(fā)工具采用的是Eclipse。如圖3-2所示。圖3-3 Eclipse四、詳細設計1主界面設計主界面作為游戲的啟動界面,用于顯示軟件的基本功能,使用戶對軟件有一個整體了解,主界面主要文件名為“”,主界面布局文件名為“ml”。

11、11 界面主界面如圖4-1所示。圖4-1 數(shù)獨主界面12 主要代碼public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); / Set up click listeners for all the buttons View continueButton = findViewById(R.id.continue_button); continueButton.setOnClickListener(this); View new

12、Button = findViewById(R.id.new_button); newButton.setOnClickListener(this); View aboutButton = findViewById(R.id.about_button); aboutButton.setOnClickListener(this); View exitButton = findViewById(R.id.exit_button); exitButton.setOnClickListener(this); View rankButton=findViewById(R.id.rank_button);

13、 rankButton.setOnClickListener(this);public void onClick(View v) switch (v.getId() case R.id.continue_button: startGame(Game.DIFFICULTY_CONTINUE); break; case R.id.about_button: Intent i = new Intent(this, About.class); startActivity(i); break; case R.id.new_button: openNewGameDialog(); break; case

14、R.id.rank_button: Intent t=new Intent(this,Rank.class); startActivity(t); Log.d(ttt, intent go); break;t_button: finish(); break; 2游戲界面設計游戲界面是數(shù)獨游戲的開始界面,顯示了正在進行的某一局游戲。游戲界面主要文件名為“”和“”。21 界面游戲界面如圖4-2所示。圖4-2 數(shù)獨游戲界面22 主要代碼public class Game extends Activity private static final String TAG = Sudoku; public

15、 static final String KEY_DIFFICULTY = org.example.sudoku.difficulty; private static final String PREF_PUZZLE = puzzle ; protected static String recordtime=recordtime; /記錄時間 private static int continuetime; public static final int DIFFICULTY_EASY = 0; public static final int DIFFICULTY_MEDIUM = 1; pu

16、blic static final int DIFFICULTY_HARD = 2; protected static final int DIFFICULTY_CONTINUE = -1; int time=0;/定義定時器 int rdm;/生成開局數(shù)組隨機數(shù) static int sec=0;/計算計時器分 秒 private int puzzle = new int9 * 9;/用一個數(shù)組來存下面的每個數(shù)字 private final String easyPuzzle = 360000000004230800000004200 + private final String mediu

17、mPuzzle = 650000070000506000014000005 + private final String hardPuzzle = 009000000080605020501078000 + private PuzzleView puzzleView;protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); Log.d(TAG, onCreate); rdm=(int)(Math.random()*100%5);/生成隨機數(shù)獲得數(shù)組布局中的一種 /Math.ran

18、dom()是令系統(tǒng)隨機選取0-1之間的14位的隨機數(shù)。 /通過調用getPuzzle(diff)來啟動不同難度級別 int diff = getIntent().getIntExtra(KEY_DIFFICULTY, DIFFICULTY_EASY); /獲取Activity傳來的整形數(shù)據(jù) puzzle = getPuzzle(diff);/puzzle數(shù)組的值來自于getPuzzle(diff)返回的值 calculateUsedTiles(); puzzleView = new PuzzleView(this); setContentView(puzzleView); puzzleView

19、.requestFocus(); /用于指定屏幕內的焦點View getIntent().putExtra(KEY_DIFFICULTY, DIFFICULTY_CONTINUE); getIntent().putExtra(recordtime,this.time);/獲得用戶用時 private int getPuzzle(int diff) String puz; switch (diff) case DIFFICULTY_CONTINUE: puz = getPreferences(MODE_PRIVATE).getString(PREF_PUZZLE, easyPuzzlerdm);

20、/easypuzzle time=getPreferences(MODE_PRIVATE).getInt(recordtime, continuetime);/讀取保存的用戶用時 break; case DIFFICULTY_HARD: puz = hardPuzzlerdm; break; case DIFFICULTY_MEDIUM: puz = mediumPuzzlerdm; break; case DIFFICULTY_EASY: default: puz = easyPuzzlerdm; break; return fromPuzzleString(puz);private voi

21、d calculateUsedTiles() for (int x = 0; x 9; x+) for (int y = 0; y 9; y+) usedxy = calculateUsedTiles(x, y); /游戲結束 int num=0; for(int i=0;imn&mn!=0if(smn&mn!=0) setContentView(R.layout.gameover);restart=(Button)findViewById(R.id.restart);outgame=(Button)findViewById(R.id.outgame);score1=(TextView)fin

22、dViewById(R.id.score1);restart.setOnClickListener(this);outgame.setOnClickListener(this);score= 1000 - s*10;score1.setText(score+分);/setText(String.valueOf(score)/恭喜您破紀錄了elsesetContentView(R.layout.gameover1);mytime=(TextView)findViewById(R.id.mytime);myname=(EditText)findViewById(R.id.myname);order

23、button=(Button)findViewById(R.id.orderbutton);orderbutton.setOnClickListener(this);mytime.setText(s+秒);public void onClick(View v) switch(v.getId()case R.id.restart:num=num+1;if (num2) mp.stop(); Toast toast = Toast.makeText(this,恭喜您順利通過三關,完成了本關卡的挑戰(zhàn), 2500); / (duration:顯示時間) toast.setGravity(Gravity

24、.CENTER, 0, 0);/setGravity(起點位置,水平向右位移,垂直向下位移) toast.show(); Intent tt=new Intent(this,Sudoku.class); startActivity(tt); break;else Intent t=new Intent(this,Game.class);startActivity(t);break;case R.id.outgame:mp.stop();Intent tt=new Intent(this,Sudoku.class);startActivity(tt);break;case R.id.orderb

25、utton:/傳輸數(shù)據(jù)到數(shù)據(jù)庫if(myname.getText().length()=10&s!=0)GameOver.this.myrank = new MytabOperate(GameOver.this.helper.getWritableDatabase();GameOver.this.myrank.insert(myname.getText().toString(), s);Log.d(aaa,insert success);setContentView(R.layout.gameover);gameover=(TextView)findViewById(R.id.gameover

26、);restart=(Button)findViewById(R.id.restart);/再來一局outgame=(Button)findViewById(R.id.outgame);/返回score1=(TextView)findViewById(R.id.score1);score= 1000 - s*10;score1.setText(score+分);restart.setOnClickListener(this);outgame.setOnClickListener(this);gameover.setText(成績已登錄排行榜!);else /消息對話框new AlertDial

27、og.Builder(this).setMessage(您輸入的名字過長(不超過10位)請返回重新輸入!).create().show();break;protected void onResume()super.onResume();mp=MediaPlayer.create(this, R.raw.shengli);mp.start();4排行榜界面排行榜界面是點擊“英雄榜”彈出的界面,調用數(shù)據(jù)庫顯示前五名玩家的名次、用戶名和用時等數(shù)據(jù)。排行榜界面的文件名為“Rank.java”,布局文件為“Rank.xml”。41 界面排行榜界面如圖4-5所示。圖4-5 排行榜界面42 主要代碼publ

28、ic class Rank extends Activityprivate SQLiteOpenHelper helper = null ;private LinearLayout mylayout = null ;public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);ContentView(R.layout.rank);Log.d(aaa, contentView go); = (LinearLayout) super.findViewById(R.id.ranklayout);t

29、his.helper = new MyDatabaseHelper(this);ListView listView = new ListView(this) ;/ 要設置數(shù)據(jù)listView.setAdapter(/ 所有的數(shù)據(jù)是字符串new ArrayAdapter( this,/ 上下文對象/ 列表顯示的布局 android.R.layout.simple_list_item_1,new MytabCursor(/ 實例化查詢 / 取得SQLiteDatabase對象this.helper.getReadableDatabase().find();/ 調用find()方法,返回List ;

30、this.mylayout.addView(listView) ;5數(shù)獨簡介界面簡介界面是點擊“關于數(shù)獨”彈出的界面,這是顯示的是數(shù)獨的簡要介紹以及對游戲的玩法進行講解和說明的文字。簡介界面的文件名為“About.java”,布局文件為“about.xml”。51 界面數(shù)獨簡介界面如圖4-6所示。圖4-6 排行榜界面52 主要代碼public class About extends Activity Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); se

31、tContentView(R.layout.about); 五、軟件實現(xiàn)1主界面實現(xiàn)(見圖4-1)2游戲界面實現(xiàn)(見圖4-2)3通關界面實現(xiàn)(見圖4-3、圖4-4)4排行榜界面實現(xiàn)(見圖4-5)5數(shù)獨簡介界面實現(xiàn)(見圖4-6)六、軟件測試1. 測試策略以黑盒測試為主,白盒測試為輔,通過簡單的查看軟件內部代碼,了解軟件的運行狀態(tài)。(1)、易用性測試測試目標測試游戲是否容易進入,顯示速度,設計是否合理方法進行手工測試調整不規(guī)范的地方。完成標準測試成功,測試能達到基本要求并且發(fā)現(xiàn)的問題全部解決需考慮的特殊事項測試過程中可能出現(xiàn)手機內存狀態(tài)不穩(wěn)定。(2)、功能測試測試目標測試所有功能是否已正常實現(xiàn)。數(shù)

32、據(jù)精確:各數(shù)據(jù)類型的輸入時統(tǒng)計精確。方法對測試對象的功能進行測試,調整不規(guī)范的地方。進行手工測試。完成標準測試成功,測試用例通過并且發(fā)現(xiàn)的嚴重錯誤全部解決需考慮的特殊事項測試過程中可能出現(xiàn)系統(tǒng)版本不兼容。(3)、性能測試測試目標核實游戲在用戶訪問多數(shù)據(jù)時性能的穩(wěn)定性,不造成系統(tǒng)崩潰或相關的異?,F(xiàn)象方法負荷測試和壓力測試完成標準系統(tǒng)能滿足用戶需求中所要求的性能要求需考慮的特殊事項暫無(4)、配置/兼容性測試測試目標核實系統(tǒng)在不同的軟件和硬件配置中運行穩(wěn)定方法手工測試和工具測試相結合完成標準在各種不同android版本、不同類型android手機均能正常實現(xiàn)功能需考慮的特殊事項暫無(5)、安全性測

33、試測試目標核實用戶是否只能操作其擁有權限能操作的功能,核實只有具備訪問權限的管理員才能訪問系統(tǒng) 方法手工測試和工具測試相結合完成標準執(zhí)行各種非法操作無安全漏洞且游戲使用正常需考慮的特殊事項暫無2測試內容2.1 首界面主要測試內容按鈕是否響應,是否能彈出相應對話框。 游戲界面主要測試內容(1)是否能正確彈出棋局;(2)棋盤是否正常顯示;(3)點擊界面是否彈出當前位置的小鍵盤,是否有數(shù)字提示;(4)數(shù)字是否能正確填入,填寫出錯是否響應錯誤提示。2.3 游戲結束界面主要測試內容(1)是否正確彈出“通過提示”對話框;(2)圖片是否正常顯示,得分顯示是否正確;(3)當玩家用時低于數(shù)據(jù)庫中的記錄時是否能彈

34、出“破紀錄”對話框,并正確顯示玩家的用時;(4)輸入用戶信息時:合法輸入,能否正常存入數(shù)據(jù)庫并再次彈出“通關提示”對話框;非法輸入,系統(tǒng)能否辨別并作出響應;(5)當玩家成功通過三大關卡中的某一個三局及其以上游戲,是否能彈出相應提示并結束。2.4 排行榜界面測試內容(1)是否能正常調用數(shù)據(jù)庫;(2)信息是否正確顯示。2.5 背景音樂測試內容(1)打開游戲首界面、進行游戲、游戲通關是否播放不同背景音樂;(2)點擊“返回”退出游戲,是否音樂停止。3測試結論 (1)測試目標基本完成;(2)測試全部通過。此次測試是將系統(tǒng)各功能模塊進行逐一的檢查,對系統(tǒng)各功能的正常運行做了充分的測試。輸入數(shù)據(jù)庫數(shù)據(jù)的檢測

35、功能以及出錯處理情況。但由于功能模塊較多,采用功能測試設計的測試用例比較多,測試花費了一定的時間。七、總 結在做課程設計之前,我對Android知識的掌握是很有限的,主要來自于課堂上老師授予的,而自己在課后花的時間相對較少。因此有些知識記得不清楚甚至不知道,這就在很大程度上給本次課程設計帶來了很多麻煩,如時間的多余開銷,程序編寫的效率低下,代碼顯得長而復雜等。在本次課程設計的過程中,每一步功能的實現(xiàn)都讓我感到無比高興,哪怕只是一小步。因為每一小點的成功都能讓我學到并掌握許多的知識。SQLite 數(shù)據(jù)庫的實現(xiàn)是一個非常艱難的過程,但成功連接的那一刻真的是難以言說的激動。通過TimeThread類

36、實現(xiàn)游戲的計時,GameOver類實現(xiàn)游戲通關的提示與跳轉,Rank類將存入數(shù)據(jù)庫中的記錄顯示輸出等功能的實現(xiàn)都是本次課程設計中令我感到驕傲的地方,也是收獲最多的地方。通過這次課程設計,讓我意識到自己和周圍的同學存在著很大的差距,小到Android中語句的定義,我都需要重新去學習。因此我比別人花的更多的時間,浪費了更多的精力,但這些都是值得的,因為這一過程中我學到了許多知識。通過本次課程設計讓我進一步熟悉了Android的編程,進一步掌握各種程序調試方法,進一步了解和學習了良好的程序設計風格,受益匪淺!本次課程設計的基本成功是在老師的辛勤幫助下才得以實現(xiàn),在此感謝張琳老師給我提供了這一個實踐動

37、手的機會以及給予我們的悉心指導和幫助,同時也感謝幫助我的各位同學,因為有他們的提醒和建議,才有了我本次課程設計的成功。八、參考文獻1 Ed Burnette著,田俊靜,張波,黃湘清譯.Android基礎教程(第3版修訂版)M.北京:人民郵電出版社.20112 Nicolas Gramlich,張勁鋒.Android編程入門教程andbook中文版M.北京:人民郵電出版社.20103 吳亞峰,索依娜.Android核心技術與實例詳解M.北京:電子工業(yè)出版社.20104 Rogers Cadenhead,Laura Lemay.21天學通Java 2M.北京:民郵電出版社.2004 5 (第五版)

38、M.北京:清華大學出版社,20086 李鐘尉,周小彤,陳丹丹.Java從入門到精通(第2版)M.北京:清華大學出版社,20107 郭宏志.android8Mars.千鋒3G學院android游戲開發(fā)教程DB/OL. 附 錄(部分代碼)主程序代碼:import org.example.sudoku.Game;import android.app.Activity;import android.app.AlertDialog;import android.app.AlertDialog.Builder;import android.content.DialogInterface;import an

39、droid.content.Intent;ndle;import android.util.Log;import android.view.KeyEvent;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;public class Sudoku extends Activity implements OnClickListener priv

40、ate static final String TAG = Sudoku; public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); / Set up click listeners for all the buttons View continueButton = findViewById(R.id.continue_button); continueButton.setOnClickListener(this); Vie

41、w newButton = findViewById(R.id.new_button); newButton.setOnClickListener(this); View aboutButton = findViewById(R.id.about_button); aboutButton.setOnClickListener(this); View exitButton = findViewById(R.id.exit_button); exitButton.setOnClickListener(this); View rankButton=findViewById(R.id.rank_but

42、ton); rankButton.setOnClickListener(this); protected void onResume() super.onResume(); Music.play(this, R.raw.main); protected void onPause() super.onPause(); Music.stop(this); public void onClick(View v) switch (v.getId() case R.id.continue_button: Intent c=new Intent(this,Game.class); c.putExtra(G

43、ame.KEY_DIFFICULTY, -1); startActivity(c); break; case R.id.about_button: Intent i = new Intent(this, About.class); startActivity(i); break; case R.id.new_button: openNewGameDialog(); break; case R.id.rank_button: Intent t=new Intent(this,Rank.class); startActivity(t); Log.d(ttt, intent go); break;

44、case R.id.exit_button: exit(); break; public boolean onCreateOptionsMenu(Menu menu) super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); return true; public boolean onOptionsItemSelected(MenuItem item) switch (item.getItemId() case R.id.set

45、tings: startActivity(new Intent(this, Prefs.class); return true; return false; /* Ask the user what difficulty level they want */ private void openNewGameDialog() new AlertDialog.Builder(this) .setTitle(R.string.new_game_title) .setItems(R.array.difficulty, new DialogInterface.OnClickListener() publ

46、ic void onClick(DialogInterface dialoginterface, int i) startGame(i); ) .show(); /* Start a new game with the given difficulty level */ private void startGame(int i) Log.d(TAG, clicked on + i); Intent intent = new Intent(Sudoku.this, Game.class); intent.putExtra(Game.KEY_DIFFICULTY, i); startActivity(intent); public void exit() AlertDialog.Builder builder = ne

溫馨提示

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

評論

0/150

提交評論