




已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)士學(xué)位畢業(yè)設(shè)計(論文)基于Qt的嵌入式程序開發(fā)五子棋游戲 學(xué)生姓名:陳春宇學(xué) 號:20114075104 指導(dǎo)教師:李文順 所在學(xué)院:信息技術(shù)學(xué)院專 業(yè):電子信息工程中國大慶2015年05月黑龍江八一農(nóng)墾大學(xué)本科畢業(yè)設(shè)計(論文)任務(wù)書學(xué)生姓名陳春宇所在班級電子2011(1)導(dǎo)師姓名李文順導(dǎo)師職稱副教授論文題目基于Qt的嵌入式終端應(yīng)用程序開發(fā)五子棋游戲題目分類1應(yīng)用與非應(yīng)用類:工程 科研 教學(xué)建設(shè) 理論分析模擬2軟件與軟硬結(jié)合類:軟件硬件軟硬結(jié)合非軟硬件(1、2類中必須各選一項適合自己題目的類型在內(nèi)打)主要研究內(nèi)容及指標(biāo): 1. 用Qt-creator進(jìn)行五子棋應(yīng)用程序的設(shè)計。1) 建立主機(jī)開發(fā)環(huán)境;2) 開發(fā)應(yīng)用程序;2. 將應(yīng)用程序移植到arm2440開發(fā)板上。主要參考文獻(xiàn):1 金春霞,白秋產(chǎn)基于Qt技術(shù)開發(fā)與實現(xiàn)北京:中國青年出版社,20022 于建新,賈世祥嵌入式應(yīng)用程序開發(fā)綜合實驗9例北京:清華大學(xué)出版社,20043 基于arm2440之Linux移植開發(fā)實戰(zhàn)指南4 侯捷,孟巖智能五子棋算法的設(shè)計實現(xiàn)5 彭建國,張書五子棋開局指南階段規(guī)劃:1. Qt的基本內(nèi)容的學(xué)習(xí),包括軟件安裝和庫函數(shù),API函數(shù),組件工具的應(yīng)用,信號和曹函數(shù)的運(yùn)用等基本技能的理解和學(xué)習(xí)。2. 熟練運(yùn)用Qt嘗試進(jìn)行五子棋游戲的程序編寫和界面處理,學(xué)習(xí)arm的系統(tǒng)移植和第三方資源庫的配置,學(xué)習(xí)熟悉應(yīng)用程序的燒寫過程。3. 全部完成五子棋游戲的應(yīng)用程序,并且燒寫進(jìn)開發(fā)板。最后成功運(yùn)行。開題時間2015.3.2完成論文時間2015.5.24專家審定意見:系主任簽字:年 月 日注:1任務(wù)書由指導(dǎo)教師填寫后交給學(xué)生,要求學(xué)生妥善保存。2此任務(wù)書夾于論文扉頁與論文一并裝訂,作為論文評分依據(jù)之。摘要摘要人工智能與生物工程、空間技術(shù)并稱為二十一世紀(jì)的三大尖端技術(shù),是近幾年非?;钴S的研究領(lǐng)域之一。它主要是研究如何使計算機(jī)去做那些只能靠人力才能做的事情。人機(jī)對戰(zhàn)是人工智能研究的其中一個分支,它的研究為人工智能帶來了許多的重要的方法和理論,并且產(chǎn)生了廣泛的社會和學(xué)術(shù)影響。研究其計算機(jī)算法,可以讓我們看到人工智能的雛形,也有助于我們?nèi)四X的開發(fā)。更有五子棋的游戲源于我國,研究它不僅讓更多的外國人了解五子棋,更有助于我國優(yōu)秀文化的推廣和傳播。本論文以五子棋游戲作為研究課題,對五子棋的算法與規(guī)則做了研究,闡述了如何在 Linux下用 Qt來開發(fā)實現(xiàn)五子棋游戲并且給出了具體實現(xiàn)的方法。關(guān)鍵詞:五子棋 Qt 人工智能 arm2440IVABSTRACTABSTRACTArtificial intelligence and biotechnology, space technology, and known as the 21st century the three cutting-edge technology, in recent years, a very active field of research is one of the. It mainly studies how to make the computer do that only rely on manpower to do. Man-machine war is the artificial intelligence research where a branch, its research for artificial intelligence has resulted in a number of important method and theory, and produced a wide range of social and academic impact. The study of computer algorithms, we can see the prototype of artificial intelligence development, but also help us to human brain. More Gobang game source in our country, the it not only let more foreigners to understand Gobang, but also help in the promotion and dissemination of the excellent culture in our country. This paper takes the chess game as the research subject, the Gobang algorithm and rule to do the research, elaborated how in linux using QT to develop to achieve Gobang game and give the concrete method of realizing the.Keywords: Gobang Qt artificial intelligence arm2440前言目錄摘 要IAbstractII前言IV1 緒論11.1 選題的目的和意義11.2 課題研究的主要內(nèi)容11.3 五子棋的一些規(guī)則和術(shù)語12 系統(tǒng)需求分析32.1 系統(tǒng)需求32.2 功能需求32.3 系統(tǒng)的設(shè)計目標(biāo)33 系統(tǒng)開發(fā)的技術(shù)背景53.1 Qt技術(shù)53.2 arm2440開發(fā)板簡介53.3 Linux操作系統(tǒng)簡介63.4可行性分析64 系統(tǒng)總體設(shè)計84.1 五子棋游戲設(shè)計原則84.2 五子棋游戲的總體設(shè)計結(jié)構(gòu)85 系統(tǒng)模塊設(shè)計95.1 用Qt-creator進(jìn)行五子棋應(yīng)用程序的主要功能實現(xiàn)95.2將應(yīng)用程序移植到arm2440的開發(fā)板上136 系統(tǒng)調(diào)試186.1 五子棋游戲測試概述186.2系統(tǒng)設(shè)計和移植過程中出現(xiàn)的問題及解決方法18結(jié) 論21參考文獻(xiàn)22致 謝23 前言在嵌入式技術(shù)的不斷發(fā)展和推廣下,嵌入式的應(yīng)用領(lǐng)域也變得廣泛起來。隨著IC設(shè)計的不斷發(fā)展衍生出的工業(yè)化ARM芯片,可以預(yù)見ARM微處理機(jī)在未來絕對是嵌入式開發(fā)的主宰。在開發(fā)五子棋人機(jī)對戰(zhàn)中的計算機(jī)算法的同時,讓我們看到人工智能的稚形,它有助于我們?nèi)四X的開發(fā)。五子棋最早是我國古代先人發(fā)明的,研究它不僅可以讓五子棋更國際化,還助于我國優(yōu)秀文化的推廣。所以我們以五子棋游戲作為畢業(yè)設(shè)計的研究課題,更對五子棋的算法與規(guī)則做出研究,闡述如何在 Linux環(huán)境下用 Qt來開發(fā)五子棋游戲。所有用戶界面都采用能跨多平臺的Qt圖形界面設(shè)計軟件進(jìn)行開發(fā)實現(xiàn),這是因為Qt圖形界面設(shè)計具有優(yōu)良的跨平臺、面向?qū)ο?、豐富的API、大量的開發(fā)文檔等諸多優(yōu)點。目前,五子棋這一棋類運(yùn)動已迅速在國際上發(fā)展起來?,F(xiàn)如今已經(jīng)有40多個國家和地區(qū)開展了五子棋相關(guān)活動和比賽。但由于人們對于五子棋不同的用意及使用方法,從而對五子棋的愛稱也不一樣,如韓國人把五子棋稱為“情侶棋”,言下之意也就是說情人之間下五子棋有利于增加情感和交流;歐洲人則稱之為“紳士棋”,喻棋手下五子棋的君子風(fēng)度勝似紳士;美洲人稱之為“商業(yè)棋”,意思可能是邊下五子棋邊談生意,是商業(yè)貿(mào)易之橋;日本人則稱之為“中老年棋”等等。但不同語言、地區(qū)的人們都可以借助五子棋這一簡單而又深奧的棋藝進(jìn)行交流、比賽,以增進(jìn)友誼。我國是上世紀(jì)90年代引進(jìn)了五子棋世界規(guī)則,此后的十多年里,五子棋在民間開始迅速的傳播開來。北京是五子棋發(fā)展最早也是普及最高的地區(qū),1992年就成立了我國的第一個五子棋民間組織“京都五子棋社”。在北京的帶動下,我國其他地區(qū)也先后成立了五子棋組織,從此積極的投身于這項益智的游戲中,2004年成立中國圍棋協(xié)會五子棋分會,它屬于中國五子棋界的領(lǐng)導(dǎo)機(jī)構(gòu),并且先后在部分地區(qū)組織俱樂部,組織比賽,讓越來越多的人參與和喜愛這項活動,但是中國還是沒有專業(yè)的棋手,在這方面的相關(guān)規(guī)則和體系還不完善,能夠真正弄懂的人還是很少,所以中國在五子棋方面的發(fā)展空間是很大的,這就需要我們不斷的努力探索和研究才能把五子棋發(fā)展的更加壯大。那么在現(xiàn)在網(wǎng)絡(luò)五子棋游戲的產(chǎn)生也讓更多的人收益,人們不僅可以和電腦下棋,還可以和異地的陌生人下棋,更可以在下棋的時候和對方交流心得,這就是我此次設(shè)計的主題,在未來的五子棋的發(fā)展來說的話,也許比賽的規(guī)則會改變,棋局會變的更復(fù)雜且所需的技巧也會越來越多,這就需要我們所有人的努力才會實現(xiàn)了。1 緒論1.1 選題的目的及意義五子棋對人的智力開發(fā)有一些益處,,并且在非智力因素上的幫助也是很明顯的,比如毅力、耐心、細(xì)心、思考方式等等。五子棋起源于我國古代,有著廣泛的群眾基礎(chǔ)。但與世界先進(jìn)的五子棋技術(shù)相比,我們的棋藝水平還有待進(jìn)一步提高,所以我們要積極地推廣五子棋,宣傳五子棋。中國作為五子棋的發(fā)源國,不僅要回到國際大家庭中,更重要的是要靠我們的力量為五子棋在下個世紀(jì)的發(fā)展起到世界性的推動作用,并為國際連珠棋成為奧運(yùn)項目做出自己的貢獻(xiàn)!1.2 課題研究的主要內(nèi)容開發(fā)主機(jī)裝有Linux 。我們選擇QT-embedded-2.3.4和Qtopia作為開發(fā)環(huán)境,下載RPM包并安裝。Qt Embedded和Qtopia函數(shù)庫:包含了完整的開發(fā)嵌入式Linux應(yīng)用程序的核心函數(shù)庫。主要完成的任務(wù)有NFS配置及使用,嵌入式Linux開發(fā)交叉編譯器的安裝,Bootloader 的編譯與燒寫,Linux 內(nèi)核的編譯與燒寫,根文件系統(tǒng)的燒寫與NFS掛載,編譯第三方庫,即在開發(fā)板上Qt所用到的庫文件。安裝完這些,再加上g+(GNU C+編譯器),就可以進(jìn)行基于Qtopia應(yīng)用程序的開發(fā)、編譯和調(diào)試了。1.3 五子棋的一些規(guī)則和屬術(shù)語五子棋游戲是專業(yè)圍棋的變體。五子棋的規(guī)則盡管比起那些圍棋要復(fù)雜一些,但它仍舊很簡單(Sakata 和Ikawa,1981),這個游戲是在一個15*15的棋盤的交叉點上進(jìn)行的。垂直線用字母A到O標(biāo)注,水平線用數(shù)字1到15標(biāo)注。棋盤左下方的位置的A1.黑棋白棋兩位玩家輪流執(zhí)他們自己的顏色的棋子放在棋盤中空的十字交叉點上。執(zhí)黑子的玩家先開始下棋,并且必須把棋子放在棋盤的正中間(H8)。最先完成五子連線(垂直、水平或斜線方向)的玩家獲勝。五子棋中黑子有一些限制,例如,對于黑子來說有些落子是被認(rèn)為禁止的,如果黑子落子被禁止不是偶然的就是被迫的,那么白子就獲勝了,禁止黑子落子的情況有: 長連, 雙四, 雙三(具體定義見第三部分)。白子沒有禁止落子的情況,所以白子也可以制造一個長連來贏得游戲,如果沒有選手成功的完成五子連線,并且黑子沒有禁止落子和棋盤已經(jīng)滿了,則認(rèn)為這盤游戲平局。下面我們提供一系列術(shù)語以及他們的定義。長連:六個或六個以上的同色棋子連成一線,垂直方向、水平方向或斜線方向(圖2“A”處)。五珠:精確的只有五個同色的棋子連成一線,垂直方向、水平方向或斜線方向。沖四:四個同色棋子連成一線(垂直、水平或斜線方向)并且兩邊的位置是空的,是一定會贏得一種情況(圖2“D”處)。四珠:四個一種顏色的棋子連成一排,再添加一個棋子就能連成五個。三珠:三個相同顏色的棋子連成一線,或是在三個棋子間有一個空位,只要再下一個相同的棋子在空位就能形成沖四。雙四:只下一步棋,就能形成一個同時存在的不止一排形成四子連線(圖2“B”處)。雙三:只下一步棋,就能形成一個同時存在的不止一個三子連線(圖2“C”處)。四三:只下一步棋,就能形成一個四子連線和一個三子連線同時存在的情況,對于黑子的勝利這是一種常用的辦法去建立一個勝利的布局(圖2“E”處)。圖 22 系統(tǒng)需求分析隨著現(xiàn)實生活中生活節(jié)奏的加速,生活壓力的加大,休閑娛樂變得越來越重要。五子棋子游戲,玩法簡單,娛樂性也很高。五子棋不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。通過對五子棋的設(shè)計與開發(fā),了解和掌握游戲開發(fā)的原理與方法。讓電腦像人腦一樣思考,一直是人工智能發(fā)展的最終目標(biāo)。作為一門邊緣學(xué)科,它有諸多的研究領(lǐng)域,博弈即為其中之一。所以對于本次研究可謂是集休閑功能和科學(xué)研究兩不誤了。2.1系統(tǒng)需求五子棋作為一款休閑益智游戲,它最大的優(yōu)點在于游戲規(guī)則家喻戶曉,簡單,上手快,趣味性強(qiáng),所以受廣大用戶青睞,在各大提供棋牌類游戲的平臺都可以看到玩五子棋游戲的人很多。休閑益智游戲中等級并不是最重要的追求目標(biāo),通過對游戲規(guī)則的熟悉,能很快上手掌握其操作方式,也更適合男女老幼全家共同娛樂,花費時間簡短,速戰(zhàn)速決,在短時間內(nèi)感受到游戲的樂趣,完全享受氣氛輕松活躍的游戲過程。此種娛樂方式既不耽誤時間也能輕松調(diào)劑娛樂,充分適合現(xiàn)代人們的娛樂需求。更主要的是開發(fā)了人的智力,成為年輕一代最流行的游戲,據(jù)統(tǒng)計,五子棋游戲的玩家中,學(xué)生占了接近三分之一的比例,對學(xué)生的智力健康成長起一定作用,正所謂休閑娛樂兩不誤。2.2 功能需求本應(yīng)用要求界面簡潔,美觀,交互性要比較強(qiáng)。操作方便,得體,把五子棋游戲規(guī)則中最基本的規(guī)則體現(xiàn)出來,比如“悔棋”、“重來”等。五子棋還有一大特點就是速戰(zhàn)速決,電腦應(yīng)在很短時間內(nèi)就應(yīng)做出判斷,所以要合理的設(shè)計判斷勝負(fù)的函數(shù)。由于“禁手”這一規(guī)則很復(fù)雜,所以在本應(yīng)用中,采用“無禁手”的規(guī)則,讓規(guī)則簡單化。這樣,讓初學(xué)的人對五子棋有更加高的可控度,能夠真正體會到下五子棋的快樂。在黑方或者白方任意一方獲得勝利,都能及時的顯示勝負(fù)的一方。2.3 系統(tǒng)的設(shè)計目標(biāo)設(shè)計基于Qt的五子棋程序接收的各種消息可以分為兩類:一類是由硬件裝置產(chǎn)生的消息(如鼠標(biāo)被按下),另一類是由玩家發(fā)送的消息。當(dāng)指定事件發(fā)生時,游戲判斷勝負(fù)的算法會根據(jù)下棋的相應(yīng)的位置來進(jìn)行。需要實現(xiàn)的的游戲重要功能:1.主窗口:負(fù)責(zé)管理所有的部件,創(chuàng)建所有信號和槽的連接2.棋盤類:繪制棋盤,把棋盤看成一個二維數(shù)組,處理鼠標(biāo)點擊事件,在點擊處一定范圍內(nèi)繪制棋子,然后最主要的就是算法,就是怎么走才算贏,這個要花時間研究3.勝負(fù)顯示,使游戲的人體會到勝利的快樂。4.設(shè)計按鈕達(dá)到控制開始、重來、悔棋、退出等功能。結(jié)合實際玩家需要,運(yùn)用Qt技術(shù)設(shè)計出五子棋游戲。要用鼠標(biāo)來獲取坐標(biāo)(mousePressEvent(),點擊的時候應(yīng)有一定的范圍。增加圖形界面類(paintEvent(),把顯示功能從棋盤類中脫離出來,棋盤只負(fù)責(zé)棋子坐標(biāo)數(shù)據(jù)的存儲和更新。mRecord類對下棋方的相關(guān)信息進(jìn)行了記錄,mnextturn變量對輪到哪一方下棋進(jìn)行了記錄。為使用界面更加的美觀,打算給界面貼一張背景圖(label-setPixmap(),棋盤的網(wǎng)格沒有用QPainter類的drawline()來實現(xiàn),因為直接畫出來的線條不美觀。棋子本身沒有用采用QPainter類的drawEllipse()畫圓并填充來實現(xiàn),而是直接drawImage()貼圖來實現(xiàn)。設(shè)計的開始、重來、退出、悔棋按鈕都用QPushButton類來實現(xiàn),并實現(xiàn)信號和槽函數(shù)的鏈接。游戲玩家可以根據(jù)游戲按鍵來控制游戲的開始,暫停和結(jié)束,在進(jìn)入游戲后,玩家可以通過鼠標(biāo)點擊來下棋,讓玩家體會到游戲的快樂以及戰(zhàn)斗的快樂。3 系統(tǒng)開發(fā)的技術(shù)背景本設(shè)計與建設(shè)過程中應(yīng)用的主要技術(shù)有用Qt開發(fā)五子棋應(yīng)用程序的開發(fā),還有就是應(yīng)用程序的移植,包括u-boot的燒寫,內(nèi)核的裁剪,根文件系統(tǒng)的燒寫,編譯第三方庫文件。 3.1 Qt技術(shù)介紹Qt是一個多平臺的C+圖形用戶界面應(yīng)用程序框架,它是基于面向?qū)ο蟮乃枷脒M(jìn)行相應(yīng)開發(fā)的,支持真正意義上的組件編程,可以為不同用戶提供華麗的用戶界面。信號和插槽機(jī)制是 Qt 的核心機(jī)制,也是 Qt 的核心特性。 Qt 有著自身的特點,不同于其他界面開發(fā)軟件,其中一個重要的地方,便是信號與插槽機(jī)制。信號和插槽是 Qt 自行定義的一種通信機(jī)制,Qt 編程語法是完全符合標(biāo)準(zhǔn) C/C+語言的,但是信號與插槽機(jī)制卻是獨立于標(biāo)準(zhǔn)的 C/C+,因此要正確的處理信號和插槽,必須借助一個稱為 moc(Meta Object Compiler)的 Qt工具,該工具是一個 C+預(yù)處理程序,它為高層次的事件處理自動生成所需要的附加代碼。信號/槽機(jī)制是在QObject類中實現(xiàn)的。在QObject類或者其一個子類(比如:QWidget類)繼承的所有類中,都存在了信號和槽。當(dāng)對象改變其狀態(tài)的時候,信號被發(fā)送,對象不關(guān)心有沒有其他對象接收到這個信號。槽是類的正常成員函數(shù),可以將信號和槽通過connect()函數(shù)任意連接。當(dāng)一個信號被發(fā)射,它所連接的槽會被立即執(zhí)行,如同一個普通函數(shù)調(diào)用一樣。Qt 的安裝和配置:1.下載Qt安裝包2.安裝Qt Creator,再安裝Qt Libraries3.打開Qt Creator,選擇工具|選項對話框,在構(gòu)建和運(yùn)行中點擊添加按鈕,選擇qmake.exe文件。4.跟著新建項目的向?qū)б徊揭徊阶鼍涂梢粤?,項目的工作目錄不能有中文,否則make的時候會報錯。3.2 arm2440開發(fā)板簡介Arm2440是由飛凌嵌入式技術(shù)有限公司設(shè)計生產(chǎn)的一款嵌入式開發(fā)平臺,適用于設(shè)計移動手持設(shè)備類產(chǎn)品。Arm2440開發(fā)板采用核心板+底板設(shè)計,性能穩(wěn)定可靠,具有高性能、低功耗、接口豐富和體積小等優(yōu)良特性。目前已成功移植Linux,WINCE等操作系統(tǒng)到開發(fā)板。Arm2440開發(fā)板采用核心板+底板結(jié)構(gòu),開發(fā)板的布局和走線經(jīng)過精心設(shè)計,可穩(wěn)定運(yùn)行在400MHz。接口豐富,功能強(qiáng)大,適用于各種手持設(shè)備,消費電子和工業(yè)控制設(shè)備的開發(fā)。三星公司推出的這款16/32 位RISC 處理器S3C2440A,是面向高端手持設(shè)備或其它一般應(yīng)用而設(shè)計的芯片。整體設(shè)計融合了MMU、AMBA BUS 和Harvard結(jié)構(gòu)。具有獨立的16KB 指令Cache 和16KB 數(shù)據(jù)Cache。3.3 Linux操作系統(tǒng)簡介Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。在安裝linux系統(tǒng)的時候我們必須交叉編譯已下載的linux源碼。我們編譯的是 2.6 的內(nèi)核,采用的交叉編譯器為 3.4.1 版本。編譯命令:make menuconfig(基于文本選單的配置界面)交叉編譯就是在一種計算機(jī)環(huán)境中運(yùn)行的編譯程序,能編譯出在另外一種環(huán)境下運(yùn)行的代碼,我們就稱這種編譯器支持交叉編譯。這個編譯過程就叫交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。如 keil 軟件,在 keil 上編譯,但在單片機(jī)上運(yùn)行,典型的交叉編譯。我們在開發(fā)板上運(yùn)行的程序,是在PC機(jī)上編譯的,所以是交叉編譯。3.4可行性分析進(jìn)行可行性分析是非常必要的,也是很重要的,本系統(tǒng)的可行性研究主要是參考已存在并正處于運(yùn)行的類似系統(tǒng)和經(jīng)過最初的設(shè)計目標(biāo)及進(jìn)行的市場調(diào)查分析為評價尺度,考慮其技術(shù)可行性、經(jīng)濟(jì)可行性和操作可行性??尚行匝芯渴菫榱伺宄到y(tǒng)開發(fā)的項目如何用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決,是否值得進(jìn)行研究的過程,實際上進(jìn)行可行性分析大大簡化了系統(tǒng)設(shè)計的過程。LINUX系統(tǒng)屬于開放源代碼軟件,由于LINUX系統(tǒng)具有穩(wěn)定、安全、網(wǎng)絡(luò)負(fù)載力強(qiáng)、占用硬件資源少等技術(shù)特點,自問世以來得到了迅速推廣和應(yīng)用,并已發(fā)展為當(dāng)今世界的主流的嵌入式操作系統(tǒng)之一。LINUX在嵌入式的廣泛應(yīng)用不是偶然的,這就取決于LINUX操作系統(tǒng)特點。LINUX是一款免費的操作系統(tǒng),用戶可以通過網(wǎng)絡(luò)或其他途徑免費獲得,并可以任意修改其源代碼。這是其他的操作系統(tǒng)所做不到的。正是由于這一點,來自全世界的無數(shù)程序員參與了LINUX的修改、編寫工作,程序員可以根據(jù)自己的興趣和靈感對其進(jìn)行改變。這讓LINUX吸收了無數(shù)程序員的精華,不斷壯大。Arm2440開發(fā)板的價格也是可以接受的,且有用戶指導(dǎo)手冊,便宜開發(fā),易于使用。本應(yīng)用使用Qt開發(fā),Qt具有良好的可靠性、可用性、可編程性與易用性。它有優(yōu)良的跨平臺特性,Qt支持Microsoft Windows 95/98、Microsoft Windows NT、Linux、Solaris、SunOS、HP-UX、Digital UNIX 、Irix、FreeBSD、BSD/OS、SCO、AIX、OS390、QNX等等眾多的操作系統(tǒng);并且Qt 的良好封裝機(jī)制也使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常方便的;Qt還支持主題,基于Qt的應(yīng)用程序能夠在Windows外觀、Motif外觀,以及其它一些用戶化外觀主題之間切換;Qt也提供了大量的聯(lián)機(jī)參考文檔,有超文本HTML方式,也有UNIX幫助頁Man手冊頁和補(bǔ)充說明。對于初學(xué)者,其中的指南將一步步介紹如何進(jìn)行Qt編程;還有Qt的便利性,支持 2D/3D 圖形渲染,支持 OpenGL。以及本身豐富的 API。Qt為專業(yè)應(yīng)用提供了大量的函數(shù),在Qt的API中含有大約250個C+類,大多數(shù)的類都是GUI專有的,甚至還包括正則表達(dá)式的處理功能。本應(yīng)用前臺作為與用戶直接交互的界面,在設(shè)計考慮功能的同時,也考慮了操作的簡潔和方便性,設(shè)計了方便用戶使用的按鈕,如開始按鈕,重來按鈕,退出按鈕,悔棋按鈕,目的是讓大多數(shù)不熟練電腦操作的客戶,也能輕松的享受本系統(tǒng)給他們帶來的便利。因此該系統(tǒng)在操作上是可行的。4 系統(tǒng)總體設(shè)計4.1 五子棋游戲設(shè)計原則一個好的游戲往往要遵循游戲的設(shè)計原則,主要是從實用性,先進(jìn)性,兼容性和規(guī)范性上進(jìn)行設(shè)計。而各個原則的具體描述如下。1實用性原則:確保具有良好的系統(tǒng)性能,友好的用戶界面,較高的處理效率。2先進(jìn)性原則:采用先進(jìn)而成熟的技術(shù),使軟件具有較高的技術(shù)水平和較長的生命周期。3兼容性原則:對于所選硬件系統(tǒng)及平臺,能很好地適應(yīng)開發(fā)和使用。4規(guī)范性原則:軟件設(shè)計過程盡量按照規(guī)范進(jìn)行,系統(tǒng)編碼,操作系統(tǒng)平臺以及所采用的開發(fā)方法也按照相應(yīng)的標(biāo)準(zhǔn)。4.2 五子棋游戲的總體設(shè)計結(jié)構(gòu)本系統(tǒng)主要包括包括繪制出棋子和棋盤,設(shè)置出開始、重來、悔棋、退出等按鈕功能。用到了鼠標(biāo)點擊事件的處理,繪制棋子,和棋盤的函數(shù)drawpixmap()的使用。還有勝負(fù)的判斷顯示。需要實現(xiàn)的的游戲主要功能:(1)主窗口:負(fù)責(zé)管理所有的部件,創(chuàng)建所有信號和槽的連接(2)棋盤類:繪制棋盤,把棋盤看成一個二維數(shù)組,處理鼠標(biāo)點擊事件,在點擊處一定范圍內(nèi)繪制棋子,然后最主要的就是算法,就是怎么走才算贏,這個要花時間研究(3)勝負(fù)顯示,使游戲的人體會到勝利的快樂。(4)設(shè)計按鈕,控制開始、重來、悔棋、退出等功能。5 系統(tǒng)模塊設(shè)計5.1 用Qt-creator進(jìn)行五子棋應(yīng)用程序的主要功能實現(xiàn)本五子棋應(yīng)用程序有繪制棋盤和棋子的功能,鼠標(biāo)處理事件的實現(xiàn),將鼠標(biāo)坐標(biāo)轉(zhuǎn)換為方格子的坐標(biāo)等多個主要函數(shù)。1.繪制棋盤和棋子的功能:void MainWindow:paintEvent(QPaintEvent* ) QPainter painter(this); QPainter greenPainter(this); greenPainter.setBrush(Qt:green); QRect rect1(10,10,695,554); painter.drawPixmap(rect,*mChessboardPixmap); QRect rect2(705,220,125,130); painter.drawPixmap(rect1,*mheifangPixmap); QRect rect3(830,220,125,130); painter.drawPixmap(rect2,*mbaifangPixmap); QRect rect4(690,0,331,231); painter.drawPixmap(rect3,*mbanPixmap); QRect rect5(690,352,261,260); painter.drawPixmap(rect4,*mbanPixmap); QRect temptRect; int i; for( i=0; i225; i+) if(mGameLogic.mChessRecord.mRecordi.mPoint.x()pos(); if(p.x()0|p.y()=(745-170)/mSize.width()-mLeftMargin-mRightMargin) return(QPoint(-1,-1); QPoint g; int sizex=mgridSize.width(); int sizey=mgridSize.height(); if(p.x()-sizex)%sizex = sizex/2) g.setX(x/sizex); /if else g.setX(x/sizex+1); /else if(p.y()-sizey)%sizey = sizey/2) g.setY(y/sizey); /if else g.setY(y/sizey+1); /else return g;4.將方格子的坐標(biāo)轉(zhuǎn)換為鼠標(biāo)坐標(biāo):QPoint MainWindow:changeGridToMouse(const QPoint g) QPoint p; if(g.x()0|g.y()0) return QPoint(-1,-1); int sizex=mgridSize.width(); int sizey=mgridSize.height(); int x=g.x()*sizex; int y=g.y()*sizey; x+=mLeftMargin; y+=mTopMargin; p.setX(x); p.setY(y); if(g.x()0|g.y()0) printf(int convertGridToMouse size:(%d,%d) grid x,y : %d,%d mouse x, y:%d,%d n,sizex, sizey, g.x(), g.y(), p.x(), p.y(); return p;5.計算direction 方向的side方棋子個數(shù):/以x,y點為中心,計算direction 方向的side方棋子個數(shù)/0x15,0y15int GameLogic : CountStones(int x, int y ,int side, int direction) int count=1; int rx,ry; int dx=0,dy=0; rx=x;ry=y; switch(direction) case 0:/horizontal - dx=-1; dy=0; break; case 1:/vertical | dx=0; dy=-1; break; case 2:/ dx=-1; dy=-1; break; case 3:/ / dx=-1;dy=1; break; /每條線上兩個方向 for(int i=0; i=0&rx+dx=0&ry+dy=5 |CountStones(x,y,z,1)=5 |CountStones(x,y,z,2)=5 |CountStones(x,y,z,3)=5) return true; else return false;5.2將應(yīng)用程序移植到arm2440開發(fā)板上將應(yīng)用程序移植到arm2440的開發(fā)板上主要完成的有嵌入式Linux開發(fā)交叉編譯器的安裝,Bootloader的編譯與燒寫等。嵌入式系統(tǒng)的交叉開發(fā)環(huán)境一般包括交叉編譯器、交叉調(diào)試器和系統(tǒng)仿真器,其中交叉編譯器用于在宿主機(jī)上生成能在目標(biāo)機(jī)上運(yùn)行的代碼,而交叉調(diào)試器和系統(tǒng)仿真器則用于在宿主機(jī)與目標(biāo)機(jī)間完成嵌入式軟件的調(diào)試。在采用宿主機(jī)/目標(biāo)機(jī)模式開發(fā)嵌入式應(yīng)用軟件時,首先利用宿主機(jī)上豐富的資源和良好的開發(fā)環(huán)境開發(fā)和仿真調(diào)試目標(biāo)機(jī)上的軟件,然后通過串口或者用網(wǎng)絡(luò)將交叉編譯生成的目標(biāo)代碼傳輸并裝載到目標(biāo)機(jī)上,并在監(jiān)控程序或者操作系統(tǒng)的支持下利用交叉調(diào)試器進(jìn)行分析和調(diào)試,最后目標(biāo)機(jī)在特定環(huán)境下脫離宿主機(jī)單獨運(yùn)行。BootLoader 就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過它,初始化硬件設(shè)備、建立內(nèi)存空間映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。在嵌入式系統(tǒng)中,通常并沒有像BIOS 那樣的固件程序,因此整個系統(tǒng)的加載啟動任務(wù)就完全由BootLoader 來完成。Bootloader 的實現(xiàn)嚴(yán)重依賴于具體硬件,在嵌入式系統(tǒng)中硬件配置千差萬別,即使是相同的CPU,它的外設(shè)也可能不同,所以不可能有一個Bootloader 支持所有的CPU、所有的電路板。即使是支持CPU 架構(gòu)比較多的U-Boot,也不是一拿來就可以使用的(除非里面的配置剛好與你的板子相同),需要進(jìn)行一些移植。Linux 內(nèi)核的編譯與燒寫、將Linux 內(nèi)核采用arm-linux-gcc3.4.1 交叉編譯生成uImage 格式的二進(jìn)制文件,之后將其燒寫入開發(fā)板的Flash 存儲器。我們可以通過NFS方式掛載根文件系統(tǒng)。U-boot設(shè)置bootargs參數(shù)(啟動參數(shù))為console=ttySAC0,115200 root=/dev/nfs nfsroot=01:/work/nfsdir/rootfs ip=02:eth0其中01為nfs server ip地址,/work/nfsdir/為分享目錄,根文件系統(tǒng)位于/work/nfsdir/rootfs;02為開發(fā)板 ip地址;root=/dev/nfs表示以NFS方式掛載根文件系統(tǒng)。然后編譯第三方庫,QTOPIA所依賴的庫文件。1.安裝交叉編譯環(huán)境:將cross-2.95.3.tar.bz2 放到/usr/local/arm 文件夾下解壓,# tar jxvf cross-2.95.3.tar.bz2這個命令會在你的/usr/local/arm/2.95.3 目錄下安裝arm-linux-gcc 交叉編譯程序,然后在PATH 變量中添加一項:export PATH=/usr/local/arm/2.95.3/bin:$PATH測試:# arm-linux-gcc -v /該命令可查看編譯器的版本解壓qtopia-free-src-2.2.1.tar.gz(tar zxvf)2.編譯e2fsprogs-1.39:要得到qtopia 所需的二個文件,uuid.h 及l(fā)ibuuid.so。# cd /root/yizhi/e2fsprogs-1.39設(shè)置環(huán)境變量# export PATH=/usr/local/arm/2.95.3/bin:$PATH# export CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc# ./configure -enable-elf-shlibs -host=arm-linux-with-cc=/usr/local/arm/2.95.3/bin/arm-linux-gcc-with-linker=/usr/local/arm/2.95.3/bin/arm-linux-ld-prefix=/usr/local/arm/2.95.3/arm-linux# make將e2fsprogs-1.39/lib/目錄下uuid 的文件夾復(fù)制到y(tǒng)izhi/arminclude 下# cp -r /lib/uuid /root/yizhi/arminclude# cp lib/libuuid.so* /root/yizhi/armlib# cp /lib/libuuid.a /root/yizhi/armlib3.編譯jpeg 庫:解壓tar zxvf jpegsrc.v6b.tar.gz 到/root/yizhi# cd jpeg-6b設(shè)置環(huán)境變量# export QTDIR=/root/yizhi/qtopia-free-2.2.0/# export QTEDIR=/root/yizhi/qtopia-free-2.2.0/qtopia/# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH# export PATH=/usr/local/arm/2.95.3/bin:$PATH# export CC= /usr/local/arm/2.95.3/bin/arm-linux-gcc# ./configure -enable-shared修改生成的Makefile 文件:prefix = /root/yizhi/qt-2.3.10CC= /usr/local/arm/2.95.3/bin/arm-linux-gccAR= /usr/local/arm/2.95.3/bin/arm-linux-ar rcAR2= /usr/local/arm/2.95.3/bin/arm-linux-ranlib保存# cp jconfig.doc jconfig.h在你的qt-2.3.10 中建立4 個文件目錄:/bin /include /lib /man/man1最后:# make# make install lib# cp jpeglib.h jconfig.h jmorecfg.h /root/yizhi/arminclude# cp /root/yizhi/qt-2.3.10/lib/libjpeg.so* /root/yizhi/armlib就可以給qt-embedded 添加好for arm 的libjpeg 庫放到交叉編譯的Lib 一份#cp/root/yizhi/qt-2.3.10/lib/libjpeg.so* /usr/local/arm/2.95.3/arm-linux/lib4.編譯qtopia:vi /root/yizhi/qtopia-free-2.2.0/qtopia/mkspecs/qws/linux-arm-g+/qmake.conf將此行QMAKE_LIBS_QT = -lqte修改為QMAKE_LIBS_QT = -lqte -lpng -lz -luuid -ljpeg如果想讓Qtopia 支持鼠標(biāo),需要修改$QPEDIR/src/qt/qconfig-qpe.h 文件注釋如下
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化創(chuàng)意產(chǎn)業(yè)股權(quán)轉(zhuǎn)讓與品牌授權(quán)合同范本
- 房地產(chǎn)開發(fā)股份協(xié)議合同范本
- 股權(quán)轉(zhuǎn)讓瑕疵風(fēng)險評估與管理合同
- 股票投資與金融科技融合發(fā)展合作協(xié)議
- 2025-2030中國全脂消毒牛奶行業(yè)調(diào)研分析及發(fā)展趨勢預(yù)測研究報告
- 2025-2030中國ATM機(jī)市場發(fā)展規(guī)劃及銷售盈利模式分析報告
- 隧道施工進(jìn)尺檢查方案
- 鄉(xiāng)鎮(zhèn)街道危房拆除方案
- 白酒企業(yè)采購方案
- 種糧大戶耕地流轉(zhuǎn)方案
- 2023年浙江黃龍體育發(fā)展有限公司招聘筆試模擬試題及答案解析
- 外科學(xué)骨折概論課件
- 阿片類藥物鎮(zhèn)痛機(jī)制課件
- 產(chǎn)品成本核算流程圖
- 二等水準(zhǔn)測量記錄表
- 母線槽安裝檢驗批質(zhì)量驗收記錄
- 生物吸附課件
- 游泳池水質(zhì)檢測記錄表
- 臨時占道申請書(精品)
- 10kV電容器組安裝施工方案(共7頁)
- 測量不確定度評定報告excel(自動計算)
評論
0/150
提交評論