五子棋嵌入式課程設(shè)計(android)_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  嵌入式課程設(shè)計報告書</p><p>  中文題目: 嵌入式終端應(yīng)用程序開發(fā)-五子棋(安卓版) </p><p>  英文題目: Embedded terminal application development gobang (Android)

2、</p><p>  姓 名: </p><p>  學(xué) 號: </p><p>  專業(yè)班級: </p><p>  指導(dǎo)老師: </p><p>

3、;  提交日期: </p><p><b>  教務(wù)處制</b></p><p>  嵌入式終端應(yīng)用程序開發(fā)-五子棋(安卓版)</p><p>  作者姓名: 專業(yè)班級: 指導(dǎo)老師: </p><p><b>  摘 要<

4、/b></p><p>  如今網(wǎng)絡(luò)休閑游戲發(fā)展迅速,它憑借健康、方便、互動性強、益智等諸多優(yōu)點,成為大部分現(xiàn)代人休閑娛樂的首選,而五子棋作為簡單的益智類的游戲已被大眾認可及喜愛。</p><p>  本文將研究五子棋的設(shè)計開發(fā),下文將從可行性研究,需求分析,系統(tǒng)設(shè)計與實現(xiàn),移植與測試等四個主要方面進行講解本次五子棋開發(fā)的主要過程。其中的重點在于移植這一塊,因為本文做的是嵌入式的開發(fā)

5、。所以下文會重點介紹開發(fā)的安裝包怎么移植到Android系統(tǒng)里面,再加上必要的配置,使其成為系統(tǒng)自帶的軟件,并且會詳細說明怎么樣燒寫Android內(nèi)核,Android系統(tǒng)以及Android文件系統(tǒng)到ARM開發(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)濟可行性8</p><p>  1.3.3 操作可行性8</p><p>  二、開發(fā)工具、環(huán)境及其技術(shù)9</p><p>  2.1 嵌入式開發(fā)簡介9</p><p>  2.2 JAVA簡介

13、9</p><p>  2.3 eclipse簡介9</p><p>  2.4 ARM開發(fā)板相關(guān)知識: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)平臺需求11</p><p>  四、系統(tǒng)設(shè)計與實現(xiàn)11</p><p> 

15、 4.1 系統(tǒng)設(shè)計思路11</p><p>  4.2 開發(fā)環(huán)境的搭建13</p><p>  4.2.1安裝必備的系統(tǒng)庫和工具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è)置及新建一個AVD14</p><p>  4.3 系統(tǒng)開發(fā)過程16</p><p>  五、移植與測試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 開發(fā)板SD啟動卡制作20</p><p>  5.4.1 u-boo

18、t編譯20</p><p>  5.4.2 SD啟動卡制作20</p><p>  5.5 燒寫Android系統(tǒng)到開發(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 測試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>  參考文獻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è)計、圖形圖像處理、教育培訓(xùn)以及游戲娛樂等。Windows系統(tǒng)的推出使電腦從高雅的學(xué)術(shù)殿堂走入了尋常百姓家,各行各業(yè)的人們無須經(jīng)過特別的訓(xùn)練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了花樣繁多的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開發(fā)適合自己

22、特殊需求的軟件。Java語言作為一種面向?qū)ο蟮木幊陶Z言,具有分布式,可移植,高性能,多線程等特點。通過系統(tǒng)的學(xué)習(xí),人們就可以使用它開發(fā)出功能齊全,滿足特殊需求的應(yīng)用程序。Java語言易學(xué)易用,對學(xué)習(xí)者掌握技能,開拓思維都有很大的幫助。</p><p>  隨著計算機技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)技術(shù)的普及范圍越來越廣,網(wǎng)絡(luò)能夠提供的服務(wù)多樣、便捷,已經(jīng)成為人們生產(chǎn)生活中不可缺少的重要組成部分。如今網(wǎng)絡(luò)休閑游戲發(fā)展迅速,它憑

