2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩37頁(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è) 論 文</b></p><p>  設(shè)計(jì)(論文)題目: 基于Android 益智拼圖游戲設(shè)計(jì) </p><p><b>  目 錄</b></p><p><b>  摘 要II</b></p><p>  Abstract

2、III</p><p><b>  1 緒 論1</b></p><p>  1.1 課題開(kāi)發(fā)的背景1</p><p>  1.2 課題意義1</p><p>  2 Android架構(gòu)與開(kāi)發(fā)平臺(tái)搭建2</p><p>  2.1 Android的系統(tǒng)架構(gòu)2</p><

3、;p>  2.2 Window下Android開(kāi)發(fā)環(huán)境的搭建4</p><p>  3 流程介紹與概要設(shè)計(jì)5</p><p>  3.1 游戲流程介紹5</p><p>  3.2 系統(tǒng)概要設(shè)計(jì)6</p><p>  3.2.1 界面布局模塊6</p><p>  3.2.2 難度選擇模塊6</

4、p><p>  3.2.3 圖片選擇模塊7</p><p>  3.2.4 步數(shù)和時(shí)間模塊7</p><p>  3.2.5 游戲?qū)崿F(xiàn)模塊7</p><p>  4 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)8</p><p>  4.1 界面布局實(shí)現(xiàn)8</p><p>  4.1.1 選擇界面布局8</

5、p><p>  4.1.2 游戲界面布局9</p><p>  4.2 游戲功能實(shí)現(xiàn)11</p><p>  4.2.1 難度選擇11</p><p>  4.2.2 圖片選擇12</p><p>  4.2.3 步數(shù)和時(shí)間設(shè)置13</p><p>  4.2.4 拼圖的實(shí)現(xiàn)14<

6、/p><p><b>  5 系統(tǒng)測(cè)試17</b></p><p>  5.1 Android仿真器介紹17</p><p>  5.2 功能模塊測(cè)試17</p><p>  5.3 出現(xiàn)的錯(cuò)誤及解決方案20</p><p>  6 總結(jié)與展望21</p><p&g

7、t;<b>  參考文獻(xiàn)22</b></p><p><b>  附 錄23</b></p><p><b>  致 謝33</b></p><p>  基于Android益智拼圖游戲設(shè)計(jì)</p><p><b>  摘 要</b></p>

8、;<p>  隨著移動(dòng)設(shè)備的日益普及,使用Android技術(shù)開(kāi)發(fā)手機(jī)軟件受到越來(lái)越多人的青睞。在此背景下,本課題開(kāi)發(fā)了一款A(yù)ndroid平臺(tái)下的手機(jī)游戲——益智拼圖。</p><p>  本文首先對(duì)Android的研究背景,系統(tǒng)架構(gòu)以及開(kāi)發(fā)環(huán)境進(jìn)行介紹,然后就玩家對(duì)游戲的需求進(jìn)行一定的分析,最后運(yùn)用Android技術(shù)實(shí)現(xiàn)拼圖游戲的開(kāi)發(fā),并合理布局游戲界面,使游戲界面更加美觀和人性化,實(shí)現(xiàn)了游戲的基本

9、功能,最終可以讓玩家享受拼圖游戲的樂(lè)趣。</p><p>  關(guān)鍵詞:Android;拼圖游戲;Activity;架構(gòu) </p><p>  The development and features of Android</p><p><b>  Abstract</b></p><p>  Key words: An

10、droid;Jigsaw puzzle game;Activity;sturcture</p><p><b>  1 緒 論</b></p><p>  1.1 課題開(kāi)發(fā)的背景</p><p>  隨著嵌入式技術(shù)的發(fā)展,手持終端設(shè)備也迅速發(fā)展起來(lái),目前,全球手機(jī)用戶數(shù)已超過(guò)了PC機(jī)用戶數(shù),其中智能手機(jī)的比例越來(lái)越高。智能手機(jī)是指像電腦一樣可以

11、通過(guò)下載、安裝軟件來(lái)拓展基本功能的手機(jī),一般具有智能手機(jī)操作系統(tǒng)。相較于非智能手機(jī),它功能更強(qiáng),處理速度更快?;贚inux的Android手機(jī)操作系統(tǒng),由于具有開(kāi)源、免費(fèi)的特性,迅速得到廣大愛(ài)好者及廠商的支持。目前,移動(dòng)應(yīng)用軟件中的手機(jī)游戲開(kāi)發(fā)是一項(xiàng)非常熱門(mén)的技術(shù)。</p><p>  Android系統(tǒng)對(duì)第三方軟件是開(kāi)放的,這促進(jìn)了第三方軟件的發(fā)展。Android系統(tǒng)以Linux 2.6為核心,其安全機(jī)制比較

12、完善,增強(qiáng)了手機(jī)使用的安全性。Android平臺(tái)已經(jīng)形成由 Google牽頭,OHA組織參與,系統(tǒng)支持商和服務(wù)供應(yīng)商完善搭配的運(yùn)作機(jī)制,為Android平臺(tái)的快速發(fā)展提供了堅(jiān)實(shí)的基礎(chǔ)。</p><p>  由于Android構(gòu)建在開(kāi)源代碼的框架之上,并且提供了強(qiáng)大的SDK庫(kù)和開(kāi)放的理念,所以它為廣大的沒(méi)有任何移動(dòng)應(yīng)用程序開(kāi)發(fā)經(jīng)驗(yàn)的新手開(kāi)辟了一條開(kāi)發(fā)完美移動(dòng)應(yīng)用程序的康莊大道。而富有經(jīng)驗(yàn)的移動(dòng)開(kāi)發(fā)人員現(xiàn)在也可以方便

