【正文】
,這有助于我國優(yōu)秀文化的推廣。五子棋本身就是一款益智休閑游戲,規(guī)則簡單。特此聲明畢業(yè)設(shè)計(論文)作者: 指導(dǎo)教師: 年 月 日 年 月 日摘 要人工智能是近年來很活躍的研究領(lǐng)域之一,它與生物工程、空間技術(shù)一起被并列為二十一世界三大尖端技術(shù)。因本畢業(yè)設(shè)計(論文)引起的法律結(jié)果完全由本人承擔(dān)。北華航天工業(yè)學(xué)院畢業(yè)論文畢業(yè)設(shè)計報告(論文)報告(論文)題目:基于Qt的嵌入式終端應(yīng)用程序開發(fā)——五子棋游戲開發(fā) 作者所在系部: 計算機科學(xué)與工程系 作者所在專業(yè): 計算機科學(xué)與技術(shù) 作者所在班級: 作 者 姓 名 : 作 者 學(xué) 號 : 指導(dǎo)教師姓名: 完 成 時 間 : 2012年6月 北華航天工業(yè)學(xué)院教務(wù)處制北華航天工業(yè)學(xué)院本科生畢業(yè)設(shè)計(論文)原創(chuàng)性及知識產(chǎn)權(quán)聲明本人鄭重聲明:所呈交的畢業(yè)設(shè)計(論文)基于Qt的嵌入式終端應(yīng)用程序開發(fā)——五子棋游戲開發(fā)是本人在指導(dǎo)教師的指導(dǎo)下,獨立進(jìn)行研究工作取得的成果。本畢業(yè)設(shè)計(論文)成果歸北華航天工業(yè)學(xué)院所有。它的中心任務(wù)是研究如何使計算機去做那些過去只能靠人的智力才能做的工作。五子棋不僅能增強思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。本系統(tǒng)就以五子棋游戲作為研究課題,對五子棋的算法與規(guī)則做了研究,闡述了如何在 Linux下用 Qt來開發(fā)五子棋游戲并給出了具體的實現(xiàn)。本文介紹了在Linux操作系統(tǒng)中構(gòu)建Qtopia環(huán)境的過程。s hightech development projects invested tremendous human and material resources. The chess game on puter is an important branch of the research on artificial intelligence. The researches on chess game bring plenty of important methods and theories for researching on artificial intelligence, and cause broad influences on society and academe. Renju chess game means five pieces on one line, is a sort of game, which is full of wisdom, leisure and benefits, and the rules of it are very simple. Manmachine chess game Renju in one of the puter. To study the puter algorithm, we can see the beginning of artificial intelligence shadow, but also help us to human brain development. Backgammon invented in China , and the research it can allow more foreigners to understand and help to promote China39。 start。ARM是Advanced RISC Machines的首字母組合,是一類微型處理器的統(tǒng)稱。本系統(tǒng)就以五子棋游戲作為研究課題,對五子棋的算法與規(guī)則做了研究,闡述了如何在 Linux下用 Qt來開發(fā)五子棋游戲并給出了具體的實現(xiàn)。這種處理能力的提高是通過增加時鐘頻率和減少指令執(zhí)行周期實現(xiàn)的。許多國家的人對五子棋都有不同的愛稱,例如韓國人把五子棋稱為“情侶棋”,言下之意是說情人之間下五子棋有利于增加情感的交流;歐洲人稱之為“紳士棋”,喻棋手下五子棋的君子風(fēng)度勝似紳士:美洲人稱之為“商業(yè)棋”,意思可能是邊下五子棋邊談生意,是商業(yè)貿(mào)易之橋;日本人則稱之為“中老年棋”,表示五子棋適合成熟的中老年的生理特點和思維方式。在北京的帶動下,其他地區(qū)也先后成立了五子棋組織,從此積極的投身于這項益智的游戲中,2004年成立中國圍棋協(xié)會五子棋分會,它屬于中國五子棋界的領(lǐng)導(dǎo)機構(gòu),并且先后在部分地區(qū)組織俱樂部,組織比賽,讓越來越多的人參與和喜愛這項活動,但是中國還是沒有專業(yè)的棋手,在這方面的相關(guān)規(guī)則和體系還不完善,能夠真正弄懂的人還是很少,所以中國在五子棋這方面的發(fā)展空間還是很大的,這就需要我們不斷的努力探索和研究才能把五子棋發(fā)展的更加壯大。但與世界先進(jìn)的五子棋技術(shù)相比,我們的棋藝水平還有待進(jìn)一步提高,所以我們要推廣五子棋,宣傳五子棋。l QPE(Qtopia Executable):用于處理所有的用戶界面問題。l moc:用于Qt C++ 擴展的meta2object編譯器。在程序設(shè)計的過程中,要將傳統(tǒng)桌面應(yīng)用程序使用的類換成Qtopia的類。五子棋子游戲,玩法簡單,娛樂性也很高。作為一門邊緣學(xué)科,它有諸多的研究領(lǐng)域,博弈即為其中之一。此種娛樂方式既不耽誤時間也能輕松調(diào)劑娛樂,充分適合現(xiàn)代人們的娛樂需求。五子棋還有一大特點就是速戰(zhàn)速決,電腦應(yīng)在很短時間內(nèi)就應(yīng)做出判斷,所以要合理的設(shè)計判斷勝負(fù)的函數(shù)。系統(tǒng)中還設(shè)計了狀態(tài)顯示,和積分等功能,在黑方或者白方任意一方獲得勝利,都能及時的顯示勝負(fù)的一方。需要實現(xiàn)的的游戲重要功能:(1)主窗口:負(fù)責(zé)管理所有的部件,創(chuàng)建所有信號和槽的連接(2)棋盤類:繪制棋盤,把棋盤看成一個二維數(shù)組,處理鼠標(biāo)點擊事件,在點擊處一定范圍內(nèi)繪制棋子,然后最主要的就是算法,就是怎么走才算贏,這個要花時間研究(3)積分和勝負(fù)顯示,使游戲的人體會到勝利的快樂。增加圖形界面類(paintEvent()),把顯示功能從棋盤類中脫離出來,棋盤只負(fù)責(zé)棋子坐標(biāo)數(shù)據(jù)的存儲和更新。設(shè)計的開始、重來、退出、悔棋按鈕都用QPushButton類來實現(xiàn),并實現(xiàn)信號和槽函數(shù)的鏈接。用到了鼠標(biāo)點擊事件的處理,繪制棋子,和棋盤的函數(shù)drawpixmap()的使用。 Qt技術(shù)介紹Qt是一個多平臺的C++圖形用戶界面應(yīng)用程序框架,它是基于面向?qū)ο蟮乃枷脒M(jìn)行相應(yīng)開發(fā)的,支持真正意義上的組件編程,可以為不同用戶提供華麗的用戶界面。信號和插槽機制是 Qt 的核心機制,也是 Qt 的核心特性。在QObject類或者其一個子類(比如:QWidget類)繼承的所有類中,都存在了信號和槽。Qt 安裝配置1. 下載安裝包從網(wǎng)址Qt libraries for Windows (minGW , 354 MB) 和Qt Creator for Windows (53 MB)2. 安裝先安裝Qt Creator,安裝過程中會自動安裝minGw,并記住路徑以便安裝Qt Library時使用。目前已成功移植Linux,WINCE等操作系統(tǒng)到OK6410開發(fā)板。接口豐富,功能強大,適用于各種手持設(shè)備,消費電子和工業(yè)控制設(shè)備的開發(fā)。具有獨立的16KB 指令Cache 和16KB 數(shù)據(jù)Cache。— 指令高速存儲緩沖器(I–Cache),數(shù)據(jù)高速存儲緩沖器(D–Cache),寫緩沖器和物理地址TAG RAM 減少主存帶寬和響應(yīng)性帶來的影響?!?支持快速總線模式和同步總線模式— 尋址空間:每bank 128M 字節(jié)(總共1G 字節(jié))?!?8 個存儲器bank,其中6 個適用于ROM、SRAM 和其它,另外兩個適用于ROM/SRAM和同步DRAM。— 支持各種型號的ROM 引導(dǎo)(NOR/NAND FLASH、EEPROM,或其它)。— 每行8 字長度,其中每行帶有一個有效位和兩個dirty 位?!?可編程的占空比周期,頻率和極性?!?支持5 位、6 位、7 位或者8 位串行數(shù)據(jù)發(fā)送/接收?!?具有測試用的回還模式?!?兼容USB 標(biāo)準(zhǔn)。SD 主機接口— 基于普通、DMA 或中斷傳輸模式(字節(jié)、半字、字)?!?64 字節(jié)發(fā)送和接收FIFO。DISK DRUID 程序中有明顯的新建、刪除、編輯、重設(shè)等按鈕。文件系統(tǒng)類型:它指定了該分區(qū)的文件系統(tǒng)類型,可選項有 EXTEXTREISERFS、JFS、SWAP 等。它包括以下特性:自動重?fù)芴柕膿芴柲夸?,對串行設(shè)備 UUCP 格式的 lock 文件的支持,獨立的腳本語言解釋器,文件捕獲,多用戶單獨配置,等等。–M 跟“–m”一樣,但是假定 Meta 鍵設(shè)置字符高端的第八位(發(fā)送 128+字符代碼)。許多 PC–Unix 克隆不經(jīng)翻譯也能正確顯示它們(Linux 使用專門的模式:Coherent 和 Sco)。–t 終端類型,使用此標(biāo)志,可以重載環(huán)境變量 TERM,這在環(huán)境變量 MINICOM 中使用很方便;可以創(chuàng)建一個專門的 termcap 入口以備 mini 在控制臺上使用,它將屏幕初始化為 raw模式,這樣,連同‘–f’標(biāo)志一起,就可以不經(jīng)翻譯而顯示 IBM 行字符。使用‘–c on’可以打開此項。此模式用于顯示 8 位多字節(jié)字符,不是 8 位自否的語言都需要(例如顯示芬蘭文字就不需要這個)。export MINICOM或者其它等效的設(shè)置,然后啟動 mini,mini 會假定終端有 Meat 鍵或 Alt 鍵,并且支持彩色。編譯命令:make config(基于文本的最為傳統(tǒng)的配置界面,不推薦使用)make menuconfig(基于文本選單的配置界面,字符終端下推薦使用)make xconfig(基于圖形窗口模式的配置界面,Xwindow 下推薦使用)make oldconfig(如果只想在原來內(nèi)核配置的基礎(chǔ)上修改一些小地方,會省去不少麻煩)這三個命令中,make xconfig 的界面最為友好,但 如果你不能使用 Xwindow,那么就使用 make menuconfig 好了。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼??尚行匝芯渴菫榱伺宄到y(tǒng)開發(fā)的項目如何用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決,是否值得進(jìn)行研究的過程,實際上進(jìn)行可行性分析大大簡化了系統(tǒng)設(shè)計的過程。LINUX是一款免費的操作系統(tǒng),用戶可以通過網(wǎng)絡(luò)或其他途徑免費獲得,并可以任意修改其源代碼。OK6410開發(fā)板的價格也是可以接受的,且有用戶指導(dǎo)手冊,便宜開發(fā),易于使用。同時還設(shè)計了顯示勝負(fù),和積分的功能。1.實用性原則:確保網(wǎng)站具有良好的系統(tǒng)性能,友好的用戶界面,較高的處理效率。4.規(guī)范性原則:軟件設(shè)計過程盡量按照規(guī)范進(jìn)行,系統(tǒng)編碼,操作系統(tǒng)平臺以及所采用的開發(fā)方法也按照相應(yīng)的標(biāo)準(zhǔn)。需要實現(xiàn)的的游戲重要功能:(1)主窗口:負(fù)責(zé)管理所有的部件,創(chuàng)建所有信號和槽的連接(2)棋盤類:繪制棋盤,把棋盤看成一個二維數(shù)組,處理鼠標(biāo)點擊事件,在點擊處一定范圍內(nèi)繪制棋子,然后最主要的就是算法,就是怎么走才算贏,這個要花時間研究(3)積分和勝負(fù)顯示,使游戲的人體會到勝利的快樂。 QPainter greenPainter(this)。 QRect rect1(705,220,125,131)。 QRect rect3(690,0,331,232)。 QRect temptRect。 i++) { if([i].()0) break。 temptRect=QRect(p,mChessSize)。} 鼠標(biāo)處理事件的實現(xiàn)void MainWindow::mousePressEvent(QMouseEvent *e){ if(!=39。playing return。 if(!( (), () , 0) )//調(diào)用canput()和addrecord()添加記錄 { // printf(in mouse press Event cannot put chess\n)。判斷輸贏} QPoint MainWindow::changeMouseToGrid(const QPoint p){ int x=()mLeftMargin。 int sizex=()。 }//else if((()sizey)%sizey = sizey/2){ (y/sizey)。 if(()0||()0) return QPoint(1,1)。//sizex int y=()*sizey。 //? (y)。 int rx,ry。//0x15,0y15 switch(direction) { case 0://horizontal 39。 break。 dy=1。 { dx=1。/39。 } } // //每條