23、借健康、方便、互動性強、益智等諸多優(yōu)點,成為大部分現(xiàn)代人休閑娛樂的首選。</p><p>  五子棋游戲是使用Java語言開發(fā)的一款游戲。通過對該軟件的編寫,還可以鞏固我們對以上各種知識的掌握和理解。</p><p>  1.2 課題研究的意義和目的</p><p>  游戲,作為一種娛樂項目,在我們現(xiàn)在這樣會面臨很多壓力的生活中,真的是一類不可或缺的活動。在我們的

24、生活中,游戲的種類有千種萬種,不同的游戲也會給人帶來不同的放松和娛樂感受,正因為它的必不可少性,帶動很大一部分人來研究越來越多的游戲,這不經(jīng)意間就豐盛了手機游戲行業(yè)。隨著我們生活水平的日益發(fā)展和新技術(shù)的偉大變革,手機逐漸在我們的生活中普及起來,它小巧玲瓏,功能強大,并且方便攜帶,這些特性都讓它最終成為我們生活中的必需品。隨著3g以至4g的開通及應(yīng)用,手機必然會迎來一輪更深層次的普及,而可以讓用戶在手機上玩游戲也就隨著手機火爆起來,因此這

25、類游戲的研究還是有很大的發(fā)展空間的,必將會迎來手機用戶的追捧!</p><p>  五子棋,它可以說是一種棋牌類的游戲,是需要有一定的策略的。棋盤和圍棋是通用的,有黑色和白色棋子兩種,但規(guī)則相對來說就比較簡單了,在我國古代,是比較流行的棋術(shù)之一。兩個人進行游戲,各拿一個顏色的棋子,一人接一人輪流落子,經(jīng)過主動進攻或者是防守,直到有一方會出現(xiàn)五顆或者五顆以上的棋子連成一條線,就判定這一方獲勝,那么游戲?qū)⒔Y(jié)束。由于落

26、子之后棋子不像象棋那些可以隨意的移動位置,有時候也是可以用紙質(zhì)的棋盤和筆來進行的。該游戲由于規(guī)則簡單,很容易就可以上手的,而且老少皆宜,玩起來比較有趣,不僅需要很好的策略,也需要隨時來處理不同的情況。這樣的游戲簡單易玩,并且鍛煉思維,更對于小孩兒來說,可以開發(fā)智力。</p><p>  這些在手機上開發(fā)的游戲,更是對方便快捷悠閑的最好體現(xiàn)。五子棋會有很強大的客戶群,即使是之前完全沒有接觸過該游戲的人也可以輕而易舉

27、的明白具體的玩兒法,并且會感覺到特別有趣;它是以手機平板平臺為主的,只要是裝載它的話就可以隨時來玩兒,這樣在人們感受特別方便的同時,還可以享受現(xiàn)在這樣的高科技生活下的悠閑;這個游戲還需要一定的策略,每走一步都會引起思考,但是卻不會給人帶來壓迫感,就是這樣略微輕松的思考,鍛煉了思維的同時也娛樂了身心。</p><p>  所以,綜合上述該游戲的各方面好處,設(shè)計在手機上可以進行此游戲的應(yīng)用就顯得很重要了。</p

28、><p><b>  1.3 可行性研究</b></p><p>  這個階段,在對系統(tǒng)的目標進行了初步的調(diào)查和分析的基礎(chǔ)上,得出了一個可行性方案,并對其進行了論證。本文主要從三個可行性方面進行了分析,分別是技術(shù)、經(jīng)濟和操作。</p><p>  1.3.1 技術(shù)可行性</p><p>  技術(shù)可行性有很多因素要考慮到,比如

29、說目前擁有的技術(shù)條件是否可以滿足使得游戲可以最終達到計劃的要求,軟件和硬件的型號級別能否跟上完成的節(jié)奏等。本軟件用的是Java語言進行的,它的操作相對來說比較簡單,現(xiàn)在使用的計算機的硬件方面也完全跟得上研發(fā)的節(jié)奏。軟件方面:在不用聯(lián)網(wǎng)的模式已經(jīng)發(fā)展的很強大的前提下,軟件就有了很好的發(fā)展平臺,它們具有很多的優(yōu)勢,比如很快的速度、高的可靠性、低的價格和大的容量,系統(tǒng)的需求完全能夠得到滿足。所以從技術(shù)層面上講是一定可以的。</p>