13、地?cái)U(kuò)展到Android平臺(tái)上來(lái),利用它獨(dú)特的功能來(lái)改進(jìn)現(xiàn)有產(chǎn)品或者開(kāi)發(fā)其他新穎產(chǎn)品。</p><p><b>  1.2 課題意義</b></p><p>  Android軟件在一兩年的時(shí)間內(nèi)已經(jīng)迅速發(fā)展,在各類(lèi)型應(yīng)用系統(tǒng)中都有令用戶滿意的成果,本課題研究的就是基于此背景下Android手機(jī)的一款益智拼圖游戲。通過(guò)該游戲的設(shè)計(jì),將自己學(xué)到的Java,Android方

14、面的理論知識(shí)應(yīng)用于實(shí)踐,提高自己的動(dòng)手能力。在設(shè)計(jì)的過(guò)程中,不斷的修補(bǔ)知識(shí)方面的漏洞,加深自己對(duì)程序設(shè)計(jì)的理解,為將來(lái)從事軟件開(kāi)發(fā)事業(yè)打下基礎(chǔ)。</p><p>  2 Android架構(gòu)與開(kāi)發(fā)平臺(tái)搭建</p><p>  2.1 Android的系統(tǒng)架構(gòu)</p><p>  Android的系統(tǒng)架構(gòu)和其操作系統(tǒng)一樣,采用了分層的架構(gòu)。從圖2.1中可以看出,Andr

15、oid分為四個(gè)層,從高層到低層分別是應(yīng)用程序?qū)印?yīng)用程序框架層、系統(tǒng)運(yùn)行庫(kù)層和Linux核心層。</p><p>  圖2.1 Android系統(tǒng)架構(gòu)圖</p><p><b>  應(yīng)用程序</b></p><p>  Android會(huì)同一系列核心應(yīng)用程序包一起發(fā)布,該應(yīng)用程序包包括Email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人

16、管理程序等。所有的應(yīng)用程序都是使用JAVA語(yǔ)言編寫(xiě)的。</p><p><b>  應(yīng)用程序框架</b></p><p>  開(kāi)發(fā)人員也可以完全訪問(wèn)核心應(yīng)用程序所使用的API框架。該應(yīng)用程序的架構(gòu)設(shè)計(jì)簡(jiǎn)化了組件的重用;任何一個(gè)應(yīng)用程序都可以發(fā)布它的功能塊并且任何其它的應(yīng)用程序都可以使用其所發(fā)布的功能塊(不過(guò)得遵循框架的安全性限制)。同樣,該應(yīng)用程序重用機(jī)制也使用戶可以

17、方便的替換程序組件。</p><p>  隱藏在每個(gè)應(yīng)用后面的是一系列的服務(wù)和系統(tǒng), 其中包括;</p><p>  豐富而又可擴(kuò)展的視圖(Views):可以用來(lái)構(gòu)建應(yīng)用程序,它包括列表(lists),網(wǎng)格(grids),文本框(text boxes),按鈕(buttons),甚至可嵌入的web瀏覽器。</p><p>  內(nèi)容提供器(Content Provide

18、rs):使得應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)據(jù)庫(kù)),或者共享它們自己的數(shù)據(jù)。</p><p>  資源管理器(Resource Manager):提供非代碼資源的訪問(wèn),如本地字符串,圖形,和布局文件(layout files)。</p><p>  通知管理器(Notification Manager):使得應(yīng)用程序可以在狀態(tài)欄中顯示自定義的提示信息。</p>

19、<p>  活動(dòng)管理器(Activity Manager):用來(lái)管理應(yīng)用程序生命周期并提供常用的導(dǎo)航回退功能。</p><p><b>  (3) 系統(tǒng)運(yùn)行庫(kù)</b></p><p><b>  1) 程序庫(kù)</b></p><p>  Android包含一些C/C++庫(kù),這些庫(kù)能被Android系統(tǒng)中不同的組

20、件使用。它們通過(guò) Android應(yīng)用程序框架為開(kāi)發(fā)者提供服務(wù)。以下是一些核心庫(kù):</p><p>  系統(tǒng)C庫(kù):一個(gè)從BSD繼承來(lái)的標(biāo)準(zhǔn)C系統(tǒng)函數(shù)庫(kù)(libc), 它是專(zhuān)門(mén)為基于embedded linux的設(shè)備定制的。</p><p>  媒體庫(kù):基于PacketVideo OpenCORE,該庫(kù)支持多種常用的音頻、視頻格式回放和錄制,同時(shí)支持靜態(tài)圖像文件。編碼格式包括MPEG4,H.2

21、64,MP3,AAC,AMR,JPG,PNG。</p><p>  Surface Manager:對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提供了2D和3D圖層的無(wú)縫融合。</p><p>  LibWebCore:一個(gè)最新web瀏覽器引擎用,支持Android瀏覽器和一個(gè)可嵌入的web視圖。</p><p>  SGL:底層的2D圖形引擎。</p>&

22、lt;p>  3D libraries:基于OpenGL ES 1.0 APIs實(shí)現(xiàn);該庫(kù)可以使用硬件3D加速(如果可用)或者使用高度優(yōu)化的3D軟加速。</p><p>  FreeType:位圖(bitmap)和矢量(vector)字體顯示。</p><p>  SQLite:一個(gè)對(duì)于所有應(yīng)用程序可用,功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫(kù)引擎。</p><p>  2

23、) Android 運(yùn)行庫(kù)</p><p>  Android包括了一個(gè)核心庫(kù),該核心庫(kù)提供了JAVA編程語(yǔ)言核心庫(kù)的大多數(shù)功能。</p><p>  每一個(gè)Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個(gè)獨(dú)立的Dalvik虛擬 機(jī)實(shí)例。Dalvik被設(shè)計(jì)成一個(gè)設(shè)備可以同時(shí)高效地運(yùn)行多個(gè)虛擬系統(tǒng)。Dalvik虛擬機(jī)執(zhí)行(.dex)的Dalvik可執(zhí)行文件,該格式文件針對(duì)小內(nèi)存使用做

