版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 嵌入式課程設(shè)計(jì)報(bào)告書(shū)</p><p> 中文題目: 嵌入式終端應(yīng)用程序開(kāi)發(fā)-五子棋(安卓版) </p><p> 英文題目: Embedded terminal application development gobang (Android)
2、</p><p> 姓 名: </p><p> 學(xué) 號(hào): </p><p> 專業(yè)班級(jí): </p><p> 指導(dǎo)老師: </p><p>
3、; 提交日期: </p><p><b> 教務(wù)處制</b></p><p> 嵌入式終端應(yīng)用程序開(kāi)發(fā)-五子棋(安卓版)</p><p> 作者姓名: 專業(yè)班級(jí): 指導(dǎo)老師: </p><p><b> 摘 要<
4、/b></p><p> 如今網(wǎng)絡(luò)休閑游戲發(fā)展迅速,它憑借健康、方便、互動(dòng)性強(qiáng)、益智等諸多優(yōu)點(diǎn),成為大部分現(xiàn)代人休閑娛樂(lè)的首選,而五子棋作為簡(jiǎn)單的益智類的游戲已被大眾認(rèn)可及喜愛(ài)。</p><p> 本文將研究五子棋的設(shè)計(jì)開(kāi)發(fā),下文將從可行性研究,需求分析,系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),移植與測(cè)試等四個(gè)主要方面進(jìn)行講解本次五子棋開(kāi)發(fā)的主要過(guò)程。其中的重點(diǎn)在于移植這一塊,因?yàn)楸疚淖龅氖乔度胧降拈_(kāi)發(fā)
5、。所以下文會(huì)重點(diǎn)介紹開(kāi)發(fā)的安裝包怎么移植到Android系統(tǒng)里面,再加上必要的配置,使其成為系統(tǒng)自帶的軟件,并且會(huì)詳細(xì)說(shuō)明怎么樣燒寫Android內(nèi)核,Android系統(tǒng)以及Android文件系統(tǒng)到ARM開(kāi)發(fā)板上。</p><p> 關(guān)鍵詞:五子棋,嵌入式,移植 </p><p> Embedded terminal application development gobang (An
6、droid)</p><p> Author: Specialty: Tutor: </p><p><b> Abstract</b></p><p> Now online leisure game development is rapid, it reli
7、es on healthy, convenient, interactive, educational, and many other advantages, be the first choice of the most modern leisure entertainment, the gobang as a simple puzzle games has been the public recognition and love.&
8、lt;/p><p> This paper will research the design and development, gobang below will be taken from feasibility study, demand analysis, system design and implementation, transplantation and testing the four main a
9、spects, such as to explain the main process of the development of the gobang. This block, which is focused on transplantation because do is embedded development in this paper. So the article will focus on the development
10、 of the installation package how to transplant the Android system, plus the necess</p><p> Key words: gobang, embedded, transplant</p><p><b> 目 錄</b></p><p><b>
11、; 摘 要2</b></p><p> Abstract3</p><p><b> 一、緒論5</b></p><p><b> 1.1 前 言5</b></p><p> 1.2 課題研究的意義和目的6</p><p> 1.3 可行性
12、研究7</p><p> 1.3.1 技術(shù)可行性7</p><p> 1.3.2 經(jīng)濟(jì)可行性8</p><p> 1.3.3 操作可行性8</p><p> 二、開(kāi)發(fā)工具、環(huán)境及其技術(shù)9</p><p> 2.1 嵌入式開(kāi)發(fā)簡(jiǎn)介9</p><p> 2.2 JAVA簡(jiǎn)介
13、9</p><p> 2.3 eclipse簡(jiǎn)介9</p><p> 2.4 ARM開(kāi)發(fā)板相關(guān)知識(shí):9</p><p><b> 三、需求分析10</b></p><p> 3.1 五子棋解釋10</p><p> 3.2 五子棋基本規(guī)則10</p><p&
14、gt; 3.3 業(yè)務(wù)需求10</p><p> 3.3.1 此系統(tǒng)使用范圍要求10</p><p> 3.3.2 功能要求10</p><p> 3.4 性能需求11</p><p> 3.5 系統(tǒng)平臺(tái)需求11</p><p> 四、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)11</p><p>
15、 4.1 系統(tǒng)設(shè)計(jì)思路11</p><p> 4.2 開(kāi)發(fā)環(huán)境的搭建13</p><p> 4.2.1安裝必備的系統(tǒng)庫(kù)和工具13</p><p> 4.2.2 安裝交叉編譯器13</p><p> 4.2.3 安裝java614</p><p> 4.2.4 安裝文件系統(tǒng)壓制工具14</p&
16、gt;<p> 4.2.5 Eclipse壓縮包解壓14</p><p> 4.2.6 Eclipse環(huán)境設(shè)置及新建一個(gè)AVD14</p><p> 4.3 系統(tǒng)開(kāi)發(fā)過(guò)程16</p><p> 五、移植與測(cè)試17</p><p> 5.1 編譯Android內(nèi)核17</p><p>
17、 5.2 編譯Android系統(tǒng)19</p><p> 5.3 制作Android文件系統(tǒng)鏡像19</p><p> 5.3.1 解壓文件系統(tǒng)19</p><p> 5.3.2 五子棋移植及制作文件系統(tǒng)19</p><p> 5.4 開(kāi)發(fā)板SD啟動(dòng)卡制作20</p><p> 5.4.1 u-boo
18、t編譯20</p><p> 5.4.2 SD啟動(dòng)卡制作20</p><p> 5.5 燒寫Android系統(tǒng)到開(kāi)發(fā)板21</p><p> 5.5.1燒寫u-boot21</p><p> 5.5.2燒寫Android內(nèi)核鏡像21</p><p> 5.5.3燒寫文件系統(tǒng)鏡像22</p&g
19、t;<p> 5.5.4燒寫LOGO鏡像22</p><p><b> 5.6 測(cè)試23</b></p><p> 六、總結(jié)與展望25</p><p><b> 6.1 總結(jié)25</b></p><p><b> 6.2 展望26</b><
20、;/p><p><b> 參考文獻(xiàn)26</b></p><p><b> 附錄:26</b></p><p><b> 所有源碼26</b></p><p><b> 一、緒論</b></p><p><b>
21、 1.1 前 言</b></p><p> 電腦已經(jīng)深入到日常工作和生活的方方面面,比如文字處理、信息管理、輔助設(shè)計(jì)、圖形圖像處理、教育培訓(xùn)以及游戲娛樂(lè)等。Windows系統(tǒng)的推出使電腦從高雅的學(xué)術(shù)殿堂走入了尋常百姓家,各行各業(yè)的人們無(wú)須經(jīng)過(guò)特別的訓(xùn)練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了花樣繁多的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開(kāi)發(fā)適合自己
22、特殊需求的軟件。Java語(yǔ)言作為一種面向?qū)ο蟮木幊陶Z(yǔ)言,具有分布式,可移植,高性能,多線程等特點(diǎn)。通過(guò)系統(tǒng)的學(xué)習(xí),人們就可以使用它開(kāi)發(fā)出功能齊全,滿足特殊需求的應(yīng)用程序。Java語(yǔ)言易學(xué)易用,對(duì)學(xué)習(xí)者掌握技能,開(kāi)拓思維都有很大的幫助。</p><p> 隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)技術(shù)的普及范圍越來(lái)越廣,網(wǎng)絡(luò)能夠提供的服務(wù)多樣、便捷,已經(jīng)成為人們生產(chǎn)生活中不可缺少的重要組成部分。如今網(wǎng)絡(luò)休閑游戲發(fā)展迅速,它憑
23、借健康、方便、互動(dòng)性強(qiáng)、益智等諸多優(yōu)點(diǎn),成為大部分現(xiàn)代人休閑娛樂(lè)的首選。</p><p> 五子棋游戲是使用Java語(yǔ)言開(kāi)發(fā)的一款游戲。通過(guò)對(duì)該軟件的編寫,還可以鞏固我們對(duì)以上各種知識(shí)的掌握和理解。</p><p> 1.2 課題研究的意義和目的</p><p> 游戲,作為一種娛樂(lè)項(xiàng)目,在我們現(xiàn)在這樣會(huì)面臨很多壓力的生活中,真的是一類不可或缺的活動(dòng)。在我們的
24、生活中,游戲的種類有千種萬(wàn)種,不同的游戲也會(huì)給人帶來(lái)不同的放松和娛樂(lè)感受,正因?yàn)樗谋夭豢缮傩裕瑤?dòng)很大一部分人來(lái)研究越來(lái)越多的游戲,這不經(jīng)意間就豐盛了手機(jī)游戲行業(yè)。隨著我們生活水平的日益發(fā)展和新技術(shù)的偉大變革,手機(jī)逐漸在我們的生活中普及起來(lái),它小巧玲瓏,功能強(qiáng)大,并且方便攜帶,這些特性都讓它最終成為我們生活中的必需品。隨著3g以至4g的開(kāi)通及應(yīng)用,手機(jī)必然會(huì)迎來(lái)一輪更深層次的普及,而可以讓用戶在手機(jī)上玩游戲也就隨著手機(jī)火爆起來(lái),因此這
25、類游戲的研究還是有很大的發(fā)展空間的,必將會(huì)迎來(lái)手機(jī)用戶的追捧!</p><p> 五子棋,它可以說(shuō)是一種棋牌類的游戲,是需要有一定的策略的。棋盤和圍棋是通用的,有黑色和白色棋子兩種,但規(guī)則相對(duì)來(lái)說(shuō)就比較簡(jiǎn)單了,在我國(guó)古代,是比較流行的棋術(shù)之一。兩個(gè)人進(jìn)行游戲,各拿一個(gè)顏色的棋子,一人接一人輪流落子,經(jīng)過(guò)主動(dòng)進(jìn)攻或者是防守,直到有一方會(huì)出現(xiàn)五顆或者五顆以上的棋子連成一條線,就判定這一方獲勝,那么游戲?qū)⒔Y(jié)束。由于落
26、子之后棋子不像象棋那些可以隨意的移動(dòng)位置,有時(shí)候也是可以用紙質(zhì)的棋盤和筆來(lái)進(jìn)行的。該游戲由于規(guī)則簡(jiǎn)單,很容易就可以上手的,而且老少皆宜,玩起來(lái)比較有趣,不僅需要很好的策略,也需要隨時(shí)來(lái)處理不同的情況。這樣的游戲簡(jiǎn)單易玩,并且鍛煉思維,更對(duì)于小孩兒來(lái)說(shuō),可以開(kāi)發(fā)智力。</p><p> 這些在手機(jī)上開(kāi)發(fā)的游戲,更是對(duì)方便快捷悠閑的最好體現(xiàn)。五子棋會(huì)有很強(qiáng)大的客戶群,即使是之前完全沒(méi)有接觸過(guò)該游戲的人也可以輕而易舉
27、的明白具體的玩兒法,并且會(huì)感覺(jué)到特別有趣;它是以手機(jī)平板平臺(tái)為主的,只要是裝載它的話就可以隨時(shí)來(lái)玩兒,這樣在人們感受特別方便的同時(shí),還可以享受現(xiàn)在這樣的高科技生活下的悠閑;這個(gè)游戲還需要一定的策略,每走一步都會(huì)引起思考,但是卻不會(huì)給人帶來(lái)壓迫感,就是這樣略微輕松的思考,鍛煉了思維的同時(shí)也娛樂(lè)了身心。</p><p> 所以,綜合上述該游戲的各方面好處,設(shè)計(jì)在手機(jī)上可以進(jìn)行此游戲的應(yīng)用就顯得很重要了。</p
28、><p><b> 1.3 可行性研究</b></p><p> 這個(gè)階段,在對(duì)系統(tǒng)的目標(biāo)進(jìn)行了初步的調(diào)查和分析的基礎(chǔ)上,得出了一個(gè)可行性方案,并對(duì)其進(jìn)行了論證。本文主要從三個(gè)可行性方面進(jìn)行了分析,分別是技術(shù)、經(jīng)濟(jì)和操作。</p><p> 1.3.1 技術(shù)可行性</p><p> 技術(shù)可行性有很多因素要考慮到,比如
29、說(shuō)目前擁有的技術(shù)條件是否可以滿足使得游戲可以最終達(dá)到計(jì)劃的要求,軟件和硬件的型號(hào)級(jí)別能否跟上完成的節(jié)奏等。本軟件用的是Java語(yǔ)言進(jìn)行的,它的操作相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,現(xiàn)在使用的計(jì)算機(jī)的硬件方面也完全跟得上研發(fā)的節(jié)奏。軟件方面:在不用聯(lián)網(wǎng)的模式已經(jīng)發(fā)展的很強(qiáng)大的前提下,軟件就有了很好的發(fā)展平臺(tái),它們具有很多的優(yōu)勢(shì),比如很快的速度、高的可靠性、低的價(jià)格和大的容量,系統(tǒng)的需求完全能夠得到滿足。所以從技術(shù)層面上講是一定可以的。</p>
30、<p> 我們經(jīng)常需要根據(jù)不同的客戶需求來(lái)設(shè)計(jì)出好多不同的功能,然后把這些功能嵌入整合到一個(gè)產(chǎn)品中,整合配置到那種大型的計(jì)算機(jī)系統(tǒng)中,這就是所謂的嵌入式系統(tǒng)。隨著時(shí)代一步步的發(fā)展,計(jì)算機(jī)慢慢在和通信技術(shù)融合,慢慢的深入到人們生活中的各個(gè)層面,信息無(wú)處不在,獲取的方式越來(lái)越網(wǎng)絡(luò)化,信息化已經(jīng)成為一個(gè)不可避免的大趨勢(shì),所有在這樣一個(gè)大的背景下,嵌入式的發(fā)展也得到了不可估量的前景。</p><p>
31、目前的嵌入式已經(jīng)深入到我們?nèi)粘I钪械母鱾€(gè)行業(yè),它的使用或許也遠(yuǎn)遠(yuǎn)高過(guò)了普通的計(jì)算機(jī)系統(tǒng),包括通訊網(wǎng)絡(luò)等,。其中最典型的一個(gè)代表就是手機(jī)的嵌入式,給我們帶來(lái)了很大的便利,為我們的生活增添了很多不一樣的樂(lè)趣。</p><p> 1.3.2 經(jīng)濟(jì)可行性</p><p> 我們可以通過(guò)去圖書(shū)館借閱有關(guān)聯(lián)的圖書(shū)或者上網(wǎng)搜索等途徑來(lái)獲得開(kāi)發(fā)該應(yīng)用所需要的有關(guān)聯(lián)的圖書(shū)資料,并且其中所需的應(yīng)用相關(guān)方
32、面的軟件和硬件也是很容易找到的,總之所需的成本是比較低的,所以說(shuō)從經(jīng)濟(jì)層面來(lái)看是可以的。</p><p> 1.3.3 操作可行性</p><p> Eclipse 是一個(gè)開(kāi)放源代碼的研發(fā)平臺(tái),它是基于 Java 的,是可擴(kuò)展的。Eclipse是利用特殊規(guī)范的代碼來(lái)形成一個(gè)可供研發(fā)的程序,但是對(duì)于它自己而言,只是一個(gè)大概的結(jié)構(gòu)和一些可供使用的命令。令人欣慰的是Eclipse 附帶了一個(gè)
33、標(biāo)準(zhǔn)的插件集,包括 Java 開(kāi)發(fā)工具(Java Development Tools,JDT)。</p><p> 它主要由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和Eclipse技術(shù)項(xiàng)目三個(gè)項(xiàng)目組成,具體包括四個(gè)部分組成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java開(kāi)發(fā)、CDT支持C開(kāi)發(fā)、PDE用來(lái)支持插件開(kāi)發(fā),Eclipse Platform則是一個(gè)開(kāi)放的可擴(kuò)展IDE,它
34、構(gòu)造并且運(yùn)行了集成軟件開(kāi)發(fā)工具的基礎(chǔ),提供構(gòu)造塊,并且向用戶提供了一個(gè)通用性的開(kāi)發(fā)平臺(tái)。Eclipse Platform對(duì)任何一個(gè)工具可以實(shí)現(xiàn)的結(jié)果從什么地方開(kāi)始或者別的從什么地方結(jié)束是沒(méi)有辦法區(qū)分的,因?yàn)樗幌拗乒ぞ叩闹圃煺吲c其他的工具是不需要格式的轉(zhuǎn)換的。</p><p> Eclipse SDK(軟件開(kāi)發(fā)者包)是Eclipse Platform、JDT和PDE所生產(chǎn)的組件合并,它們是不必要分開(kāi)下載的。這些
35、組合合并在一起共同組成了一個(gè)超級(jí)豐富并完善的可供開(kāi)發(fā)的程序,開(kāi)發(fā)者可以通過(guò)它建造一種工具,能夠不受限制不用進(jìn)行轉(zhuǎn)換格式就可以連接到Eclipse Platform。Eclipse SDK是由兩部分組成的,一個(gè)是Eclipse項(xiàng)目生產(chǎn)的工具,另外的來(lái)自第三方軟件,它們是開(kāi)放源代碼的。這兩部分的協(xié)議是不一樣的,其中第一部分Eclipse自己產(chǎn)生的軟件通過(guò)GPL發(fā)布,而第二部分的第三方軟件是具有自己的許可協(xié)議的[7]。</p>
36、<p> 從以上的論述可以看出,本軟件的開(kāi)發(fā)完全具備技術(shù)、經(jīng)濟(jì)和操作三個(gè)方面的可行性。</p><p> 二、開(kāi)發(fā)工具、環(huán)境及其技術(shù)</p><p> 2.1 嵌入式開(kāi)發(fā)簡(jiǎn)介</p><p> 嵌入式開(kāi)發(fā)就是指在嵌入式操作系統(tǒng)下進(jìn)行開(kāi)發(fā),一般常用的系統(tǒng)有WinCE,linux,android等。另外,用c,c++或匯編開(kāi)發(fā);用高級(jí)處理器,arm7,
37、arm9,arm11,powerpc,mips,mipsel等,或加上操作系統(tǒng)也屬于嵌入式的開(kāi)發(fā)。</p><p> 2.2 JAVA簡(jiǎn)介</p><p><b> JAVA技術(shù)簡(jiǎn)介:</b></p><p> Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。Java 技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)
38、用于PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng),同時(shí)擁有全球最大的開(kāi)發(fā)者專業(yè)社群。</p><p> 2.3 eclipse簡(jiǎn)介</p><p> Eclipse 是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其本身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個(gè)標(biāo)準(zhǔn)的插件集,包括Java開(kāi)發(fā)工具。</p&
39、gt;<p> 2.4 ARM開(kāi)發(fā)板相關(guān)知識(shí):</p><p> ARM開(kāi)發(fā)板,即以英國(guó)ARM(Advanced RISC Machines)公司的內(nèi)核芯片作為CPU,同時(shí)附加其他外圍功能的嵌入式開(kāi)發(fā)板,用以評(píng)估內(nèi)核芯片的功能和研發(fā)各科技類企業(yè)的產(chǎn)品。</p><p><b> 三、需求分析</b></p><p><
40、b> 3.1 五子棋解釋</b></p><p> 五子棋是一種兩人對(duì)弈的純策略型棋類游戲,通常雙方分別使用黑白兩色的棋子,下在棋盤直線與橫線的交叉點(diǎn)上,先形成5子連線者獲勝。</p><p> 棋具與圍棋通用,起源于中國(guó)上古時(shí)代的傳統(tǒng)黑白棋種之一。主要流行于華人和漢字文化圈的國(guó)家以及歐美一些地區(qū)。</p><p> 3.2 五子棋基本規(guī)則
41、</p><p> 1.對(duì)局雙方各執(zhí)一色棋子,由空棋盤開(kāi)局。</p><p> 2.黑先、白后,交替下子,每次只能下一子。</p><p> 3.棋子下在棋盤的空白點(diǎn)上,棋子下定后,不得向其它點(diǎn)移動(dòng),不得從棋盤上拿掉或拿起另落別處。</p><p> 4. 最先在棋盤線交點(diǎn)橫向,縱向,斜向形成已方的五個(gè)棋子連續(xù)的一方為勝。</p
42、><p> 5.如下至最終一子仍不分勝負(fù)則定為平局。</p><p><b> 3.3 業(yè)務(wù)需求</b></p><p> 3.3.1 此系統(tǒng)使用范圍要求</p><p> 此系統(tǒng)為智力游戲,適合于各類游戲愛(ài)好者。由于其經(jīng)典性及其游戲的簡(jiǎn)單性,各類人士都可以也都愛(ài)玩。人們?cè)谙嗷?duì)戰(zhàn)享受娛樂(lè)的同時(shí),也會(huì)體會(huì)到自己的智力
43、也會(huì)有所提升。</p><p> 3.3.2 功能要求</p><p> 本次設(shè)計(jì)的五子棋游戲主要由兩個(gè)模塊組成:</p><p><b> 3.4 性能需求</b></p><p> 設(shè)計(jì)的該款五子棋游戲功能非常簡(jiǎn)單,主要的是實(shí)現(xiàn)雙人對(duì)戰(zhàn)模式。雖然系統(tǒng)不大,但已滿足玩家的基本要求。</p><
44、;p> 3.5 系統(tǒng)平臺(tái)需求</p><p><b> 編程語(yǔ)言:java</b></p><p> 操作系統(tǒng):Windows 7,Windows xp</p><p> 開(kāi)發(fā)工具:eclipse </p><p> 調(diào)試設(shè)備:ARM開(kāi)發(fā)板</p><p><b> 四
45、、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)</b></p><p> 4.1 系統(tǒng)設(shè)計(jì)思路</p><p><b> 設(shè)計(jì)思想</b></p><p> 1. 本系統(tǒng)要實(shí)現(xiàn)五子棋的游戲功能,必須先有一個(gè)棋盤,這里設(shè)計(jì)的是一個(gè)10*10的棋盤,另外還有一個(gè)按鈕:重玩,點(diǎn)擊之后可以重新開(kāi)始游戲。</p><p> 2. 對(duì)于下棋
46、的操作,先取得點(diǎn)擊的坐標(biāo)值,然后換算成對(duì)應(yīng)棋盤上的位置。</p><p> 3. 判斷該顏色棋子的上下左右是否滿足連續(xù)五個(gè),是的話提醒相對(duì)應(yīng)玩家獲勝,不是的話,更換玩家下棋。</p><p> 4. 對(duì)于玩家的更換是程序自動(dòng)的,每次用戶點(diǎn)擊屏幕后,若本局還未結(jié)束則會(huì)變換玩家,直到有一方獲勝或者棋盤已滿雙方打平為止。</p><p><b> 系統(tǒng)設(shè)計(jì)
47、分析</b></p><p> 1. 本款游戲一開(kāi)始默認(rèn)為黑棋先下,雙方交替下棋。</p><p> 2. 繪制棋盤,棋盤一共10×10格,居中對(duì)齊,在直線交點(diǎn)處下棋子。</p><p> 3. 棋盤有設(shè)置按鈕監(jiān)聽(tīng)狀態(tài),當(dāng)有點(diǎn)擊屏幕上重玩按鈕的時(shí)候,則會(huì)清空棋盤,并默認(rèn)黑棋先下。</p><p> 4. 當(dāng)任何
48、一方有五個(gè)棋子沿著橫,豎,斜連在一起時(shí),系統(tǒng)自動(dòng)判斷贏棋,并在下方顯示黑棋或白棋勝利,提示玩家點(diǎn)擊重玩按鈕重新開(kāi)始游戲。棋局結(jié)束后,任何一方均不能繼續(xù)操作。</p><p> 系統(tǒng)流程如下圖4-1:</p><p><b> Y</b></p><p><b> N</b></p><p>&
49、lt;b> Y</b></p><p><b> N</b></p><p><b> 系統(tǒng)流程圖</b></p><p> 4.2 開(kāi)發(fā)環(huán)境的搭建</p><p> 4.2.1安裝必備的系統(tǒng)庫(kù)和工具</p><p> 拷貝“TQ210_CD\L
50、inux 平臺(tái)工具\(yùn)ubuntu_env_install.tar.bz2”壓縮包到 Linux 的/opt/目錄下,然后在終端中用命令:cd /opt;tar xvfj ubuntu_env_install.tar.bz2 -C /解壓壓縮包,解壓后的文件存放在/opt/目錄下,名為:ubuntu_env_install.sh,在終端使用命令:cd/opt;./Ubuntu_env_install.sh,完成對(duì)庫(kù)和 gcc 的安裝。&l
51、t;/p><p> 4.2.2 安裝交叉編譯器</p><p> 拷貝光盤中的“TQ210_CD\交叉編譯工具\(yùn)4.4.6_TQ210_release_20120720.tar.bz2”壓縮包到 PC 的根目錄下,然后在終端中解壓。</p><p> 解壓完成之后修改環(huán)境變量,添加交叉編譯器的路徑,使用命令:gedit /etc/environment,修改后的文
52、件內(nèi)容如下:</p><p> 然后執(zhí)行命令生效:source /etc/environment,然后再執(zhí)行:arm-linux-gcc -v 就可以查看剛剛安裝好的交叉編譯器了</p><p> 4.2.3 安裝java6</p><p> 直接在終端運(yùn)行java安裝包:cd /opt/Tools/;./jdk-6u30-linux-x64.bin。<
53、/p><p> 安裝完成后,會(huì)在同目錄(即/opt/Tools/目錄)得到安裝后的目錄,將其移動(dòng)到“/usr/lib/jvm/”目錄下,然后設(shè)置環(huán)境變量。</p><p> 4.2.4 安裝文件系統(tǒng)壓制工具</p><p> 拷貝光盤中的制作文件系統(tǒng)的工具拷貝到 PC 的 linux 系統(tǒng)的根目錄下,然后解壓。</p><p> 4.2.
54、5 Eclipse壓縮包解壓</p><p> 將光盤中的Eclipse與android-sdk-linux兩個(gè)壓縮包解壓到指定目錄下。</p><p> 4.2.6 Eclipse環(huán)境設(shè)置及新建一個(gè)AVD</p><p> 進(jìn)入解壓目錄雙擊運(yùn)行Eclipse,啟動(dòng)后選擇一個(gè)工作空間,設(shè)置好后直接按OK。</p><p> 進(jìn)入Ecl
55、ipse后選擇上面的window → preferences,然后左側(cè)選擇Android,在右側(cè)選擇sdk路徑,路徑為剛才sdk解壓的地方,設(shè)置好后按確定。</p><p> 新建一個(gè)AVD,打開(kāi)設(shè)備管理器,選擇新建。設(shè)置好后按CreateAVD新建,新建后選中它,按start后按Launch運(yùn)行。運(yùn)行后結(jié)果如下:</p><p> 4.3 系統(tǒng)開(kāi)發(fā)過(guò)程</p><
56、p> 首先在已經(jīng)配置好環(huán)境的Eclipse中新建工程,如圖所示:</p><p> 接下來(lái)是界面的設(shè)計(jì),以下圖片分別為編輯器里的界面和虛擬機(jī)上的界面:</p><p> 接下來(lái)是下棋的位置確定,以及勝負(fù)的判斷算法,具體源碼已經(jīng)在附錄的關(guān)鍵源碼中。</p><p><b> 五、移植與測(cè)試</b></p><p&
57、gt; 5.1 編譯Android內(nèi)核</p><p> 將Android內(nèi)核源碼(Kernel_3.0.8_TQ210_for_Android_v1.4.tar.bz2)拷貝到Linux系統(tǒng)的根目錄下,然后解壓源碼。</p><p> 進(jìn)入解壓后的路徑,會(huì)發(fā)現(xiàn)有一個(gè)drivers文件夾,里面是存放的是驅(qū)動(dòng)程序。TQ210 PDA自帶的驅(qū)動(dòng)程序有:</p><p&
58、gt; 1.針對(duì)s5pv210的硬件解碼編碼驅(qū)動(dòng) 2.圖像旋轉(zhuǎn)翻轉(zhuǎn)驅(qū)動(dòng)</p><p> 3.數(shù)字?jǐn)z像頭驅(qū)動(dòng) 4.加速度傳感器驅(qū)動(dòng)</p><p> 5.紅外接收驅(qū)動(dòng) 6.溫度傳感器驅(qū)動(dòng)</p><p> 7.Zigbee驅(qū)動(dòng)SPI接口
59、8.YAFFS文件系統(tǒng)</p><p> 9.EXT4文件系統(tǒng) 10.UBIFS文件系統(tǒng)</p><p> 11.RTC驅(qū)動(dòng) 12.IIC驅(qū)動(dòng)</p><p> 13.LCD驅(qū)動(dòng) 14.背光燈驅(qū)動(dòng)</p>
60、<p> 15.觸摸驅(qū)動(dòng) 16.ADC驅(qū)動(dòng)</p><p> 17.PWM驅(qū)動(dòng) 18.聲卡驅(qū)動(dòng)</p><p> 19.100M網(wǎng)卡驅(qū)動(dòng) 20.USB驅(qū)動(dòng)</p><p> 21.4串口驅(qū)動(dòng)
61、 22.用戶按鍵驅(qū)動(dòng)</p><p> 23.SD卡驅(qū)動(dòng) 24.SDIO WIFI驅(qū)動(dòng)</p><p> 本次開(kāi)發(fā)不精簡(jiǎn)任何驅(qū)動(dòng)程序。如果要精簡(jiǎn),則需使用命令make menuconfig進(jìn)行配置,對(duì)應(yīng)需要的驅(qū)動(dòng)選擇Y,不需要的選擇N,這樣就可以選擇想要的驅(qū)動(dòng)進(jìn)行編譯。</p><p&g
62、t; 配置完成后就進(jìn)行編譯生成zImage.bin文件。</p><p> 5.2 編譯Android系統(tǒng)</p><p> 將光盤中的Android內(nèi)核源碼解壓到Linux系統(tǒng)的根目錄下,然后解壓源碼,之后選擇CoreB對(duì)應(yīng)編譯腳本build_coreB_android.sh。</p><p> 5.3 制作Android文件系統(tǒng)鏡像 </p>
63、<p> 5.3.1 解壓文件系統(tǒng)</p><p> 使用命令進(jìn)行文件系統(tǒng)的解壓。</p><p> 5.3.2 五子棋移植及制作文件系統(tǒng)</p><p> 解壓過(guò)后就可以看到有rootfs_dir文件夾了,把開(kāi)發(fā)的五子棋的apk安裝包放到rootfs_dir/system/app目錄下,即可使五子棋app成為系統(tǒng)內(nèi)置軟件,在安卓機(jī)上不可卸載。
64、也可對(duì)rootfs_dir/system/app目錄下的apk進(jìn)行精簡(jiǎn),以定制自己所需要的Android系統(tǒng)。</p><p> 接下來(lái)對(duì)移植進(jìn)app目錄下的wuziqi.apk文件進(jìn)行權(quán)限設(shè)置,使用命令chmod 777 wuziqi.apk使程序變成可執(zhí)行的程序。</p><p> 使用命令制作Yaffs格式的文件系統(tǒng)(zllpp.bin)。</p><p>
65、; 5.4 開(kāi)發(fā)板SD啟動(dòng)卡制作</p><p> 5.4.1 u-boot編譯</p><p> 將u-boot源碼復(fù)制到Linux環(huán)境下,然后解壓。完成后配置u-boot,然后編譯。</p><p> 5.4.2 SD啟動(dòng)卡制作</p><p> 將SD卡通過(guò)讀卡器連接到PC機(jī)上,打開(kāi)SD卡制作工具</p><
66、;p> 對(duì)SD卡分區(qū)之后,選擇之前編譯的uboot鏡像文件,開(kāi)發(fā)板類型選擇210選項(xiàng)進(jìn)行制作。</p><p> 5.5 燒寫Android系統(tǒng)到開(kāi)發(fā)板</p><p> 本次采用的是USB更新Android的方法,首先安裝好USB驅(qū)動(dòng)。用USB線將開(kāi)發(fā)板和電腦相連,打開(kāi)TQBoardDNW軟件,接著將開(kāi)發(fā)板開(kāi)關(guān)撥到0110,然后啟動(dòng)開(kāi)發(fā)板,按空格鍵進(jìn)入u-boot界面。<
67、;/p><p> 5.5.1燒寫u-boot</p><p> 按命令1進(jìn)行u-boot更新,選擇菜單欄中的USB下載→uboot→選擇文件,選擇u-boot鏡像進(jìn)行更新。</p><p> 5.5.2燒寫Android內(nèi)核鏡像</p><p> 在u-boot下載模式的一鍵式菜單中,輸入命令3,接著選擇菜單欄中的USB下載→uboot→
68、選擇文件,選擇之前編譯好的Android內(nèi)核鏡像文件(zImage.bin),將內(nèi)核燒寫到Nand Flash中。</p><p> 5.5.3燒寫文件系統(tǒng)鏡像</p><p> 在u-boot下載模式的一鍵式菜單中,輸入命令6,接著選擇菜單中的USB下載→uboot→選擇文件,選擇之前制作好的Android文件系統(tǒng)鏡像(zllpp.bin),對(duì)YAFFS2文件系統(tǒng)進(jìn)行更新。</
69、p><p> 5.5.4燒寫LOGO鏡像</p><p> 在一鍵式菜單中輸入命令4,接著選擇菜單中的USB下載→uboot→選擇文件,選擇LOGO鏡像進(jìn)行燒寫。</p><p> 接著等全部燒寫完畢后,就可以將開(kāi)發(fā)板開(kāi)關(guān)撥到1000,然后重新啟動(dòng)開(kāi)發(fā)板,開(kāi)發(fā)板啟動(dòng)。</p><p><b> 5.6 測(cè)試</b>&
70、lt;/p><p> 對(duì)開(kāi)發(fā)板上已經(jīng)安裝的五子棋進(jìn)行測(cè)試,首先打開(kāi)軟件,界面如下:</p><p> 接著試玩,分別測(cè)試黑棋,白棋以及打平情況時(shí),程序的判斷算法是否能正確判斷出來(lái),并且能顯示提示語(yǔ),顯示結(jié)果如下:</p><p> 整個(gè)程序運(yùn)行正常,開(kāi)發(fā)結(jié)束。</p><p><b> 六、總結(jié)與展望</b><
71、/p><p><b> 6.1 總結(jié) </b></p><p> 這次課程設(shè)計(jì)老師給了一個(gè)月的時(shí)間去設(shè)計(jì)實(shí)現(xiàn),由于之前學(xué)習(xí)時(shí)一直接觸的是開(kāi)發(fā)板的環(huán)境配置,所以在開(kāi)發(fā)五子棋之前首先是對(duì)開(kāi)發(fā)板進(jìn)行進(jìn)一步的了解,如該怎樣燒寫Android系統(tǒng)進(jìn)去,開(kāi)發(fā)出來(lái)的程序怎么安裝到開(kāi)發(fā)板,怎么在開(kāi)發(fā)板上調(diào)試等一系列的問(wèn)題。懂了之后感覺(jué)安卓系統(tǒng)的軟件開(kāi)發(fā)與調(diào)試還算是比較簡(jiǎn)單的。<
72、/p><p> 再有就是花了兩個(gè)多星期的時(shí)間開(kāi)發(fā)五子棋這個(gè)游戲,由于之前沒(méi)怎么接觸過(guò)Android開(kāi)發(fā),雖然有用java開(kāi)發(fā)一些系統(tǒng),但是這次遇到的問(wèn)題還是比較多的,包括不熟悉怎么調(diào)試程序,不熟悉安卓開(kāi)發(fā)的流程等,這次五子棋開(kāi)發(fā)最重要的就是繪制棋盤以及最后的判斷輸贏算法,這兩個(gè)方面也是花了很多時(shí)間上網(wǎng)查了些資料才寫了出來(lái),而在最后也只能開(kāi)發(fā)出很簡(jiǎn)單的五子棋游戲,就只有雙人對(duì)戰(zhàn)還有重玩兩個(gè)功能。其他的功能之前就有構(gòu)思
73、過(guò),比如加個(gè)時(shí)間的倒計(jì)時(shí),顯示當(dāng)前應(yīng)該下棋的用戶,有悔棋功能,人機(jī)對(duì)戰(zhàn)等等,但是能力有限再加上時(shí)間已經(jīng)不夠了所以就沒(méi)有去擴(kuò)充功能。</p><p> 不過(guò)通過(guò)這次課程設(shè)計(jì),我了解了開(kāi)發(fā)板的配置與使用,雖然沒(méi)有深入了解ARM的原理,但是已經(jīng)對(duì)嵌入式有了一個(gè)新的認(rèn)識(shí)。</p><p><b> 6.2 展望</b></p><p> 隨著4G
74、智能手機(jī)的普及,人們對(duì)游戲的要求會(huì)越來(lái)越高。僅僅只是人機(jī)對(duì)戰(zhàn)不足以滿足用戶的需求,網(wǎng)絡(luò)對(duì)戰(zhàn)才是今后游戲發(fā)展的目標(biāo)。用戶之間接收和發(fā)送信息,使五子棋游戲不僅僅局限于一臺(tái)手機(jī)上。</p><p> 同樣隨著社會(huì)的發(fā)展,手機(jī)系統(tǒng)的個(gè)性化定制也將變得更加的重要,根據(jù)用戶的需求進(jìn)行定制將變成主流。</p><p><b> 參考文獻(xiàn)</b></p><p
75、> 【1】Java高級(jí)程序設(shè)計(jì).北京:中國(guó)水利水電出版社,2006</p><p> 【2】海編著.Java程序設(shè)計(jì)習(xí)題集.北京:清華大學(xué)出版社,2006</p><p> 【3】吳其慶編著《Java程序設(shè)計(jì)實(shí)例教程》 [M] 冶金工業(yè)出版社,2006</p><p> 【4】《連珠五子棋入門》金盾出版社 彭建國(guó),那威著 2001年7月</p&
76、gt;<p><b> 附錄:</b></p><p><b> 所有源碼</b></p><p><b> 主程序:</b></p><p> public class GobangActivity extends Activity {</p><p>
77、 GobangView gbv;</p><p><b> @Override</b></p><p> public void onCreate(Bundle savedInstanceState) {</p><p> super.onCreate(savedInstanceState);</p><p>
78、 setContentView(R.layout.main);</p><p> Button button = (Button) findViewById(R.id.button1);</p><p> button.setOnClickListener(new OnBtnClick());</p><p> gbv = (GobangView) this.
79、findViewById(R.id.Gobangview);</p><p> gbv.setTextView((TextView) this.findViewById(R.id.text));</p><p><b> }</b></p><p> private class OnBtnClick implements OnClickL
80、istener {</p><p><b> @Override</b></p><p> public void onClick(View v) {</p><p> // TODO Auto-generated method stub</p><p> if (v.getId() == R.id.button
81、1) {</p><p> gbv.init();</p><p> gbv.showTextView(" "); </p><p><b> }</b></p><p><b> }</b></p><p><b> }<
82、/b></p><p><b> }</b></p><p> 五子棋的View: </p><p> public class GobangView extends View {</p><p> protected static int size = 10;</p><p>
83、; protected static int width = 65; // 棋盤網(wǎng)格的寬度 </p><p> protected static int chess_width = 50; // 棋的直徑</p><p> protected static int board_X;// 棋盤定位的左上角X</p><p> protected static
84、int board_Y;// 棋盤定位的左上角Y</p><p> private static int[][] mGridArray; // 網(wǎng)格</p><p> boolean key = false;</p><p> int wbflag = 1; // 該下白棋=2,該下黑棋=1. 這里先下黑棋</p><p> int
85、mWinFlag = 0;</p><p> private final int BLACK = 1;</p><p> private final int WHITE = 2;</p><p> int mGameState = game_run; // 游戲階段:0=尚未游戲,1=正在進(jìn)行游戲,2=游戲結(jié)束</p><p> st
86、atic final int game_NotStart = 0;</p><p> static final int game_run = 1;</p><p> static final int game_end = 2;</p><p> public TextView game_TextView; // 根據(jù)游戲狀態(tài)設(shè)置顯示的文字</p>
87、<p> CharSequence mText;</p><p> CharSequence WIN = "白棋獲勝!請(qǐng)點(diǎn)擊重玩重新開(kāi)始游戲.";</p><p> CharSequence LOSE = "黑棋獲勝!請(qǐng)點(diǎn)擊重玩重新開(kāi)始游戲.";</p><p> CharSequence EQUAL =
88、"雙方打平!請(qǐng)點(diǎn)擊重玩重新開(kāi)始游戲.";</p><p> public GobangView(Context context, AttributeSet attrs) { // 調(diào)用的構(gòu)造函數(shù)</p><p> super(context, attrs);</p><p> this.setFocusable(true); // 2009
89、0530</p><p> this.setFocusableInTouchMode(true);</p><p><b> init();</b></p><p><b> }</b></p><p> // 初始化黑白棋的Bitmap</p><p> publ
90、ic void init() {</p><p> mGameState = 1; // 設(shè)置游戲?yàn)殚_(kāi)始狀態(tài)</p><p> wbflag = BLACK; // 初始為先下黑棋</p><p> mWinFlag = 0; // 清空輸贏標(biāo)志。</p><p> mGridArray = new int[size - 1][siz
91、e - 1];</p><p><b> }</b></p><p> public void setTextView(TextView tv) {</p><p> game_TextView = tv;</p><p> game_TextView.setVisibility(View.INVISIBLE);
92、</p><p><b> }</b></p><p> //棋盤界面顯示在屏幕中央</p><p><b> @Override</b></p><p> protected void onSizeChanged(int w, int h, int oldw, int oldh) {<
93、;/p><p> board_X = w / 2 - size * width / 2;</p><p> board_Y = h / 2 - size * width / 2;</p><p><b> }</b></p><p> //下棋的位置以及調(diào)用算法判斷是否勝出</p><p>&
94、lt;b> @Override</b></p><p> public boolean onTouchEvent(MotionEvent event) {</p><p> switch (mGameState) {</p><p> case game_NotStart:</p><p><b> br
95、eak;</b></p><p> case game_run: {</p><p><b> int x;</b></p><p><b> int y;</b></p><p> float x0 = width - (event.getX() - board_X) % wi
96、dth;</p><p> float y0 = width - (event.getY() - board_Y) % width;</p><p> if (x0 < width / 2) {</p><p> x = (int) ((event.getX() - board_X) / width);</p><p><b
97、> } else {</b></p><p> x = (int) ((event.getX() - board_X) / width) - 1;</p><p><b> }</b></p><p> if (y0 < width / 2) {</p><p> y = (int) (
98、(event.getY() - board_Y) / width);</p><p><b> } else {</b></p><p> y = (int) ((event.getY() - board_Y) / width) - 1;</p><p><b> }</b></p><p>
99、 if ((x >= 0 && x < size - 1) && (y >= 0 && y < size - 1)) {</p><p> if (mGridArray[x][y] == 0) {</p><p> if (wbflag == BLACK) {</p><p> putC
100、hess(x, y, BLACK);</p><p> if (checkWin(BLACK)) { // 如果是黑棋贏了</p><p> mText = LOSE;</p><p> mGameState = game_end;</p><p> showTextView(mText);</p><p>
101、 } else if (checkFull()) {// 如果棋盤滿了</p><p> mText = EQUAL;</p><p> mGameState = game_end;</p><p> showTextView(mText);</p><p><b> }</b></p><p
102、> wbflag = WHITE;</p><p> } else if (wbflag == WHITE) { </p><p> putChess(x, y, WHITE);</p><p> if (checkWin(WHITE)) { //如果是白棋贏了</p><p> mText = WIN;</p>
103、<p> mGameState = game_end;</p><p> showTextView(mText);</p><p> } else if (checkFull()) {// 如果棋盤滿了</p><p> mText = EQUAL;</p><p> mGameState = game_end;<
104、/p><p> showTextView(mText);</p><p> }wbflag = BLACK;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>&
105、lt;p><b> }</b></p><p><b> break;</b></p><p> case game_end:</p><p><b> break;</b></p><p><b> }</b></p>&l
106、t;p> this.invalidate();</p><p> return true;</p><p><b> }</b></p><p><b> @Override</b></p><p> public void onDraw(Canvas canvas) {</p
107、><p> canvas.drawColor(Color.LTGRAY);//初始化棋盤顏色</p><p><b> // 畫(huà)棋盤</b></p><p><b> {</b></p><p> Paint paintRect = new Paint();</p><p&g
108、t; paintRect.setColor(Color.BLACK);//設(shè)置棋盤網(wǎng)格線為黑色</p><p> paintRect.setStrokeWidth(2);</p><p> paintRect.setStyle(Style.STROKE);</p><p> for (int i = 0; i < size; i++) {</p&
109、gt;<p> for (int j = 0; j < size; j++) {</p><p> int mLeft = i * width + board_X;</p><p> int mTop = j * width + board_Y;</p><p> int mRright = mLeft + width;</p>
110、;<p> int mBottom = mTop + width;</p><p> canvas.drawRect(mLeft, mTop, mRright, mBottom, paintRect);</p><p><b> }</b></p><p><b> }</b></p>
111、<p> // 畫(huà)棋盤的外邊框</p><p> paintRect.setStrokeWidth(4);</p><p> canvas.drawRect(board_X, board_Y, board_X + width * size,</p><p> board_Y + width * size, paintRect);</p>
112、<p><b> }</b></p><p><b> // 畫(huà)棋子</b></p><p> for (int i = 0; i < size - 1; i++) {</p><p> for (int j = 0; j < size - 1; j++) {</p><
113、;p> if (mGridArray[i][j] == BLACK) {</p><p><b> // 通過(guò)圓形來(lái)畫(huà)</b></p><p><b> {</b></p><p> Paint paintCircle = new Paint();</p><p> paintCir
114、cle.setColor(Color.BLACK);</p><p> canvas.drawCircle(board_X + (i + 1) * width,</p><p> board_Y + (j + 1) * width,</p><p> chess_width / 2, paintCircle);</p><p><
115、b> }</b></p><p> } else if (mGridArray[i][j] == WHITE) {</p><p><b> // 通過(guò)圓形來(lái)畫(huà)</b></p><p> { Paint paintCircle = new Paint();</p><p> paintCi
116、rcle.setColor(Color.WHITE);</p><p> canvas.drawCircle(board_X + (i + 1) * width,</p><p> board_Y + (j + 1) * width,</p><p> chess_width / 2, paintCircle);</p><p><
117、;b> }}}}}</b></p><p> public void putChess(int x, int y, int blackwhite) {</p><p> mGridArray[x][y] = blackwhite;</p><p><b> }</b></p><p><b
118、> //計(jì)算是否勝出</b></p><p> public boolean checkWin(int wbflag) {</p><p> for (int i = 0; i < size - 1; i++)</p><p> // i表示列(根據(jù)寬度算出來(lái)的)</p><p> for (int j =
119、0; j < size - 1; j++) { // j表示行(根據(jù)高度算出來(lái)的)</p><p> // 檢測(cè)橫軸五個(gè)相連</p><p> if (((i + 4) < (size - 1)) && (mGridArray[i][j] == wbflag)</p><p> && (mGridArray[i +
120、 1][j] == wbflag)</p><p> && (mGridArray[i + 2][j] == wbflag)</p><p> && (mGridArray[i + 3][j] == wbflag)</p><p> && (mGridArray[i + 4][j] == wbflag)) {&l
121、t;/p><p> mWinFlag = wbflag;</p><p><b> }</b></p><p><b> // 縱軸5個(gè)相連</b></p><p> if (((j + 4) < (size - 1)) && (mGridArray[i][j] == wb
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 五子棋課程設(shè)計(jì)
- java五子棋課程設(shè)計(jì)
- 五子棋-課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)--五子棋
- 五子棋java課程設(shè)計(jì)
- 五子棋java課程設(shè)計(jì)
- java課程設(shè)計(jì)--五子棋游戲
- java課程設(shè)計(jì)--對(duì)戰(zhàn)五子棋
- 五子棋c++課程設(shè)計(jì)
- 五子棋c++課程設(shè)計(jì)
- 五子棋小游戲課程設(shè)計(jì)
- c語(yǔ)言五子棋課程設(shè)計(jì)
- java課程設(shè)計(jì)-五子棋游戲
- java課程設(shè)計(jì)報(bào)告-五子棋
- 五子棋游戲課程設(shè)計(jì)報(bào)告
- 五子棋畢業(yè)課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)——五子棋
- 人工智能課程設(shè)計(jì)---五子棋
- 匯編語(yǔ)言五子棋課程設(shè)計(jì)
- c++五子棋課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論