30、<p>  我們經(jīng)常需要根據(jù)不同的客戶需求來設(shè)計出好多不同的功能,然后把這些功能嵌入整合到一個產(chǎn)品中,整合配置到那種大型的計算機系統(tǒng)中,這就是所謂的嵌入式系統(tǒng)。隨著時代一步步的發(fā)展,計算機慢慢在和通信技術(shù)融合,慢慢的深入到人們生活中的各個層面,信息無處不在,獲取的方式越來越網(wǎng)絡(luò)化,信息化已經(jīng)成為一個不可避免的大趨勢,所有在這樣一個大的背景下,嵌入式的發(fā)展也得到了不可估量的前景。</p><p>  

31、目前的嵌入式已經(jīng)深入到我們?nèi)粘I钪械母鱾€行業(yè),它的使用或許也遠遠高過了普通的計算機系統(tǒng),包括通訊網(wǎng)絡(luò)等,。其中最典型的一個代表就是手機的嵌入式,給我們帶來了很大的便利,為我們的生活增添了很多不一樣的樂趣。</p><p>  1.3.2 經(jīng)濟可行性</p><p>  我們可以通過去圖書館借閱有關(guān)聯(lián)的圖書或者上網(wǎng)搜索等途徑來獲得開發(fā)該應(yīng)用所需要的有關(guān)聯(lián)的圖書資料,并且其中所需的應(yīng)用相關(guān)方

32、面的軟件和硬件也是很容易找到的,總之所需的成本是比較低的,所以說從經(jīng)濟層面來看是可以的。</p><p>  1.3.3 操作可行性</p><p>  Eclipse 是一個開放源代碼的研發(fā)平臺,它是基于 Java 的,是可擴展的。Eclipse是利用特殊規(guī)范的代碼來形成一個可供研發(fā)的程序,但是對于它自己而言,只是一個大概的結(jié)構(gòu)和一些可供使用的命令。令人欣慰的是Eclipse 附帶了一個

33、標準的插件集,包括 Java 開發(fā)工具(Java Development Tools,JDT)。</p><p>  它主要由Eclipse項目、Eclipse工具項目和Eclipse技術(shù)項目三個項目組成,具體包括四個部分組成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),Eclipse Platform則是一個開放的可擴展IDE,它

34、構(gòu)造并且運行了集成軟件開發(fā)工具的基礎(chǔ),提供構(gòu)造塊,并且向用戶提供了一個通用性的開發(fā)平臺。Eclipse Platform對任何一個工具可以實現(xiàn)的結(jié)果從什么地方開始或者別的從什么地方結(jié)束是沒有辦法區(qū)分的,因為它不限制工具的制造者與其他的工具是不需要格式的轉(zhuǎn)換的。</p><p>  Eclipse SDK(軟件開發(fā)者包)是Eclipse Platform、JDT和PDE所生產(chǎn)的組件合并,它們是不必要分開下載的。這些

35、組合合并在一起共同組成了一個超級豐富并完善的可供開發(fā)的程序,開發(fā)者可以通過它建造一種工具,能夠不受限制不用進行轉(zhuǎn)換格式就可以連接到Eclipse Platform。Eclipse SDK是由兩部分組成的,一個是Eclipse項目生產(chǎn)的工具,另外的來自第三方軟件,它們是開放源代碼的。這兩部分的協(xié)議是不一樣的,其中第一部分Eclipse自己產(chǎn)生的軟件通過GPL發(fā)布,而第二部分的第三方軟件是具有自己的許可協(xié)議的[7]。</p>

36、<p>  從以上的論述可以看出,本軟件的開發(fā)完全具備技術(shù)、經(jīng)濟和操作三個方面的可行性。</p><p>  二、開發(fā)工具、環(huán)境及其技術(shù)</p><p>  2.1 嵌入式開發(fā)簡介</p><p>  嵌入式開發(fā)就是指在嵌入式操作系統(tǒng)下進行開發(fā),一般常用的系統(tǒng)有WinCE,linux,android等。另外,用c,c++或匯編開發(fā);用高級處理器,arm7,