24、了優(yōu)化。同時(shí)虛擬機(jī)是基于寄存器的,所有的類(lèi)都經(jīng)由JAVA編譯器編譯,然后通過(guò)SDK的"dx"工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。</p><p>  Dalvik虛擬機(jī)依賴于Linux內(nèi)核的一些功能,比如線程機(jī)制和底層內(nèi)存管理機(jī)制。</p><p>  (4) Linux內(nèi)核</p><p>  Android的核心系統(tǒng)服務(wù)依賴于Linux 2.

25、6內(nèi)核,如安全性,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動(dòng)模型。Linux內(nèi)核也同時(shí)作為硬件和軟件棧之間的抽象層。</p><p>  2.2 Window下Android開(kāi)發(fā)環(huán)境的搭建</p><p>  為了在PC主機(jī)上得到Android的開(kāi)發(fā)環(huán)境,我們選擇在Windows操作系統(tǒng)中進(jìn)行對(duì)Android開(kāi)發(fā)環(huán)境的搭建,具體步驟如下:</p><p><b>

26、; ?。?)JDK安裝</b></p><p>  首先下載JDK,按照提示安裝成功后,最重要的是進(jìn)行環(huán)境變量的配置,步驟如下:我的電腦->屬性->高級(jí)->環(huán)境變量->系統(tǒng)變量中添加以下環(huán)境變量:</p><p>  Java_HOME值為:C:\Program Files\Java\jdk1.6.0_20(安裝JDK的目錄)</p><p>  CLA

27、SSPATH值為:.;%Java_HOME%lib\tools.jar;%Java_HOME%\lib\dt. jar;%Java _HOME%\bin;</p><p>  Path值:添加C:\Program Files\Java\jdk1.6.0_20\bin;</p><p>  (2)Eclipse安裝可下載一個(gè)綠色版的Eclipse,無(wú)需安裝,和安裝版一樣都能為Android開(kāi)

28、發(fā)提供功能。</p><p> ?。?)Android SDK安裝在Android Developers下載Android-sdk_r07-windows.zip,下載完成后解壓到任意路徑。</p><p>  運(yùn)行SDK Manager.exe,出現(xiàn)如圖以下界面,點(diǎn)擊Available Package。選擇希望安裝的SDK及其文檔或者其它包,點(diǎn)擊Installation Selected

29、、Accept All、Install Accepted,開(kāi)始下載安裝所選包。</p><p>  下載完成后出現(xiàn)如下圖的所有Android-sdk_r07-windows文件夾內(nèi)容;</p><p><b>  (4)ADT安裝</b></p><p>  ADT實(shí)際上是一個(gè)工具,它可以連接sdk和Eclipse,幫助Eclipse找到sdk

30、打開(kāi)Eclipse界面,進(jìn)入進(jìn)入菜單中的“Help”-> “Install New Software”,點(diǎn)擊Add按鈕彈出對(duì)話框要求輸入Name和Location,完成之后,選擇Window >Preferences;在左邊的面板選擇Android,然后在右側(cè)點(diǎn)擊Browse;并選中SDK路徑,本機(jī)為;D:\YJSH\Android\Android-sdk_r07-windows;點(diǎn)擊Apply、OK。配置完成。</p>

31、<p><b> ?。?)創(chuàng)建AVD</b></p><p>  為使Android應(yīng)用程序可以在模擬器上運(yùn)行,必須創(chuàng)建AVD,步驟如下:</p><p>  在Eclipse中,選擇Windows > Android SDK and AVD Manager,點(diǎn)擊左側(cè)面板的Virtual Devices,再右側(cè)點(diǎn)擊New,填入Name,選擇Targe

32、t的API,SD Card大小任意,Skin隨便選,Hardware目前保持默認(rèn)值,點(diǎn)擊CreateAVD即可完成創(chuàng)建AVD。</p><p>  3 流程介紹與概要設(shè)計(jì)</p><p>  3.1 游戲流程介紹</p><p>  根據(jù)拼圖游戲的游戲規(guī)則,本設(shè)計(jì)擬出游戲的大致流程如圖3.1所示:</p><p>  圖3.1 拼圖游戲流程圖

33、</p><p>  3.2 系統(tǒng)概要設(shè)計(jì)</p><p>  本設(shè)計(jì)參考了拼圖游戲流程圖(圖3.1)按照自頂向下的設(shè)計(jì)方式將拼圖游戲分為以下模塊進(jìn)行設(shè)計(jì),如圖3.2所示:</p><p>  圖3.2 拼圖游戲模塊</p><p>  3.2.1 界面布局模塊</p><p>  由于本課題的題材是一款游戲,對(duì)于游戲

34、的界面以及一些基本控件有必要介紹一下。本系統(tǒng)一共有兩個(gè)界面:一個(gè)選擇界面,一個(gè)游戲界面,基本的控件有文本框,下拉列表,網(wǎng)格視圖,按鈕,圖片視圖等。下面簡(jiǎn)單介紹下它們的作用:</p><p>  文本框主要是用來(lái)顯示一些文本,這些文本基本是描述文本框所在位置的功能。</p><p>  下拉列表主要用在了難度選擇部分,當(dāng)玩家點(diǎn)擊難度時(shí),會(huì)出現(xiàn)下拉列表。</p><p>

35、;  網(wǎng)格視圖主要用于圖片選擇部分,利用網(wǎng)格視圖將圖片一一列出,供玩家選擇圖片進(jìn)行游戲。</p><p>  按鈕是兩個(gè)界面的鏈接樞紐,在第一個(gè)選擇界面按下確定按鈕,會(huì)跳轉(zhuǎn)到游戲界面。在游戲界面也設(shè)置了一個(gè)按鈕,主要是給玩家提供“重新游戲”的機(jī)會(huì)。</p><p>  圖片視圖只要用來(lái)顯示圖片,在游戲界面用圖片視圖顯示圖片,供玩家游戲。</p><p>  3.2.

36、2 難度選擇模塊</p><p>  拼圖游戲的難度在于圖片被分割后的塊數(shù),數(shù)量越多,自然難度就越大。</p><p>  (1)難度最小的是將其設(shè)置為3*3 </p><p>  當(dāng)難度設(shè)置為3*3時(shí),系統(tǒng)將圖片分割為3行3列,也就是將圖片分成了9塊。</p><p>  (2)難度最大的是將其設(shè)置為4*4</p><p

