freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android平臺的數(shù)獨游戲的設(shè)計畢業(yè)設(shè)計論文-資料下載頁

2025-02-26 08:29本頁面
  

【正文】 能存儲基本數(shù)據(jù)類型。實際上SharedPreferences是采用 XML格式將數(shù)據(jù)存儲到設(shè)備中,在 DDMS中的 File Explorer 中的 /data/data/package name/shares_prefs 路徑下。 本科生畢業(yè)設(shè)計(論文) 38 getPreferences()方法與 getSharedPreferences()方法的功能基本相同,只是 getPreferences()方法默認使用當前 Activity命名存儲 XML文件,而不能指定存儲 XML 文件的名稱。 getPreferences()使用方法為: //保存狀態(tài)數(shù)值 getPreferences(int mode).edit().putString(String key, String defValue).mit()。 //獲取狀態(tài)數(shù)值 getPreferences(int mode).getString(String key, String defValue)。 本游戲中需要保存與恢復(fù)的狀態(tài)值有:未完成的數(shù)獨謎題,原始數(shù)獨謎題對應(yīng)的標記數(shù)組,上次游戲所用時間,上次游戲填入數(shù)字次數(shù),上次游戲的數(shù)獨謎題關(guān)卡數(shù)組。 當從 Intent 對象中提前到數(shù)獨謎題后,我們創(chuàng)建 PuzzleView 類的一個實例,用 Puzzleview 類作為新的視圖內(nèi)容。這是一個完全自定義的視圖,因此使用代碼實現(xiàn)比 XML 實現(xiàn)更容易。接下來,具體講述 PuzzleView 類的創(chuàng)建。 自定義 View 的第一步,構(gòu)造函數(shù)的 實現(xiàn)。我們引用 GameActivity 類,并通過設(shè)置選項允許用戶在視圖中輸入。 =(GameActivity)context。 setFocusable(true)。 setFocusableInTouchMode(true)。 本科生畢業(yè)設(shè)計(論文) 39 通過實現(xiàn) onSizeChanged()方法,來計算屏幕上每個單元格的大小,其寬度和高度分別等于整個視圖高度和寬度的 1/9。該方法在視圖被創(chuàng)建并且Android 確定了視圖大小以后被調(diào)用 [9]。 每次需要更新視圖的任何部分時, Android 就會調(diào)用視圖的 onDraw()方法。 onDraw()方法的內(nèi)容如下: protected void onDraw(Canvas canvas) { Paint background = new Paint()。 //畫背景圖 (getResources().getColor(ckground))。 (0, 0, getWidth(), getHeight(),background)。 //畫網(wǎng)格線 //畫每一格 的網(wǎng)格線 for(int i = 0。 i 9。 i++){ // 使用方法 public void drawLine(float startX, float startY, float //stopX, float stopY, Paint paint) {} ?? } //畫小宮格框的網(wǎng)格線 for(int i = 0。 i 9。 i+=3){ 本科生畢業(yè)設(shè)計(論文) 40 ?? . } //畫數(shù)字 //將數(shù)字畫在 格子的正中間 FontMetrics fm = ()。 float X = width / 2。 //確定 Y方向時,使單元格的中點與數(shù)字的中點對齊 //而不是與數(shù)字的基線對齊 float Y = height / 2 ( + ) / 2。 for(int i = 0。 i 9。 i++){ for(int j = 0。 j 9。 j++){ ((i, j), i * width + X, j * height + Y, foreground)。 } } //定義和更新選定區(qū)域 Paint selected = new Paint()。 (getResources().getColor(cted))。 (selRect, selected)。 本科生畢業(yè)設(shè)計(論文) 41 if((getContext())){ //如果玩家設(shè)定了顏色提示 //定義一個顏色數(shù)組,分別顯示可用數(shù)字數(shù)目不同的顏色 //遍歷所有單元格,通過計算出來的不可用數(shù)字的數(shù)組 //計算當前格可用數(shù)字的個數(shù),根據(jù)計算的值設(shè)定不同的顏色 } (canvas)。 } 界面繪制完成后,我們只需要處理點擊時間,定義一個 KeyPad 類,繼承自 Dialog 類,監(jiān)聽整個 PuzzleView,當有點擊或者觸摸操作時,根據(jù) 玩家設(shè)定是否選擇鍵盤提示的選項,顯示鍵盤,具體控制詳見 節(jié)。游戲界面繪制完成后的效果圖如圖 所示。 本科生畢業(yè)設(shè)計(論文) 42 圖 游戲界面效果圖 若玩家未開啟鍵盤輔助提示或者在開啟鍵盤輔助而且當前選擇數(shù)字合理的情況下,每次玩家填入數(shù)字時,程序都會檢測游戲是否結(jié)束,判斷結(jié)束的方法為 isGameOver(),下面來分析該方法的實現(xiàn)。 private int isGameOver(int[] puz){ //傳入當前 數(shù)獨謎題 for(int i = 0。 i 9。 i++){ for(int j = 0。 j 9。 j++){ if(getTile(i, j) == 0) //還有未填入的空時 return 0。 //返回 0,表示數(shù)字未填滿 本科生畢業(yè)設(shè)計(論文) 43 } } int c[]。 for(int i = 0。 i 9。 i++){ c = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0}。 for(int j = 0。 j 9。 j++){ int t = getTile(i, j)。 //取出當前格子處的數(shù)字 c[t 1] ++。 //取出的數(shù)字作為數(shù)組 c的下標,對應(yīng)數(shù)組元素加 1 if(c[t 1] 1) { //測試數(shù)組元素值是否大于 1 return 1。 //豎排錯誤 } } } ?? //同樣方法檢測橫排和小方格中數(shù)組,不符合要求時分別返回 2和 3 ?? } return 4。//所有檢測都通過時,返回數(shù)值 4 } 判斷 isGameOver 的返回值,當返回值為 4 時,表示玩家成功完成當前謎題。啟動游戲成功界面時,傳入游戲完成時間,游戲填入數(shù)字次數(shù),本本科生畢業(yè)設(shè)計(論文) 44 次游戲所得分數(shù),本游戲關(guān)卡的最高分數(shù),以及游戲關(guān)卡的數(shù)值。 游戲計分規(guī)則:游戲所用時間 — 游戲填入數(shù)字次數(shù) +游戲需要填空的次數(shù)。 最高分數(shù)記錄方法:當游戲完成時,取出使用 SharedPreferences 存儲的對應(yīng)關(guān)卡的最高分數(shù),與當前分數(shù)比較,若小于當前分數(shù),則將當前分數(shù)賦值給最高分數(shù),并再次使用 SharedPreferences 存儲,其流程圖如圖 所示。 游 戲 結(jié) 束取 出 當 前 關(guān) 卡已 存 儲 的最 高 分判 斷 此 關(guān) 卡 是 否存 儲 過 最 高 分是設(shè) 置 最 高 分 為默 認 值 0最 高 分判 斷 最 高 分 是 否大 于 當 前 得 分存 儲 最 高 分完 成否將 當 前 得 分 賦值 給 最 高 分是否圖 最高分數(shù)記錄流程圖 類負責(zé)游戲成功信息顯示,布局文件采用 LinearLayout與 RelativeLayout 相結(jié)合。 LinearLayout 顧名思義表示這個容器把它的子視圖按照垂直或者水平方向單向排列; RelativeLayout 即為相對布局,比線性布局更加靈活,也同樣更加復(fù)雜 [8]。其布局結(jié)構(gòu)圖如圖 所示,實際顯示效果如圖 , 所示 本科生畢業(yè)設(shè)計(論文) 45 圖 游戲成功布局結(jié)構(gòu)圖 本科生畢業(yè)設(shè)計(論文) 46 圖 游戲成功 效果圖一 圖 游戲成功效果圖二 獲得 GameActivity 傳入的值顯示到布局文件指定的位置,并且比較游戲最高分和當前分數(shù),分別顯示“你創(chuàng)造了最高分!”和“你離最高分還有一些距離哦!”,提高游戲的趣味性與挑戰(zhàn)性。 另外“返回”按鈕可以返回相同等級的關(guān)卡選擇界面,重新開始另一盤游戲?!跋乱魂P(guān)”按鈕根據(jù)當前關(guān)卡數(shù)值選擇合適的關(guān)卡進行跳轉(zhuǎn),增加了游戲的體驗感與便利性。 在 Android 開發(fā)過程中,有時候我們需要保存一些簡單的軟件配置等本科生畢業(yè)設(shè)計(論文) 47 數(shù)據(jù)的信息,而如 果我們直接用數(shù)據(jù)庫存儲的話又不太方便,在這里我們使用 SharedPreferences。 SharedPreferences 保存的數(shù)據(jù)主要是類似于配置信息格式的數(shù)據(jù),因此保存的數(shù)據(jù)主要是簡單類型的鍵值對(key/value),它保存的是一個 XML 文件。 (1)音樂控制實現(xiàn) Android 提供了方便的工具來定義所有程序的首選項,并定義在幾乎不需要編寫代碼的情況下如何顯示這些首選項 [9]。本游戲提供了音樂控制,中英文選擇,顏色提示,鍵盤提示四個設(shè)置項。下面是 res/xml/的資源文件中的 部分內(nèi)容。 ?xml version= encoding=utf8? PreferenceScreen xmlns:android= android:title=@string/settings_title CheckBoxPreference android:key=music android:title=@string/music_title android:summary=@string/music_summary android:defaultValue=true / /PreferenceScreen 定 義 一 個 繼 承 自 PreferneceActivity 類的 Prefs 類,其中addPreferencesFromResource()方法從 XML 文件中讀取 settings 定義,并將其解壓縮到當前活動的視圖中。所有耗時的解壓縮工作都在本科生畢業(yè)設(shè)計(論文) 48 PreferenceActivity 類中處理。部分代碼如下: public class Prefs extends PreferenceActivity{ //Option names and default values選項名稱和默認值 private static final String OPT_MUSIC = music。 private static final boolean OPT_MUSIC_DEF = true。 protected void onCreate(Bundle savedInstanceState){ (savedInstanceState)。 addPreferencesFromResource()。 } /*獲取音樂的當前值 */ public static boolean getMusic(Context context) { return (context). getBoolean(OPT_MUSIC,OPT_MUSIC_DEF)。 } 通過 Prefs 中對應(yīng)的方法即可知道玩家對游戲的設(shè)置,比如音 樂播放,通過 ()方法,我們就可以獲得玩家希望播放音樂或者關(guān)閉音樂的意愿,從而控制游戲過程中音樂的播放。音樂播放控制通常放在Activity 的 onPause()和 onResume()方法中。 //播放音樂 public static void play(Context context,int resource){ 本科生畢業(yè)設(shè)計(論文) 49 stop(context)。 if((context)){ mp = (context, resource)。 (true)。 ()。 } } //停止音樂的播放 public static void stop(Context context) { if(mp != null){ ()。 ()。 mp = null。 } } (2)語言選擇實現(xiàn) 語言切換是衡量一個軟件是否考慮周全,是否成熟的標準之一。數(shù)獨游戲通過設(shè)置項中對中英文的選擇,可以方便的切換游戲語言環(huán)境。 偏向于使用者的喜好,本游戲沒有根據(jù)手機操作系統(tǒng)當前語
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1