37、arm9,arm11,powerpc,mips,mipsel等,或加上操作系統(tǒng)也屬于嵌入式的開發(fā)。</p><p>  2.2 JAVA簡介</p><p><b>  JAVA技術(shù)簡介:</b></p><p>  Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言。Java 技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)

38、用于PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計算機、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。</p><p>  2.3 eclipse簡介</p><p>  Eclipse 是一個開放源代碼的、基于Java的可擴展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運的是,Eclipse 附帶了一個標準的插件集,包括Java開發(fā)工具。</p&

39、gt;<p>  2.4 ARM開發(fā)板相關(guān)知識:</p><p>  ARM開發(fā)板,即以英國ARM(Advanced RISC Machines)公司的內(nèi)核芯片作為CPU,同時附加其他外圍功能的嵌入式開發(fā)板,用以評估內(nèi)核芯片的功能和研發(fā)各科技類企業(yè)的產(chǎn)品。</p><p><b>  三、需求分析</b></p><p><

40、b>  3.1 五子棋解釋</b></p><p>  五子棋是一種兩人對弈的純策略型棋類游戲,通常雙方分別使用黑白兩色的棋子,下在棋盤直線與橫線的交叉點上,先形成5子連線者獲勝。</p><p>  棋具與圍棋通用,起源于中國上古時代的傳統(tǒng)黑白棋種之一。主要流行于華人和漢字文化圈的國家以及歐美一些地區(qū)。</p><p>  3.2 五子棋基本規(guī)則

41、</p><p>  1.對局雙方各執(zhí)一色棋子,由空棋盤開局。</p><p>  2.黑先、白后,交替下子,每次只能下一子。</p><p>  3.棋子下在棋盤的空白點上,棋子下定后,不得向其它點移動,不得從棋盤上拿掉或拿起另落別處。</p><p>  4. 最先在棋盤線交點橫向,縱向,斜向形成已方的五個棋子連續(xù)的一方為勝。</p

42、><p>  5.如下至最終一子仍不分勝負則定為平局。</p><p><b>  3.3 業(yè)務(wù)需求</b></p><p>  3.3.1 此系統(tǒng)使用范圍要求</p><p>  此系統(tǒng)為智力游戲,適合于各類游戲愛好者。由于其經(jīng)典性及其游戲的簡單性,各類人士都可以也都愛玩。人們在相互對戰(zhàn)享受娛樂的同時,也會體會到自己的智力

43、也會有所提升。</p><p>  3.3.2 功能要求</p><p>  本次設(shè)計的五子棋游戲主要由兩個模塊組成:</p><p><b>  3.4 性能需求</b></p><p>  設(shè)計的該款五子棋游戲功能非常簡單,主要的是實現(xiàn)雙人對戰(zhàn)模式。雖然系統(tǒng)不大,但已滿足玩家的基本要求。</p><

44、;p>  3.5 系統(tǒng)平臺需求</p><p><b>  編程語言:java</b></p><p>  操作系統(tǒng):Windows 7,Windows xp</p><p>  開發(fā)工具:eclipse </p><p>  調(diào)試設(shè)備:ARM開發(fā)板</p><p><b>  四

45、、系統(tǒng)設(shè)計與實現(xiàn)</b></p><p>  4.1 系統(tǒng)設(shè)計思路</p><p><b>  設(shè)計思想</b></p><p>  1. 本系統(tǒng)要實現(xiàn)五子棋的游戲功能,必須先有一個棋盤,這里設(shè)計的是一個10*10的棋盤,另外還有一個按鈕:重玩,點擊之后可以重新開始游戲。</p><p>  2. 對于下棋