37、>  當(dāng)難度設(shè)置為4*4時(shí),系統(tǒng)將圖片分割成4行4列,也就是將圖片分成了16塊。</p><p> ?。?)難度中等的設(shè)置有兩種:3*4 和4*3 </p><p>  當(dāng)難度設(shè)置為3*4時(shí),系統(tǒng)將圖片分割成3行4列,即分成了12塊。</p><p>  當(dāng)難度設(shè)置為4*4時(shí),系統(tǒng)將圖片分割成4行3列,同樣分成了12塊。</p><p>

38、;  3.2.3 圖片選擇模塊</p><p>  圖片選擇步驟相當(dāng)簡(jiǎn)單,只要在選擇界面的圖片選擇區(qū)域,從9張圖片中鼠標(biāo)單擊1張玩家感興趣的圖片即可。</p><p>  3.2.4 步數(shù)和時(shí)間模塊</p><p>  拼圖游戲過(guò)程中,為了增加趣味性,玩家每移動(dòng)一次圖塊,步數(shù)加一,知道游戲全部位置正確,游戲結(jié)束,統(tǒng)計(jì)最后步數(shù);從游戲開(kāi)始,時(shí)間模塊開(kāi)始計(jì)時(shí),直到游戲結(jié)

39、束,時(shí)間停止,并顯示玩家完成游戲所花的時(shí)間。</p><p>  3.2.5 游戲?qū)崿F(xiàn)模塊</p><p>  在完成上述的圖片選擇,難度選擇后就可以開(kāi)始正式的拼圖游戲。</p><p>  玩家選擇“play”后,圖片會(huì)根據(jù)玩家選擇的難度隨機(jī)分解圖片。在本設(shè)計(jì)中,原圖分割后右下角設(shè)置為空白塊,為圖塊的移動(dòng)提供可能。玩家用鼠標(biāo)點(diǎn)擊與空白塊相鄰的圖塊,并將選中的圖片往

40、空白塊拖動(dòng),這樣就完成了空白塊與選中圖片的位置的互換。這樣子循環(huán)往復(fù),知道全部圖塊位置正確,游戲就結(jié)束了。</p><p>  4 系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)</p><p>  4.1 界面布局實(shí)現(xiàn)</p><p>  本設(shè)計(jì)有兩個(gè)界面:選擇界面和游戲界面。界面的設(shè)計(jì)主要運(yùn)用Android的繪圖技術(shù),圖形的繪制通常是在View類(lèi)中完成的,同時(shí)也會(huì)用到各種控件,如:Text

41、View,Button,Spinner,GridView,ImageView。當(dāng)然說(shuō)到控件,容器就不得不提了,兩者是息息相關(guān)的。本設(shè)計(jì)中用到了最常用的LinearLayout容器,控件的布局也用到了相對(duì)布局,絕對(duì)布局等。</p><p>  4.1.1 選擇界面布局</p><p>  選擇界面在main.xml文件中布局,界面效果如圖4.1.1 :</p><p>

42、;  圖4.1.1 選擇界面</p><p>  該界面采用LinearLayout布局,在LinearLayout標(biāo)簽中完成界面設(shè)置。</p><p>  布局設(shè)置:設(shè)置布局排列方式為豎直排列,寬和高的值為填滿,背景顏色為黑色。代碼如下:</p><p>  android:orientation="vertical" </p>

43、<p>  android:layout_width="fill_parent"</p><p>  android:layout_height="fill_parent"</p><p>  下面給出構(gòu)成該界面的一些基本控件的設(shè)置代碼:</p><p>  設(shè)置文本框的高和寬根據(jù)內(nèi)容調(diào)整,文本內(nèi)容從values文

44、件夾中的strings.xml文件中讀取,內(nèi)容為“等級(jí)”:</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_content"</p><p>  android:text="@string/leve

45、l"</p><p>  style="@style/font_20_white_bold"/</p><p>  設(shè)置下拉列表的高和寬根據(jù)內(nèi)容調(diào)整:</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_

46、height="wrap_content"</p><p>  設(shè)置文本框高根據(jù)內(nèi)容調(diào)整,寬為填滿,文本內(nèi)容取自values文件夾下strings.xml文件,內(nèi)容為選擇圖片區(qū):</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_heig

47、ht="wrap_content"</p><p>  android:text="@string/selectPictureArea"</p><p>  style="@style/font_20_white_bold"</p><p>  android:background="@color

48、/slateGray"</p><p>  設(shè)置網(wǎng)格視圖寬和高為填滿: </p><p>  android:layout_width="fill_parent" </p><p>  android:layout_height="fill_parent"</p><p>  設(shè)置按鈕

49、屬性,寬和高為根據(jù)內(nèi)容調(diào)整,按鈕內(nèi)容取自values文件夾的strings.xml文件,內(nèi)容為“確定”:</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_content"</p><p>  android:

50、text="@string/confirm"</p><p>  style="@style/btn_font_17_black"</p><p>  android:layout_gravity="center”</p><p>  4.1.2 游戲界面布局</p><p>  游戲界面在j

51、igsaw.xml文件中布局,界面效果如圖4.1.2:</p><p>  圖4.1.2 游戲界面</p><p>  該界面同樣采用LinearLayout布局,在LinearLayout標(biāo)簽中進(jìn)行基本設(shè)置。</p><p>  布局設(shè)置:高和寬為填滿,排列方式為豎直排列,背景顏色為黑色。代碼如下:</p><p>  android:la

52、yout_width="fill_parent"</p><p>  android:layout_height="fill_parent"</p><p>  android:orientation="vertical"</p><p>  android:background="@color/