46、的操作,先取得點擊的坐標值,然后換算成對應(yīng)棋盤上的位置。</p><p>  3. 判斷該顏色棋子的上下左右是否滿足連續(xù)五個,是的話提醒相對應(yīng)玩家獲勝,不是的話,更換玩家下棋。</p><p>  4. 對于玩家的更換是程序自動的,每次用戶點擊屏幕后,若本局還未結(jié)束則會變換玩家,直到有一方獲勝或者棋盤已滿雙方打平為止。</p><p><b>  系統(tǒng)設(shè)計

47、分析</b></p><p>  1. 本款游戲一開始默認為黑棋先下,雙方交替下棋。</p><p>  2. 繪制棋盤,棋盤一共10×10格,居中對齊,在直線交點處下棋子。</p><p>  3. 棋盤有設(shè)置按鈕監(jiān)聽狀態(tài),當有點擊屏幕上重玩按鈕的時候,則會清空棋盤,并默認黑棋先下。</p><p>  4. 當任何

48、一方有五個棋子沿著橫,豎,斜連在一起時,系統(tǒng)自動判斷贏棋,并在下方顯示黑棋或白棋勝利,提示玩家點擊重玩按鈕重新開始游戲。棋局結(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 開發(fā)環(huán)境的搭建</p><p>  4.2.1安裝必備的系統(tǒng)庫和工具</p><p>  拷貝“TQ210_CD\L

50、inux 平臺工具\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,完成對庫和 gcc 的安裝。&l

51、t;/p><p>  4.2.2 安裝交叉編譯器</p><p>  拷貝光盤中的“TQ210_CD\交叉編譯工具\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>  直接在終端運行java安裝包:cd /opt/Tools/;./jdk-6u30-linux-x64.bin。<

53、/p><p>  安裝完成后,會在同目錄(即/opt/Tools/目錄)得到安裝后的目錄,將其移動到“/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兩個壓縮包解壓到指定目錄下。</p><p>  4.2.6 Eclipse環(huán)境設(shè)置及新建一個AVD</p><p>  進入解壓目錄雙擊運行Eclipse,啟動后選擇一個工作空間,設(shè)置好后直接按OK。</p><p>  進入Ecl

55、ipse后選擇上面的window → preferences,然后左側(cè)選擇Android,在右側(cè)選擇sdk路徑,路徑為剛才sdk解壓的地方,設(shè)置好后按確定。</p><p>  新建一個AVD,打開設(shè)備管理器,選擇新建。設(shè)置好后按CreateAVD新建,新建后選中它,按start后按Launch運行。運行后結(jié)果如下:</p><p>  4.3 系統(tǒng)開發(fā)過程</p><

56、p>  首先在已經(jīng)配置好環(huán)境的Eclipse中新建工程,如圖所示:</p><p>  接下來是界面的設(shè)計,以下圖片分別為編輯器里的界面和虛擬機上的界面:</p><p>  接下來是下棋的位置確定,以及勝負的判斷算法,具體源碼已經(jīng)在附錄的關(guān)鍵源碼中。</p><p><b>  五、移植與測試</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>  進入解壓后的路徑,會發(fā)現(xiàn)有一個drivers文件夾,里面是存放的是驅(qū)動程序。TQ210 PDA自帶的驅(qū)動程序有:</p><p&

58、gt;  1.針對s5pv210的硬件解碼編碼驅(qū)動 2.圖像旋轉(zhuǎn)翻轉(zhuǎn)驅(qū)動</p><p>  3.數(shù)字攝像頭驅(qū)動 4.加速度傳感器驅(qū)動</p><p>  5.紅外接收驅(qū)動 6.溫度傳感器驅(qū)動</p><p>  7.Zigbee驅(qū)動SPI接口

59、8.YAFFS文件系統(tǒng)</p><p>  9.EXT4文件系統(tǒng) 10.UBIFS文件系統(tǒng)</p><p>  11.RTC驅(qū)動 12.IIC驅(qū)動</p><p>  13.LCD驅(qū)動 14.背光燈驅(qū)動</p>

60、<p>  15.觸摸驅(qū)動 16.ADC驅(qū)動</p><p>  17.PWM驅(qū)動 18.聲卡驅(qū)動</p><p>  19.100M網(wǎng)卡驅(qū)動 20.USB驅(qū)動</p><p>  21.4串口驅(qū)動

61、 22.用戶按鍵驅(qū)動</p><p>  23.SD卡驅(qū)動 24.SDIO WIFI驅(qū)動</p><p>  本次開發(fā)不精簡任何驅(qū)動程序。如果要精簡,則需使用命令make menuconfig進行配置,對應(yīng)需要的驅(qū)動選擇Y,不需要的選擇N,這樣就可以選擇想要的驅(qū)動進行編譯。</p><p&g

62、t;  配置完成后就進行編譯生成zImage.bin文件。</p><p>  5.2 編譯Android系統(tǒng)</p><p>  將光盤中的Android內(nèi)核源碼解壓到Linux系統(tǒng)的根目錄下,然后解壓源碼,之后選擇CoreB對應(yīng)編譯腳本build_coreB_android.sh。</p><p>  5.3 制作Android文件系統(tǒng)鏡像 </p>

63、<p>  5.3.1 解壓文件系統(tǒng)</p><p>  使用命令進行文件系統(tǒng)的解壓。</p><p>  5.3.2 五子棋移植及制作文件系統(tǒng)</p><p>  解壓過后就可以看到有rootfs_dir文件夾了,把開發(fā)的五子棋的apk安裝包放到rootfs_dir/system/app目錄下,即可使五子棋app成為系統(tǒng)內(nèi)置軟件,在安卓機上不可卸載。

64、也可對rootfs_dir/system/app目錄下的apk進行精簡,以定制自己所需要的Android系統(tǒng)。</p><p>  接下來對移植進app目錄下的wuziqi.apk文件進行權(quán)限設(shè)置,使用命令chmod 777 wuziqi.apk使程序變成可執(zhí)行的程序。</p><p>  使用命令制作Yaffs格式的文件系統(tǒng)(zllpp.bin)。</p><p>

65、;  5.4 開發(fā)板SD啟動卡制作</p><p>  5.4.1 u-boot編譯</p><p>  將u-boot源碼復(fù)制到Linux環(huán)境下,然后解壓。完成后配置u-boot,然后編譯。</p><p>  5.4.2 SD啟動卡制作</p><p>  將SD卡通過讀卡器連接到PC機上,打開SD卡制作工具</p><

66、;p>  對SD卡分區(qū)之后,選擇之前編譯的uboot鏡像文件,開發(fā)板類型選擇210選項進行制作。</p><p>  5.5 燒寫Android系統(tǒng)到開發(fā)板</p><p>  本次采用的是USB更新Android的方法,首先安裝好USB驅(qū)動。用USB線將開發(fā)板和電腦相連,打開TQBoardDNW軟件,接著將開發(fā)板開關(guān)撥到0110,然后啟動開發(fā)板,按空格鍵進入u-boot界面。<

67、;/p><p>  5.5.1燒寫u-boot</p><p>  按命令1進行u-boot更新,選擇菜單欄中的USB下載→uboot→選擇文件,選擇u-boot鏡像進行更新。</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),對YAFFS2文件系統(tǒng)進行更新。</

69、p><p>  5.5.4燒寫LOGO鏡像</p><p>  在一鍵式菜單中輸入命令4,接著選擇菜單中的USB下載→uboot→選擇文件,選擇LOGO鏡像進行燒寫。</p><p>  接著等全部燒寫完畢后,就可以將開發(fā)板開關(guān)撥到1000,然后重新啟動開發(fā)板,開發(fā)板啟動。</p><p><b>  5.6 測試</b>&

70、lt;/p><p>  對開發(fā)板上已經(jīng)安裝的五子棋進行測試,首先打開軟件,界面如下:</p><p>  接著試玩,分別測試黑棋,白棋以及打平情況時,程序的判斷算法是否能正確判斷出來,并且能顯示提示語,顯示結(jié)果如下:</p><p>  整個程序運行正常,開發(fā)結(jié)束。</p><p><b>  六、總結(jié)與展望</b><

71、/p><p><b>  6.1 總結(jié) </b></p><p>  這次課程設(shè)計老師給了一個月的時間去設(shè)計實現(xiàn),由于之前學(xué)習(xí)時一直接觸的是開發(fā)板的環(huán)境配置,所以在開發(fā)五子棋之前首先是對開發(fā)板進行進一步的了解,如該怎樣燒寫Android系統(tǒng)進去,開發(fā)出來的程序怎么安裝到開發(fā)板,怎么在開發(fā)板上調(diào)試等一系列的問題。懂了之后感覺安卓系統(tǒng)的軟件開發(fā)與調(diào)試還算是比較簡單的。<