53、black"</p><p>  下面給出游戲界面其他控件的設(shè)置內(nèi)容和相關(guān)代碼:</p><p>  設(shè)置文本框的高和寬根據(jù)內(nèi)容調(diào)整,文本框的內(nèi)容取自strings.xml,內(nèi)容為“預(yù)覽”,位置居中:</p><p>  android:layout_width="wrap_content"</p><p>  

54、android:layout_height="wrap_content"</p><p>  android:text="@string/preview"</p><p>  style="@style/font_20_white_bold"</p><p>  android:layout_gravity

55、="center"</p><p>  設(shè)置圖片框高和寬根據(jù)內(nèi)容調(diào)整,圖片取自drawable文件下的pingtu_6 : </p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_content&qu

56、ot;</p><p>  android:src="@drawable/pingtu_6"</p><p>  設(shè)置文本框高和寬根據(jù)內(nèi)容調(diào)整,文本框內(nèi)容取自strings.xml中的level2,內(nèi)容為“等級(jí)”:</p><p>  android:layout_width="wrap_content"</p>

57、<p>  android:layout_height="wrap_content"</p><p>  android:text="@string/level2"</p><p>  style="@style/font_20_white_bold"</p><p>  設(shè)置文本框高和寬根據(jù)內(nèi)

58、容調(diào)整,文本框內(nèi)容取自strings.xml中的stepNum,內(nèi)容為“步數(shù)”:</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_content"</p><p>  android:text="@

59、string/stepNum"</p><p>  style="@style/font_20_white_bold"</p><p>  設(shè)置文本框高和寬根據(jù)內(nèi)容調(diào)整,文本框內(nèi)容取自strings.xml中的time,內(nèi)容為“時(shí)間”: </p><p>  android:layout_width="wrap_conte

60、nt"</p><p>  android:layout_height="wrap_content"</p><p>  android:text="@string/time"</p><p>  style="@style/font_20_white_bold"</p><p

61、>  設(shè)置按鈕高和寬根據(jù)內(nèi)容調(diào)整,文本框內(nèi)容取自strings.xml中的play,內(nèi)容為“play”</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_content"</p><p>  androi

62、d:text="@string/play"</p><p>  android:textSize="14dip"</p><p>  4.2 游戲功能實(shí)現(xiàn)</p><p>  游戲代碼具體運(yùn)行流程是這樣的:游戲啟動(dòng)后,啟動(dòng)MainActivity,接著加載main.xml初始化選擇界面,在完成難度選擇和圖片選擇后,點(diǎn)擊“確定”

63、按鈕,運(yùn)行MainActivity類(lèi)中的監(jiān)聽(tīng)器btnOnClickListener跳轉(zhuǎn)在JigsawActivity,并加載jigsaw.xml文件初始化游戲界面,然后根據(jù)界面上的內(nèi)容進(jìn)行游戲。</p><p>  整個(gè)設(shè)計(jì)過(guò)程中主要完成以下功能:難度選擇,圖片選擇,步數(shù)和計(jì)時(shí)功能,拼圖功能。</p><p>  4.2.1 難度選擇</p><p>  在選擇界面

64、點(diǎn)擊“等級(jí)”后的下拉列表,跳出下拉列表框,供玩家選擇難度,在 MainActivity中導(dǎo)入MainImpl類(lèi)和IMain類(lèi)用于實(shí)現(xiàn)難度選擇。MainImpl類(lèi)中定義了 getLevelAdapter方法,使用List()將四種難度等級(jí)存入列表,以供選擇。</p><p>  getLevelAdapter方法的代碼如下:</p><p>  public ArrayAdapter<

65、String> getLevelAdapter(Context context) {</p><p>  List<String> list=new ArrayList<String>();</p><p>  String[] level=context.getResources().getStringArray(R.array.levelArray);&l

66、t;/p><p>  for(String str:level){</p><p>  list.add(str);</p><p><b>  }</b></p><p>  ArrayAdapter<String> cityArrayAdapter=new ArrayAdapter<String>

67、(context,android.R.layout.simple_spinner_item,list);</p><p>  cityArrayAdapter.setDropDownViewResource(android.R.layout.simple_</p><p>  spinner_dropdown_item);</p><p>  return city

68、ArrayAdapter;</p><p><b>  }</b></p><p>  在MainActivity中給難度選擇定義兩個(gè)監(jiān)聽(tīng)器ItemClickListener,玩家單擊下拉列表,就會(huì)啟動(dòng)ItemClickListener,玩家點(diǎn)擊四個(gè)難度中的一種后又會(huì)啟動(dòng)另一個(gè)監(jiān)聽(tīng)器 ItemSelectedListener。玩家選擇完,選擇的難度將會(huì)傳回Activi

69、ty。</p><p>  監(jiān)聽(tīng)器的簡(jiǎn)單代碼如下: </p><p>  private class ItemSelectedListener implements OnItemSelectedListener{</p><p>  public void onItemSelected(AdapterView<?> adapterView, View v

70、iew, int position,</p><p>  long rowid) {</p><p>  pictureIndex=position;</p><p><b>  }</b></p><p>  public void onNothingSelected(AdapterView<?> arg0

71、) {</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.2.2 圖片選擇</p><p>  選擇界面會(huì)列舉出9種圖片供玩家選擇。圖片列舉功能是由MainActivity中的 showGridView方法和getAllItemsForListV

72、iew方法完成的。showGridView方法獲取屏幕大小,根據(jù)screenWidt和screenHeight自動(dòng)調(diào)整圖片大小,保證界面的美觀。而getAllItemsForListView方法生成動(dòng)態(tài)數(shù)組imageItem,并且傳入數(shù)據(jù),將圖片一一列舉出來(lái)。玩家點(diǎn)擊一張圖片并按下“確定”按鈕時(shí),將選擇的圖片同時(shí)傳遞給JigsawActivity。代碼如下:</p><p>  private void show

73、GridView(){</p><p>  DisplayMetrics dm = new DisplayMetrics();</p><p>  dm = this.getApplicationContext().getResources().getDisplayMetrics();</p><p>  pictureGridView.setColumnWidth

74、((screenWidth-10*4)/3);</p><p>  SimpleAdapter saImageItems = new SimpleAdapter(this, getAllItemsForListView(),R.layout.grid_item,</p><p>  new String[] { "ImageView"},</p><

75、;p>  new int[] { R.id.gridItem_imgView});</p><p>  pictureGridView.setAdapter(saImageItems);</p><p>  pictureGridView.setSelector(R.drawable.menuitemshape);</p><p><b>  }&l

76、t;/b></p><p>  列出9張圖片,并選擇一張圖片進(jìn)行游戲是在getAllItemsForListView()方法中實(shí)現(xiàn)的,在該方法中生成了動(dòng)態(tài)數(shù)組imageItem,將各個(gè)圖片的序號(hào)傳入了數(shù)組中。</p><p>  public List<Map<String, Object>> getAllItemsForListView() {</p&

77、gt;<p>  List<Map<String, Object>> imageItem = new ArrayList<Map<String, Object>>();</p><p>  for (int i=0;i<pictureArray.length;i++) {</p><p>  HashMap<Stri

78、ng, Object> tempMap = new HashMap<String, Object>();</p><p>  tempMap.put("ImageView",pictureArray[i]);// </p><p>  imageItem.add(tempMap);</p><p><b>  }&l

79、t;/b></p><p>  return imageItem;</p><p><b>  }</b></p><p>  4.2.3 步數(shù)和時(shí)間設(shè)置</p><p>  在JigsawActivity的initControls分別給stepNumTV和timeTV做出定義。玩家點(diǎn)擊界面上的“play”按鈕,啟

80、動(dòng)onClick方法,該方法開(kāi)始給步數(shù)和時(shí)間賦初值。關(guān)于時(shí)間設(shè)置,還給出了時(shí)間的分秒設(shè)置。這是在timeParser方法中實(shí)現(xiàn)的,每過(guò)60秒,分鐘加1。游戲過(guò)程中圖片移動(dòng)一次,步數(shù)加1。具體實(shí)現(xiàn)如下:</p><p>  在游戲過(guò)程中,秒數(shù)一直在加一,這一實(shí)現(xiàn)體現(xiàn)在GameRunable 類(lèi)中的run方法中。當(dāng)然在秒數(shù)加1之前要先判斷是否為游戲狀態(tài),代碼為:</p><p>  publi

81、c void run() {</p><p>  while(isGaming){ </p><p><b>  try {</b></p><p>  second++; </p><p>  Message msg=new Message();</p><p&

82、gt;  msg.what=TIME_MESSAGE;</p><p>  mHandler.sendMessage(msg);</p><p>  Thread.sleep(1000); //</p><p>  } catch (InterruptedException e) {</p><p>  e.printStackTrace

83、();</p><p><b>  }</b></p><p><b>  }</b></p><p>  步數(shù)和時(shí)間的運(yùn)行都是handleMessage方法中實(shí)現(xiàn),在該方法中通過(guò)switch—case語(yǔ)句實(shí)現(xiàn)判斷。</p><p>  public void handleMessage(andro

84、id.os.Message msg){</p><p>  switch(msg.what){</p><p>  case TIME_MESSAGE:</p><p><b>  break;</b></p><p>  case INIT_MESSAGE:</p><p><b> 

85、 break;</b></p><p><b>  }</b></p><p>  super.handleMessage(msg);</p><p><b>  }</b></p><p>  4.2.4 拼圖的實(shí)現(xiàn)</p><p>  在JigsawActiv

86、ity中進(jìn)行游戲時(shí)首先要解決的問(wèn)題就是圖片的隨機(jī)分割問(wèn)題。該問(wèn)題的解決方案在JigsawView類(lèi)中,JigsawActivity只是導(dǎo)入了該類(lèi)。在該類(lèi)中定義了相當(dāng)多的變量,具體如下:</p><p>  private Bitmap[] oBitamp;//初始化切割后的圖片輸數(shù)組</p><p>  private int row=2;//行</p><p> 

87、 private int col=2;//列</p><p>  private int cutBitmapWidht;//切割后每張位圖的寬</p><p>  private int cutBitmapHeight;//切割后每張位圖的高</p><p>  private float x,y;//當(dāng)然觸發(fā)的X,Y坐標(biāo)</p><p> 

88、 private int offsetW,offsetH;//偏移量寬度\高度</p><p>  private int maxRectW,maxRectH;//最大矩形寬,高</p><p>  private PointF downPoint=new PointF();//觸發(fā)的坐標(biāo)點(diǎn)</p><p>  private PointF currPoint=ne

89、w PointF();//當(dāng)前坐標(biāo)點(diǎn)</p><p>  private int step=0;//步數(shù)</p><p>  private boolean isGameing=false;//是否游戲中</p><p>  該問(wèn)題的解決涉及到隨機(jī)和分割兩個(gè)算法。關(guān)于隨機(jī)的問(wèn)題,算法中使用了randomGenerated 方法,該方法隨機(jī)生成0-n范圍內(nèi)不重復(fù)的數(shù)字

90、,不包含n。在Math類(lèi)中有定義的random方法,因此只需要調(diào)用以下。代碼如下:</p><p>  private void randomGenerated(int n){</p><p>  Vector<Integer> vector=new Vector<Integer>();</p><p>  int[] num=new in

91、t[n];</p><p>  for(int i=0;i<n;i++){</p><p>  int radom = (int)(Math.random()*n); </p><p>  radom = (int)(Math.random()*n);</p><p>  while(vector.contains(radom))

92、{</p><p>  radom = (int)(Math.random()*n);</p><p><b>  }</b></p><p>  vector.add(radom);</p><p>  num[i]=radom;</p><p><b>  }</b>&l

93、t;/p><p>  for(int i=0;i<col;i++){</p><p>  for(int j=0;j<row;j++){</p><p>  Picture picture=new Picture();</p><p>  picture.value=num[i*row+j]; </p>&l

94、t;p>  pictrueArray[j][i]=picture;</p><p>  System.out.println(pictrueArray[j][i].value);</p><p><b>  }</b></p><p><b>  }</b></p><p>  cutBitm

95、ap(mBitmap);</p><p><b>  }</b></p><p>  分割圖片是通過(guò)cutBitmap方法實(shí)現(xiàn)的,定義了cutBitmaoWidth,cutBitmapHeight變量表示分割后圖片的寬和高,并根據(jù)難度選擇的行數(shù)和列數(shù)初始化分割后的圖片數(shù)數(shù)組。具體代碼如下:</p><p>  private void cutB

96、itmap(Bitmap srcBitamp){</p><p>  cutBitmapWidht=srcBitamp.getWidth()/row; //分割后每張位圖的寬。</p><p>  cutBitmapHeight=srcBitamp.getHeight()/col; //分割后每張位圖的高。</p><p>  offsetW=c

97、utBitmapWidht; //偏移量寬度。</p><p>  offsetH=cutBitmapHeight; //偏移量高度。</p><p>  oBitamp=new Bitmap[row*col]; //初始化切割后的圖片數(shù)數(shù)組。</p><p>  for(int i

98、=0;i<col;i++){</p><p>  for(int j=0;j<row;j++){</p><p>  oBitamp[i*row+j]=Bitmap.createBitmap(srcBitamp, cutBitmapWidht*j, cutBitmapHeight*i, cutBitmapWidht, cutBitmapHeight);</p>&

99、lt;p><b>  }</b></p><p><b>  }</b></p><p>  for(int i=0;i<col;i++){</p><p>  for(int j=0;j<row;j++){</p><p>  if((i==(col-1))&&(

100、j==(row-1))){</p><p>  pictrueArray[j][i].bitamp=null; </p><p><b>  }else{</b></p><p>  pictrueArray[j][i].bitamp=oBitamp[pictrueArray[j][i].value];</p><p&g

101、t;<b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  用randomGenerated 方法解決了圖片隨機(jī)分割的問(wèn)題之后,接著就是游戲的運(yùn)行即交換圖片功能的實(shí)現(xiàn)。首先確保鼠標(biāo)點(diǎn)擊并拖動(dòng)圖片有效,然后實(shí)現(xiàn)圖片的交換。為確保鼠標(biāo)點(diǎn)擊

102、和拖動(dòng)有效,定義onTouchEvent方法進(jìn)行活動(dòng)的判斷,該方法中定義了x,y兩個(gè)變量表示坐標(biāo),來(lái)顯示鼠標(biāo)點(diǎn)擊的位置。</p><p>  onTouchEvent方法中定義了如下兩個(gè)變量:</p><p>  x=event.getX();</p><p>  y=event.getY();</p><p>  通過(guò)如下語(yǔ)句實(shí)現(xiàn)判斷鼠標(biāo)的

103、活動(dòng):按下(MotionEvent.ACTION_DOWN),離開(kāi)(MotionEvent.ACTION_UP),移動(dòng)(MotionEvent.ACTION_MOVE)。</p><p>  if(!((x<=maxRectW)&&(y<=maxRectH))){</p><p>  return false;</p><p><b

104、>  }</b></p><p>  switch(event.getAction()){</p><p>  case MotionEvent.ACTION_DOWN:{ </p><p><b>  }</b></p><p>  case MotionEvent.ACTION_UP:{

105、 </p><p><b>  }</b></p><p>  case MotionEvent.ACTION_MOVE:{ </p><p><b>  }</b></p><p><b>  }</b></p><p>  re

106、turn super.onTouchEvent(event);</p><p><b>  }</b></p><p>  交換圖片的動(dòng)作由swapPicture方法實(shí)現(xiàn),交換代碼簡(jiǎn)單如下: </p><p>  int value;</p><p>  value=picture1.value; &

107、lt;/p><p>  picture1.value=picture2.value; </p><p>  picture2.value=value; </p><p><b>  5 系統(tǒng)測(cè)試</b></p><p>  5.1 Android仿真器介紹</p><p>

108、;  仿真器是在計(jì)算機(jī)中運(yùn)行的一個(gè)虛擬的移動(dòng)裝置,用它來(lái)設(shè)計(jì)、調(diào)試應(yīng)用。</p><p>  ADT是一個(gè)用于開(kāi)發(fā)Android應(yīng)用的eclipse插件,它方便了我們的開(kāi)發(fā)。例如,它讓我們方便從eclipse內(nèi)部訪問(wèn)DDMS工具(可用于截屏,管理port-forwarding,設(shè)斷點(diǎn),查看線程和進(jìn)程信息)</p><p>  DDMS(Dalvik Debug Monitor Servic

109、e)和Dalvik虛擬機(jī)集成,將在IDE和模擬器起到一個(gè)轉(zhuǎn)發(fā)服務(wù)。用它能管理仿填器或者設(shè)備的進(jìn)程,并且輔助調(diào)試。你可用它殺死進(jìn)程,選擇某一進(jìn)程去DEBUG,產(chǎn)生TRACE數(shù)據(jù),查看堆和線程信息等等。</p><p>  Aapt(Andvoid Asset Packaging Tool),用于創(chuàng)建.apk文件。</p><p>  Aidl(Andvoid Interface Descri

110、ption Language)用于產(chǎn)生代碼。</p><p>  Sqlite3用于訪問(wèn)SQLite數(shù)據(jù)文件。</p><p>  Traceview用于查看LOG信息</p><p>  Dx工具用于重寫(xiě).class字節(jié)碼到Andvoid字節(jié)碼。</p><p>  ActivityCreator用于產(chǎn)生ant文件的腳本。當(dāng)然,若用ecli

111、pse插件就不需要它了。</p><p>  5.2 功能模塊測(cè)試</p><p>  在虛擬器上完成一次拼圖游戲,即可測(cè)試出本設(shè)計(jì)是否已經(jīng)完成。下面給出各個(gè)功能模塊的測(cè)試過(guò)程,若這些功能在模擬器上都能得到體現(xiàn),則說(shuō)明本設(shè)計(jì)基本成功。</p><p>  1) 難度選擇模塊:</p><p>  在選擇界面點(diǎn)擊“等級(jí)”下拉框,選擇一個(gè)難度,

112、按下“確定”按鈕后跳轉(zhuǎn)到游戲界面,在游戲界面的文本框“等級(jí)”下顯示出玩家選擇的難度。</p><p><b>  界面如下:</b></p><p>  圖5.2.1 難度選擇模塊</p><p>  2) 圖片選擇模塊:</p><p>  在選擇界面點(diǎn)擊一張圖片,按下“確定”按鈕后跳轉(zhuǎn)到游戲界面,在游戲界面的圖片框中

113、顯示玩家選擇的圖片。</p><p><b>  界面如下:</b></p><p>  圖5.2.2 圖片選擇模塊</p><p>  3) 步數(shù)和時(shí)間設(shè)置模塊:</p><p>  在游戲界面,點(diǎn)擊“play”按鈕后,時(shí)間開(kāi)始自加1秒,每移動(dòng)一個(gè)圖塊,步數(shù)一欄加1 。</p><p><

114、b>  界面如下:</b></p><p>  圖5.2.3 步數(shù)和時(shí)間設(shè)置模塊</p><p>  4) 游戲?qū)崿F(xiàn)模塊:</p><p>  在游戲界面,點(diǎn)“play”按鈕后,鼠標(biāo)點(diǎn)擊圖塊并拖動(dòng),能與空白圖塊交換位置。當(dāng)圖片拼成原樣時(shí),彈出窗口提示游戲結(jié)束。</p><p><b>  界面如下:</b&g

115、t;</p><p>  圖5.2.4 游戲?qū)崿F(xiàn)模塊</p><p>  5.3 出現(xiàn)的錯(cuò)誤及解決方案</p><p>  完成系統(tǒng)的過(guò)程中不可避免的出現(xiàn)了一些問(wèn)題,通過(guò)自我學(xué)習(xí)和他人指導(dǎo),最終解決了這些問(wèn)題。具體錯(cuò)誤和解決方案如下表5.1:</p><p>  表5.1 錯(cuò)誤及解決方案對(duì)照表</p><p><