72、/p><p>  再有就是花了兩個多星期的時間開發(fā)五子棋這個游戲,由于之前沒怎么接觸過Android開發(fā),雖然有用java開發(fā)一些系統(tǒng),但是這次遇到的問題還是比較多的,包括不熟悉怎么調(diào)試程序,不熟悉安卓開發(fā)的流程等,這次五子棋開發(fā)最重要的就是繪制棋盤以及最后的判斷輸贏算法,這兩個方面也是花了很多時間上網(wǎng)查了些資料才寫了出來,而在最后也只能開發(fā)出很簡單的五子棋游戲,就只有雙人對戰(zhàn)還有重玩兩個功能。其他的功能之前就有構(gòu)思

73、過,比如加個時間的倒計時,顯示當前應(yīng)該下棋的用戶,有悔棋功能,人機對戰(zhàn)等等,但是能力有限再加上時間已經(jīng)不夠了所以就沒有去擴充功能。</p><p>  不過通過這次課程設(shè)計,我了解了開發(fā)板的配置與使用,雖然沒有深入了解ARM的原理,但是已經(jīng)對嵌入式有了一個新的認識。</p><p><b>  6.2 展望</b></p><p>  隨著4G

74、智能手機的普及,人們對游戲的要求會越來越高。僅僅只是人機對戰(zhàn)不足以滿足用戶的需求,網(wǎng)絡(luò)對戰(zhàn)才是今后游戲發(fā)展的目標。用戶之間接收和發(fā)送信息,使五子棋游戲不僅僅局限于一臺手機上。</p><p>  同樣隨著社會的發(fā)展,手機系統(tǒng)的個性化定制也將變得更加的重要,根據(jù)用戶的需求進行定制將變成主流。</p><p><b>  參考文獻</b></p><p

75、>  【1】Java高級程序設(shè)計.北京:中國水利水電出版社,2006</p><p>  【2】海編著.Java程序設(shè)計習(xí)題集.北京:清華大學(xué)出版社,2006</p><p>  【3】吳其慶編著《Java程序設(shè)計實例教程》 [M] 冶金工業(yè)出版社,2006</p><p>  【4】《連珠五子棋入門》金盾出版社 彭建國,那威著 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=正在進行游戲,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 = "白棋獲勝!請點擊重玩重新開始游戲.";</p><p>  CharSequence LOSE = "黑棋獲勝!請點擊重玩重新開始游戲.";</p><p>  CharSequence EQUAL =

88、"雙方打平!請點擊重玩重新開始游戲.";</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è)置游戲為開始狀態(tài)</p><p>  wbflag = BLACK; // 初始為先下黑棋</p><p>  mWinFlag = 0; // 清空輸贏標志。</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>  // 畫棋盤</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>  // 畫棋盤的外邊框</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>  // 畫棋子</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>  // 通過圓形來畫</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>  // 通過圓形來畫</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、>  //計算是否勝出</b></p><p>  public boolean checkWin(int wbflag) {</p><p>  for (int i = 0; i < size - 1; i++)</p><p>  // i表示列(根據(jù)寬度算出來的)</p><p>  for (int j =

119、0; j < size - 1; j++) { // j表示行(根據(jù)高度算出來的)</p><p>  // 檢測橫軸五個相連</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個相連</b></p><p>  if (((j + 4) < (size - 1)) && (mGridArray[i][j] == wb

溫馨提示

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

評論

0/150

提交評論