116、;b>  6 總結(jié)與展望</b></p><p>  大學(xué)四年學(xué)習(xí)的編程思想和編程技巧,在最后的畢業(yè)設(shè)計(jì)當(dāng)中得到了運(yùn)用。經(jīng)過(guò)此次畢業(yè)設(shè)計(jì),充分認(rèn)識(shí)到了自己編程能力方面的缺陷,感覺(jué)到自己的基礎(chǔ)比較薄弱。但在這段時(shí)間里,我不斷地發(fā)現(xiàn)自己的問(wèn)題,并且找出問(wèn)題產(chǎn)生的原因,根據(jù)相關(guān)的方法解決問(wèn)題。幾個(gè)月的努力沒(méi)有白費(fèi),終于基本上完成拼圖游戲的功能,雖然還有不少不足,我將不斷的完善它。</p>

117、<p>  做一個(gè)完整的系統(tǒng)之前,必須先對(duì)該系統(tǒng)進(jìn)行需求分析,擬好系統(tǒng)需要達(dá)到的功能和系統(tǒng)的所有需求,并且畫(huà)出系統(tǒng)的大體設(shè)計(jì)流程圖和框架。做完這些準(zhǔn)備工作,做系統(tǒng)的時(shí)候才會(huì)得心應(yīng)手。想到那里就做到那里,不僅效率不高,還會(huì)影響到系統(tǒng)的可用性。</p><p>  完成系統(tǒng)之后才發(fā)現(xiàn),對(duì)于軟件設(shè)計(jì),要想做到得心應(yīng)手,必須多多練習(xí)。只有寫(xiě)夠足夠多的代碼,才能真正理解軟件設(shè)計(jì)的思想及運(yùn)用。當(dāng)然要做到這一步,要

118、付出相當(dāng)多的努力,在沒(méi)有做到之前,遇到不懂的地方就要多參考資料,請(qǐng)教別人。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] (美)Eric J.Baucle.軟件設(shè)計(jì)——從程序設(shè)計(jì)到體系結(jié)構(gòu)[M].李仁發(fā)等譯.北京: 電子工業(yè)出版社,2007.</p><p>  [2] 孔令德.畢業(yè)設(shè)計(jì)案例教程——從系統(tǒng)開(kāi)發(fā)到論

119、文寫(xiě)作[M].北京:國(guó)防工業(yè)出版社,2007.</p><p>  [3] (美)威爾頓,麥可匹克.JavaScript入門(mén)經(jīng)典(第3版)[M].北京 施宏斌譯.北京:清華大學(xué)出版社,2009.</p><p>  [4] E2ECloud工作室.深入淺出Google Android[M].北京:人民郵電出社,2009.08.</p><p>  [5] 余志

120、龍等.Android SDK開(kāi)發(fā)范例大全[M].北京:人民郵電出版社.2009.</p><p>  [6] 姚尚朗,靳巖.Google Android開(kāi)發(fā)入門(mén)與實(shí)踐 [M].北京:人民郵電出版社,2009.</p><p>  [7] 余志龍等.Google Android SDK開(kāi)發(fā)范例大全(第二版)[M].北京:人民郵電出版社,2010.</p>

121、<p>  [8] 李船戊.智能手機(jī)原理與未來(lái)發(fā)展[J].科技與生活,2010,第1卷5(期).</p><p>  [9] (美)墨菲.Android開(kāi)發(fā)入門(mén)教程[M].北京:人民郵電出版社,2010.</p><p>  [10] 郭宏志.Android應(yīng)用開(kāi)發(fā)詳解[M].北京:電子工業(yè)出版社,2010.</p><p>  [11] 熊剛.

溫馨提示

  • 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)論