![基于Android的中國象棋的設(shè)計與實(shí)現(xiàn)畢業(yè)論文_第1頁](http://file4.renrendoc.com/view/dfa4d4d12d7e4aa873756db6c545aece/dfa4d4d12d7e4aa873756db6c545aece1.gif)
![基于Android的中國象棋的設(shè)計與實(shí)現(xiàn)畢業(yè)論文_第2頁](http://file4.renrendoc.com/view/dfa4d4d12d7e4aa873756db6c545aece/dfa4d4d12d7e4aa873756db6c545aece2.gif)
![基于Android的中國象棋的設(shè)計與實(shí)現(xiàn)畢業(yè)論文_第3頁](http://file4.renrendoc.com/view/dfa4d4d12d7e4aa873756db6c545aece/dfa4d4d12d7e4aa873756db6c545aece3.gif)
![基于Android的中國象棋的設(shè)計與實(shí)現(xiàn)畢業(yè)論文_第4頁](http://file4.renrendoc.com/view/dfa4d4d12d7e4aa873756db6c545aece/dfa4d4d12d7e4aa873756db6c545aece4.gif)
![基于Android的中國象棋的設(shè)計與實(shí)現(xiàn)畢業(yè)論文_第5頁](http://file4.renrendoc.com/view/dfa4d4d12d7e4aa873756db6c545aece/dfa4d4d12d7e4aa873756db6c545aece5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
實(shí)訓(xùn)報告實(shí)訓(xùn)項(xiàng)目名稱基于Android象棋游戲的開發(fā)與測試二級學(xué)院信息工程學(xué)院專業(yè)班級11級計科(2)班姓名完圓圓、李城城、孫超、胡迪學(xué)號1142151221、14、20、08日期2014-11-19項(xiàng)目名稱基于安卓象棋游戲的開發(fā)與測試地點(diǎn)教13603報告內(nèi)容在本報告中,首先介紹了安卓的現(xiàn)狀以及開發(fā)的相關(guān)知識,其次是關(guān)于開發(fā)游戲過程中用到的開發(fā)工具和系統(tǒng)的運(yùn)行環(huán)境配置等。通過對Android系統(tǒng)架構(gòu)和應(yīng)用開發(fā)進(jìn)行初步研究,設(shè)計一款中國象棋游戲。在對系統(tǒng)進(jìn)行詳細(xì)需求分析的基礎(chǔ)上,確定了系統(tǒng)的功能和性能要求,對游戲的菜單界面、屏幕繪制、時間控制、布局算法和動畫等進(jìn)行了設(shè)計,并最終實(shí)現(xiàn)了一個界面友好、高效穩(wěn)定和富有娛樂性的手機(jī)益智游戲。最后,實(shí)現(xiàn)的是對本次游戲的測試并列舉了測試用列以及給出了測試結(jié)果。教師評語成績:教師簽名:摘要中國象棋是一款智力休閑游戲,具有歷史悠久而且擁有巨大的游戲愛好者群體,他們以中國象棋陶冶情操、鍛煉智力、體驗(yàn)象棋帶來的快樂,中國象棋還是一個老少皆宜的娛樂游戲。隨著手持設(shè)備、智能手機(jī)的普及,搭載Android操作系統(tǒng)的智能手機(jī)也已經(jīng)走進(jìn)了千家萬戶,當(dāng)人們閑暇偶爾需要娛樂時,卻發(fā)現(xiàn)沒有實(shí)物象棋,該軟件不失為一個很好的替代品,供大家進(jìn)行娛樂享受,尤其是在現(xiàn)在這個快節(jié)奏的社會中,人們更滿足于手機(jī)的使用,可以方便地隨意移動,不像實(shí)物象棋那樣靜靜的坐著。本論文通過實(shí)際應(yīng)用軟件的開發(fā)深入分析和研究Android開發(fā)技術(shù)。實(shí)現(xiàn)中國象棋的人機(jī)會話。本文實(shí)現(xiàn)了中國象棋在計算機(jī)中表示問題,基于Android平臺應(yīng)用,人機(jī)對戰(zhàn)模擬現(xiàn)實(shí)中的人人對戰(zhàn);討論走棋規(guī)則和著法的實(shí)現(xiàn)等一系列問題,最終電腦能夠通過產(chǎn)生著法,搜索,估計來產(chǎn)生一步最優(yōu)的走棋,實(shí)現(xiàn)人機(jī)會話的目的。關(guān)鍵字:中國象棋,Android,智能手機(jī),人機(jī)對戰(zhàn)目錄TOC\o"1-3"\h\u265501緒論 緒論研究背景中國象棋背景中國象棋發(fā)展至今已有兩千三、四百年的歷史,早在戰(zhàn)國時期就有正式的記載,堪稱中國的國粹。中國象棋具有悠久的歷史,深的人們的喜愛,象棋的愛好者也更是數(shù)不勝數(shù),遠(yuǎn)在戰(zhàn)國中國象棋便在貴族階層廣為流傳,早期的象棋是象征著當(dāng)時戰(zhàn)斗場面的游戲,后來這種觀念慢慢被改變,經(jīng)過千年的流傳不斷的完善和改進(jìn),成為人們休閑娛樂、鍛煉腦力思維不可獲取的好方式。中國象棋體現(xiàn)的是一種策略,方寸之間包含天地玄機(jī),人生哲理,使人越是細(xì)玩越覺其味悠然深遠(yuǎn)。由于簡單的行棋規(guī)則,趣味性強(qiáng),便捷的載體,使得象棋成為雅俗共賞的競技項(xiàng)目。因此,也成為流行極為廣泛的棋藝活動。是我國正式開展的78個體育項(xiàng)目之一,為促進(jìn)該項(xiàng)目在世界范圍內(nèi)的普及和推廣,在中國古代,象棋被列為士大夫們的修身之藝,現(xiàn)在則被視為怡神益智的一種有益的活動。有著數(shù)以億計的愛好者。它不僅能豐富文化生活,陶冶情操,在棋戰(zhàn)中,人們可以從攻與防、虛與實(shí)、整體與局部等復(fù)雜關(guān)系的變化中悟出某種哲理;更有助于開發(fā)智力,啟迪思維,鍛煉辨證分析能力和培養(yǎng)頑強(qiáng)的意志。Android系統(tǒng)簡介Android系統(tǒng)構(gòu)架簡介:Android是一個基于Linux?V2.6內(nèi)核的交互性操作環(huán)境,同時它也是一個分層系統(tǒng),Android系統(tǒng)架構(gòu)顯示如下圖1.1。圖1.1系統(tǒng)架構(gòu)圖應(yīng)用層由所有的Android應(yīng)用程序組成。其中包括電子郵件客戶端,SMS程序,地圖,瀏覽器,聯(lián)系人及其他。所有的應(yīng)用程序都是用Java編程語言編寫的。應(yīng)用框架層定義了Android應(yīng)用程序框架。所有的Android應(yīng)用程序都是基于應(yīng)用框架的。Android應(yīng)用框架包括:豐富及可擴(kuò)展性的視圖,可以用來建立一個美觀的用戶界面,包括列表,網(wǎng)格,文本框,按鈕,甚至是嵌入到Web瀏覽器的應(yīng)用程序。一組內(nèi)容提供商,使應(yīng)用程序能夠訪問其他應(yīng)用程序的數(shù)據(jù)(如電話簿),或共享自己的數(shù)據(jù)。資源管理器提供了訪問的非編碼資源的途徑,如本地化的字符串,圖形,布局文件。通知管理器允許所有應(yīng)用程序顯示定制的提示或通知在狀態(tài)欄里。活動管理器可以管理應(yīng)用程序的生命周期,并提供一個通用的后臺堆棧導(dǎo)航。庫層包括了一套被各類Android系統(tǒng)組件使用的C/C++庫并對應(yīng)用程序框架提供支持。Android的運(yùn)行環(huán)境包括一套核心庫和Java虛擬機(jī)(Dalvik虛擬機(jī)),已經(jīng)由谷歌重新設(shè)計和優(yōu)化來適合Android平臺。Linux內(nèi)核位于Android系統(tǒng)的底層并作為硬件和軟件之間的一個抽象層。它提供了核心系統(tǒng)服務(wù),如安全,內(nèi)存管理,進(jìn)程管理,網(wǎng)絡(luò)協(xié)議棧和驅(qū)動模型。此外,一些底層功能如Dalvik虛擬機(jī)線程管理也依賴于Linux內(nèi)核。本論文研究意義中國象棋是一項(xiàng)智力和策略的游戲,以往都是人和人下棋,現(xiàn)在有了計算機(jī)我們可以和計算機(jī)競技,人可以與計算機(jī)進(jìn)行對弈??刂朴嬎銠C(jī)的是人類,而人機(jī)會話綜合性很強(qiáng)的一門邊緣學(xué)科,它的中心任務(wù)是研究使計算機(jī)如何去做那些過去只能靠人的智力才能做的工作。因此,對游戲開發(fā)過程中的人工智能技術(shù)的研究自然也就成了業(yè)界的一個熱門研究方向。本次論文的研究,主要是對中國象棋在Android系統(tǒng)中的兼容行性,對游戲界面可觀性,游戲中人機(jī)會話的研究。對于游戲中的人機(jī)會話的要點(diǎn):a某種在及其上表示棋局的方法,讓程序知道會話的狀態(tài);b產(chǎn)生合法的走棋法則,使得會話雙方公正,并可以判斷人類對手是否亂走;c從所有和法定的走法中選擇最佳的走法的技術(shù);d一種評估局面優(yōu)化的方法,同上面技術(shù)配合做出智能選擇;e一個實(shí)現(xiàn)游戲的界面;通過對游戲的設(shè)計,來實(shí)現(xiàn)游戲中棋牌的表示,著法的生成,對著法的搜索,最后對局面的評估來實(shí)現(xiàn)中國象棋的人機(jī)會話。2游戲系統(tǒng)開發(fā)平臺及搭建JDK和Eclipse:JDK是Sun公司針對java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的javaSDK。JDK是整個java的核心。包括運(yùn)行環(huán)境Java工具和Java基礎(chǔ)類庫。JDK是學(xué)好Java的第一步。安裝Eclipse的開發(fā)環(huán)境需要JDK的支持,如果沒有JDK,則啟動Eclipse時會報告錯誤。在windows上安裝JDK非常簡單首先在Sun官網(wǎng)上下載,按照默認(rèn)路徑進(jìn)行安裝。安裝完成之后,可以在檢查JDK是否安裝成功。打開cmd窗口,輸入java–version查看JDK的版本信息。出現(xiàn)類似下面的畫面表示安裝成功了:圖2.1JDK測試Eclipse如果你還沒有Eclipse的話,從官網(wǎng)上下載EclipseIDEforJavaDevelopers解壓之后即可使用。AndroidSDKAndroidSDK提供了在windows平臺上的開發(fā)安卓應(yīng)用程序的開發(fā)組件,也就是說,不論讀者使用什么樣的平臺都可以開發(fā)出安卓平臺的應(yīng)用軟件,其中包含了安卓平臺上開發(fā)移動應(yīng)用的各種工具集。它不僅包括了安卓模擬器和用于Eclipse的安卓開發(fā)工具插件(ADT),而且包括了各種用來調(diào)試,打包盒在模擬器上安裝應(yīng)用的工具。安卓主要是以java語言為基礎(chǔ),用戶可以使用java語言來開發(fā)安卓平臺上的軟件應(yīng)用。通過SDK提供的一些工具將其打包成安卓平臺使用的apk文件,然后在使用SDK中的模擬器(Emulator)來模擬和測試軟件在安卓平臺運(yùn)行情況和效果。安裝安卓的SDK,安裝好JDK和Eclipse后,打開EclipseIDE。依次單擊Menu項(xiàng)中的windows->AndroidSDKManager項(xiàng),進(jìn)入AndroidSDKManager界面選擇Tool和需要的Android版本項(xiàng)進(jìn)行更新安裝。ADTAndroid為Eclipse定制了一個插件,及ADT(AndroidDevelopmentTools),目的是為用戶提供一個強(qiáng)大的綜合環(huán)境用于開發(fā)Android應(yīng)用程序,ADT擴(kuò)展了Eclipse的功能,可以讓用戶快速的建立Android項(xiàng)目,創(chuàng)建應(yīng)用程序界面,在基于AndroidAPI的基礎(chǔ)上添加組件,以及用SDK工具集調(diào)試應(yīng)用程序,甚至導(dǎo)出簽名(或未簽名)的APKs以便發(fā)行應(yīng)用程序。安裝AndroidDevelopmentToolplug-in,打開EclipseIDE。依次單擊Menu項(xiàng)中的Help->SoftwareUpdate項(xiàng)3系統(tǒng)分析可行性研究本次實(shí)訓(xùn)的題目是:基于Android象棋游戲的開發(fā)與測試;主要是在基于Android平臺開發(fā)一個手持設(shè)備應(yīng)用游戲,使得游戲具有兼容性和人機(jī)對戰(zhàn);并對整個系統(tǒng)分析,設(shè)計過程給出一個論證。中國象棋游戲是棋牌類游戲,體現(xiàn)的是一種策略。對于行棋走棋不同的棋子有不同走棋規(guī)則,走棋都必須按照走棋規(guī)則要求,雙方輪換走棋,吃子,將軍。本游戲設(shè)計無疑是模擬現(xiàn)實(shí)人人博弈,虛擬的替換了真實(shí)的棋子棋盤,由人來和電腦直接對弈;在一個人閑暇時也可以體驗(yàn)博弈的樂趣。該應(yīng)用游戲的設(shè)計主要從以下幾方面做起:系統(tǒng)流程分析、系統(tǒng)的功能設(shè)計、系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)設(shè)計。做好這些工作需要對Android開發(fā)平臺了解,并搭建平臺;深入了解數(shù)據(jù)結(jié)構(gòu)、Android應(yīng)用程序以及各種組件(API)庫函數(shù)。界面的需求分析通過以往手持設(shè)備游戲的體驗(yàn),和用戶對中國象棋游戲需求邏輯,游戲的功能以及操作方法把整個設(shè)計劃分成單元;先是運(yùn)行游戲,進(jìn)入歡迎游戲界面,隨后單擊歡迎界面的圖片進(jìn)入菜單界面,在菜單中可以點(diǎn)擊“打開聲音”/“關(guān)閉聲音”按鈕來控制聲音開關(guān),單擊“幫助”菜單可以進(jìn)入幫助界面顯示游戲操作方法,而在菜單界面單擊“開始游戲”菜單將進(jìn)入游戲主界面開始游戲,在游戲界面玩家可以通過單擊自己的棋子按照行棋規(guī)則來走棋,同時可以單擊聲音按鈕打開關(guān)閉聲音,當(dāng)游戲一方的“將”或者敵方的“帥”被吃掉是,會出現(xiàn)游戲失敗或游戲勝利的界面,在游戲過程中玩家可以隨時通過單擊“退出”按鈕返回到游戲主菜單,主菜單中還可以點(diǎn)擊“退出游戲”結(jié)束關(guān)閉游戲。游戲走棋需求設(shè)計分析進(jìn)入游戲界面,游戲提示當(dāng)前走棋為“帥”或者“將”,雙方各走一著,直至分出勝負(fù)或者直接點(diǎn)擊退出結(jié)束游戲,輪到走棋的一方,將某個棋子從一個交叉點(diǎn)走到另一個交叉點(diǎn),或者吃掉對方的棋子而占領(lǐng)其交叉點(diǎn),都算走一著,雙方各走一著即一個回合,吃子時,任何棋子走動,如果目標(biāo)位置上有對方的棋子,就可以把對方的棋子拿出棋盤,即屏幕上消失在顯示自己的棋子。玩家走完棋后電腦相對應(yīng)搜索出自己相對應(yīng)的走法。程序需要讓計算機(jī)在輪到它走子的時候能夠執(zhí)行一步它認(rèn)為最有利的著法,而不是亂走;那么它就要有在諸多可供選擇的著法,提供所有候選著法的列表就是著法生成器所要完成的。之后用搜索函數(shù)來搜索列表,并用局面評估函數(shù)逐一打分,最后就可以選擇出最佳著法并執(zhí)行。4游戲系統(tǒng)的設(shè)計與實(shí)現(xiàn)類框架的設(shè)計通過對中國象棋游戲的了解,對基于Android技術(shù)的中國象棋人機(jī)對弈游戲的需求分析,游戲?qū)崿F(xiàn)的理解并結(jié)合自己對知識點(diǎn)所掌握的程度;對中國象棋游戲總體設(shè)計,主要由三個類組成:共有類,輔助界面相關(guān)類,游戲界面相關(guān)類。共有類是Activity的實(shí)現(xiàn)類ChessActivity,該類是通過擴(kuò)展基類Activity得到的,是整個游戲的控制器,也是整個游戲程序的入口;輔助界面相關(guān)類由WelcomeView歡迎界面類(該類為游戲歡迎界面的實(shí)現(xiàn)類,主要負(fù)責(zé)歡迎界面的繪制工作),HelpView幫助界面類(該類為幫助界面的實(shí)現(xiàn)類),MenuView菜單界面類(該類為菜單界面的實(shí)現(xiàn)類,負(fù)責(zé)繪制菜單界面以及對菜單界面的屏幕進(jìn)行監(jiān)聽)三個類實(shí)現(xiàn);游戲界面相關(guān)類由GameView游戲界面類(該類為游戲程序中最主要的類,負(fù)責(zé)繪制游戲過程中所有的信息,如棋盤、棋子、各個按鈕以及勝利或失敗菜單等),GuiZe象棋規(guī)則類(該類是象棋規(guī)則的實(shí)現(xiàn)類,其中包含所有棋子的走棋規(guī)則以及當(dāng)前棋牌所有可能走法),ChessMove走法類(該類為棋子的走法的封裝類,包括棋子的名稱,出發(fā)點(diǎn)以及目標(biāo)點(diǎn))。之間關(guān)系如圖4.1所示:圖4.1游戲類圖共有類ChessActivity的實(shí)現(xiàn)該類的主要作用是通過接受Handler消息變量,根據(jù)各個界面發(fā)送的Handler消息的類型判斷所需要執(zhí)行的操作。在適當(dāng)?shù)臅r間初始化相應(yīng)的用戶界面,各個界面初始化方法被調(diào)用時,并根據(jù)其他界面的需求直接將用戶界面切換到相應(yīng)的界面輔助界面相關(guān)類的實(shí)現(xiàn)該游戲的第一個用戶界面即歡迎界面如圖4.2所示,通過WelcomeView類來實(shí)現(xiàn)該界面加載了一個歡迎中國象棋圖片,并通過監(jiān)聽菜單圖片,向Activity發(fā)送Handler消息通知控制器切換用戶界面;然后切換到菜單界面MenuView。圖4.2游戲歡迎界面MenuView類中通過監(jiān)聽“開始游戲”切換到游戲界面;通過監(jiān)聽“打開聲音”/“關(guān)閉聲音”進(jìn)行聲音的打開與關(guān)閉,與此同時“打開聲音”、“關(guān)閉聲音”按鈕進(jìn)行切換;通過監(jiān)聽“幫助”來切換都幫助界面;通過監(jiān)聽“退出游戲”結(jié)束游戲用行退出游戲。幫助界面HelpView,該類中加載圖片,圖片中顯示該游戲“怎么玩”同時監(jiān)聽“返回”按鈕,向Activity發(fā)送Handler消息通知控制器切換用戶界面從而返回到菜單界面,如圖4.3所示。圖4.3菜單界面游戲界面相關(guān)類的實(shí)現(xiàn)游戲界面GameView,該類是整個程序中最主要的類,該類首先是繪制屏幕上的內(nèi)容棋盤和對應(yīng)的棋子。提示一方先走;當(dāng)“黑帥”或者“紅將”被吃的話,彈出您贏了或者您輸了通過監(jiān)聽結(jié)束游戲切換到菜單界面?;蛘唿c(diǎn)擊退出按鈕也可結(jié)束游戲切換至菜單界面。監(jiān)聽聲音按鈕來控制聲音的開與關(guān)并以紅色顯示聲音開,消失即為關(guān),如圖4.4所示。圖4.4游戲界面中國象棋的規(guī)則及走法的實(shí)現(xiàn)行棋規(guī)則中國象棋分為紅黑雙方,以楚河漢界為分界線,雙方各執(zhí)16字,分別為2車2馬2相2仕2炮1將5卒,各自走法不同,具體如下:馬:只可以走“日”字方格,因此一匹馬的最理想落子點(diǎn)有8個,但存在絆馬腿的情況,即從馬的位置到要走到的目標(biāo)位置,順著此方向,“日”字方格有兩個方向,即兩格長度和一個長度,馬緊挨的兩格長度方向的位置不能有子,否則即被絆住,不能走動。若目標(biāo)位置為空,即可走過,若為對方的棋子,即可吃掉。圖4.5馬的走法紅黑馬規(guī)則走法的介紹:case10://紅馬case3://黑馬 if(!((Math.abs(toX-fromX)==1&&Math.abs(toY-fromY)==2) ||(Math.abs(toX-fromX)==2&&Math.abs(toY-fromY)==1))){ returnfalse;//馬走的不是日字時 } if(toX-fromX==2){//向右走 i=fromX+1;//移動 j=fromY; } elseif(fromX-toX==2){//向左走 i=fromX-1;//移動 j=fromY; } elseif(toY-fromY==2){//向下走 i=fromX;//移動 j=fromY+1; } elseif(fromY-toY==2){//向上走 i=fromX;//移動 j=fromY-1; } if(qizi[j][i]!=0) returnfalse;//絆馬腿 break;炮:只可以走直線,且一步可以走任意距離,其起始點(diǎn)與目標(biāo)點(diǎn)之間不得存在其他棋子。炮吃子的條件是與目標(biāo)棋子在一條直線上,且兩子之間必須有且只有一個棋子作為“跳板”,讓炮進(jìn)行跳躍式攻擊。紅黑炮規(guī)則走法的介紹:圖4.6炮的走法case11://紅砲case4://黑炮 if(fromY!=toY&&fromX!=toX){//炮走直線 returnfalse;//返回false } if(qizi[toY][toX]==0){//不吃子時 if(fromY==toY){//橫線 if(fromX<toX){//想右走 for(i=fromX+1;i<toX;i++){ if(qizi[fromY][i]!=0){ returnfalse;//返回false } } } else{//向走走 for(i=toX+1;i<fromX;i++){ if(qizi[fromY][i]!=0){ returnfalse;//返回false } } } } else{//豎線 if(fromY<toY){//向下走 for(j=fromY+1;j<toY;j++){ if(qizi[j][fromX]!=0){ returnfalse;//返回false } } } else{//向上走 for(j=toY+1;j<fromY;j++){ if(qizi[j][fromX]!=0){ returnfalse;//返回false } } } } } else{//吃子時 intcount=0; if(fromY==toY){//走的是橫線 if(fromX<toX){//向右走 for(i=fromX+1;i<toX;i++){ if(qizi[fromY][i]!=0){ count++; } } if(count!=1){ returnfalse;//返回false } } else{//向左走 for(i=toX+1;i<fromX;i++){ if(qizi[fromY][i]!=0){ count++; } } if(count!=1){ returnfalse;//返回false } } } else{//走的是豎線 if(fromY<toY){//向下走 for(j=fromY+1;j<toY;j++){ if(qizi[j][fromX]!=0){ count++;//返回false } } if(count!=1){ returnfalse;//返回false } } else{//向上走 for(j=toY+1;j<fromY;j++){ if(qizi[j][fromX]!=0){ count++;//返回false } } if(count!=1){ returnfalse;//返回false } } } } break;象、相:只可以在己方陣營走動,且僅限于7個點(diǎn),即己方“田”字格上的7個點(diǎn),走的是斜線,走動時,起始點(diǎn)與目標(biāo)點(diǎn)構(gòu)成一條斜線,若該斜線的中點(diǎn)位置存在其他棋子,則被絆住無法走動。圖4.7象的走法case6://黑象if(toY>4){//不能過河 returnfalse;}if(Math.abs(fromX-toX)!=2||Math.abs(fromY-toY)!=2){//相走“田”字 returnfalse;}if(qizi[(fromY+toY)/2][(fromX+toX)/2]!=0){ returnfalse;//相眼處有棋子}break;case13://紅相if(toY<5){//不能過河 returnfalse;//返回false}if(Math.abs(fromX-toX)!=2||Math.abs(fromY-toY)!=2){//相走“田”字 returnfalse;//返回false}if(qizi[(fromY+toY)/2][(fromX+toX)/2]!=0){ returnfalse;//相眼處有棋子}break;將、帥:只可以在己方陣營走動,且僅限于9個點(diǎn),即己方底三行中三列形成的9個交叉點(diǎn),也就是俗稱的“九宮”,一步只可以走動一個方格的直線距離作為本方的主將,鎮(zhèn)守大本營,雙方的主將是不能夠處于同一條直線而主將之間不存在其他的棋子進(jìn)行隔擋。圖4.8將帥的走法case1://黑帥if(toY>2||toX<3||toX>5){//出了九宮格 returnfalse;}if((Math.abs(fromY-toY)+Math.abs(toX-fromX))>1){//只能走一步 returnfalse;}break;case8://紅將if(toY<7||toX>5||toX<3){//出了九宮格 returnfalse;}if((Math.abs(fromY-toY)+Math.abs(toX-fromX))>1){//只能走一步 returnfalse;}break;棋盤的表示針對棋盤的設(shè)計,每一種棋子對應(yīng)一個固定的值用以識別該棋子的類型,那么設(shè)計就根據(jù)紅黑雙方的棋子以及每個類型的棋子,設(shè)計規(guī)則類(GuiZe類,調(diào)用其中的canMove方法用以判斷某一步走棋的是否可行。規(guī)則類的設(shè)計則采用了常規(guī)的辦法,因?yàn)槠遄拥姆N類只有7種,且紅黑雙方處于棋盤的兩端,某些棋子走動時的方向不一樣,設(shè)計時就要進(jìn)行分類討論設(shè)計,供存在14中不同的判別方法來對所以的棋子走法進(jìn)行判別是否可行,每一個判別方法都對應(yīng)于其獨(dú)有的判斷算法。棋盤上各種棋子以及棋盤的初始布局的設(shè)計采用10*9的數(shù)組來進(jìn)行標(biāo)識,如下圖4.9所示:圖4.9棋盤初始布局各個數(shù)字的對應(yīng)關(guān)系如下:0-無棋子;1-黑方的帥;2-黑方的車;3-黑方的馬;4-黑方的炮;5-黑方的士;6-黑方的象;7-黑方的卒;8-紅方的將;9-紅方的車;10-紅方的馬;11-紅方的炮;12-紅方的士;13-紅方的相;14-紅方的兵。坐標(biāo)(0,0)到坐標(biāo)(8,4)之間的坐標(biāo)代表楚河漢界的一方,坐標(biāo)(0,5)到坐標(biāo)(8,9)之間的坐標(biāo)代表楚河漢界的另一方,即紅黑雙方各自的領(lǐng)土。電腦走棋時通過構(gòu)造一個走法類ChessMove,創(chuàng)建一個對象調(diào)用NegamaxEngine類中的Search()函數(shù)根據(jù)當(dāng)前局勢查詢一個最好的走法記錄棋子的原有位置坐標(biāo)、目標(biāo)位置坐標(biāo)、棋子類型并對該對象進(jìn)行初始化。然后根據(jù)該對象記錄的原有位置坐標(biāo)和目標(biāo)位置坐標(biāo)進(jìn)行數(shù)據(jù)改變達(dá)到行棋目的。玩家走棋是通過對屏幕進(jìn)行監(jiān)聽,從而記錄棋子類型,原有位置坐標(biāo)和目標(biāo)位置坐標(biāo),通過調(diào)用規(guī)則類GuiZe中的CanMove判斷該棋子走法是否可行符合棋子走棋規(guī)則,可行就改變原有位置和目標(biāo)位置數(shù)據(jù),達(dá)到行棋的目的輪到走棋的一方,游戲界面當(dāng)前位置顯示走棋一方的“黑帥”或者“紅將”,將某個棋子從一個交叉點(diǎn)走到另一個交叉點(diǎn),或者吃掉對方的棋子而占領(lǐng)其交叉點(diǎn),這樣一方走棋結(jié)束當(dāng)前位置顯示改變輪到另一方走棋。任何棋子走動,如果目標(biāo)位置上有對方的棋子,就可以把對方的棋子拿出棋盤,即在10*9數(shù)組中相應(yīng)位置的數(shù)字變?yōu)樽约浩遄铀鶎?yīng)的數(shù)字,自己棋子原來所在的位置對應(yīng)數(shù)組的數(shù)字變?yōu)?,刷幀線程不斷的刷新界面改變屏幕顯示,這樣對方的棋子就被吃掉,在屏幕上消失在對應(yīng)顯示自己的棋子;如果目標(biāo)位置上沒有對方棋子,10*9數(shù)組對應(yīng)目標(biāo)位置數(shù)字改變,原有位置數(shù)字變?yōu)?,刷幀線程更新界面改變顯示。游戲人機(jī)對戰(zhàn)的實(shí)現(xiàn) 首先產(chǎn)生所有可能的走法,定義一個ArrayList容器,把可能的走法放入ArrayList容器里面。publicList<ChessMove>allPossibleMoves(intqizi[][]){//產(chǎn)生所有可能的走法 List<ChessMove>ret=newArrayList<ChessMove>();//用來裝所有可能的走法 for(intx=0;x<10;x++){ for(inty=0;y<9;y++){//循環(huán)所有的棋牌位置 intchessman=qizi[x][y]; if(chessman!=0){//當(dāng)次位置不為空時,即有棋子時 if(chessman>7){//是紅方,即是玩家棋子時跳過 continue; } } } } returnret.isEmpty()?null:ret;//當(dāng)ret中沒有走法時,返回空,有時返回ret}利用隨機(jī)數(shù)從容器中取出一種走法,完成移動。publicChessMovesearchAGoodMove(int[][]qizi){//查詢一個好的走法 List<ChessMove>ret=allPossibleMoves(qizi);//產(chǎn)生所有走法 try{ Thread.sleep(1000);//睡眠四秒鐘,以便調(diào)試 }catch(InterruptedExceptione){//捕獲異常 e.printStackTrace();//打印堆棧信息 } returnret.get((int)(Math.random()*ret.size()));}系統(tǒng)流程圖游戲流程圖如圖4.10所示圖4.10系統(tǒng)流程圖5運(yùn)行測試測試用例表測試編號測試目標(biāo)期望結(jié)果實(shí)際結(jié)果001測試象棋“馬”是否“絆馬腿”游戲過程中,“馬”在絆馬腿情況下不能移動。能實(shí)現(xiàn)“絆馬腿”002測試一方棋子能否被另一方吃掉,并消失棋子被吃后消失,吃子的棋子能代替被吃棋子的位置一方棋子能被另一方吃掉,并消失003測試對手的象棋“將”能否被將死,能結(jié)束游戲?qū)κ值南笃濉皩ⅰ北粚⑺?,并出現(xiàn)提示“你贏了”,結(jié)束游戲?qū)κ值南笃濉皩ⅰ北粚⑺?,能結(jié)束游戲004測試象棋“炮”是否能隔子吃掉對手的棋子,即“炮打隔子”“炮”隔子吃掉對手棋子“炮”能“炮打隔子”005測試游戲棋子是否能移動棋子從一個到另一個位置游戲棋子能移動006不同分辨率模擬器能否正常運(yùn)行能夠正常運(yùn)行不能正常運(yùn)行007能否對將可以對將不能對將測試結(jié)果測試001“馬”是否“絆馬腿”測試結(jié)果如圖5.1所示圖5.1測試絆馬腿測試002一方棋子能否被另一方吃掉測試結(jié)果如圖5.2所示圖5.2測試吃子測試003“將”能否被將死測試結(jié)果如圖5.3所示圖5.3測試能否贏棋測試003“將”能否被將死測試結(jié)果如圖5.4所示圖5.4測試對將測試006不同分辨率模擬器能否正常運(yùn)行如圖5.5所示圖5.5測試不同分辨率模擬器6小結(jié)三周的Android實(shí)訓(xùn),已接近尾聲。在這短暫的三周之內(nèi),有成功有失?。挥邢矏傆行乃?。在實(shí)訓(xùn)老師的帶領(lǐng)下,我學(xué)到了很多。我們小組在老師的協(xié)助下最終成功的完成實(shí)訓(xùn)項(xiàng)目。在這次實(shí)訓(xùn)中讓我學(xué)到了,對于每一個項(xiàng)目開發(fā),都需端正態(tài)度,量力而行,發(fā)揮自己的長處,這樣不僅有利于促進(jìn)團(tuán)隊(duì)項(xiàng)目開發(fā)的進(jìn)度,還有利于把自己代入這個項(xiàng)目中。當(dāng)自己融于這個項(xiàng)目時,就能多思考。這樣是一個自我學(xué)習(xí)的過程,這里本來不會做,但是經(jīng)過這個項(xiàng)目或這個模塊后,這里也就會了,把不會的變成會的,把別人的知識變成自己的,這才是會學(xué)習(xí)。通過為期三周的Android實(shí)訓(xùn),這次的實(shí)訓(xùn)讓我學(xué)到了很多知識。在項(xiàng)目中,除了讓我明白工作中需要能力,素質(zhì),更重要的是學(xué)會如何去完成一個任務(wù),懂得了享受工作。當(dāng)遇到問題時要冷靜去想辦法一點(diǎn)一點(diǎn)的排除障礙,到最后取得成功,一種自信油然而生,這就是工作的樂趣。有時候也需要虛心請教,從別人身上能夠?qū)W到自己沒有的知識,每一次的挫折只能使我們更接近成功。在這次項(xiàng)目中讓我體會到了團(tuán)隊(duì)合作的重要性,團(tuán)隊(duì)合作注重溝通和信任,不能不屑于做一些小事,永遠(yuǎn)要保持親和誠信,把專業(yè)理論運(yùn)用到具體實(shí)踐中,不僅加深我對理論的掌握和運(yùn)用,這是實(shí)訓(xùn)中最大的收獲。剛開始接觸Android感覺到他很有意思,在界面開發(fā)和web也可以形成想通的架構(gòu),更加方便,視覺上也非常的酷,前期我通過大量的AndroidSDK開發(fā)范例和Android提供的API文檔中學(xué)習(xí),通過這些例子的學(xué)習(xí)我從中發(fā)現(xiàn)了很多和以前Java相同的思想。在這為期三周的實(shí)訓(xùn)中讓我學(xué)到了很多課堂上學(xué)不到的知識,讓我基本掌握了Android應(yīng)用程序開發(fā)的一般流程。對常用控件基本掌握使用,對其事件的監(jiān)聽也基本掌握。學(xué)習(xí)Android不僅是對前沿開發(fā)技術(shù)的了解,也是對編程知識的一次提升。通過學(xué)習(xí)Android的控件、布局、Activity、Service等一系列基礎(chǔ)知識,對整個Android的開發(fā)有了大致的了解。通過這次的實(shí)訓(xùn),讓我學(xué)到了很多,因?yàn)槲覀兌际堑谝淮谓佑|Android,所以老師先給我們講的每一個程序我們都去認(rèn)真編寫,通過這些小程序,讓我們知道了如何去創(chuàng)建一個Android項(xiàng)目,了解了Android項(xiàng)目里的每一個文件夾和文件的作用。在這次項(xiàng)目中讓我體會到了團(tuán)隊(duì)合作的重要性,團(tuán)隊(duì)合作注重溝通和信任。同時還讓我知道做任何事都需端正態(tài)度,量力而行,發(fā)揮自己的長處,這樣不僅有利于促進(jìn)團(tuán)隊(duì)項(xiàng)目開發(fā)的進(jìn)度,還能讓我們知道我們自己的位置??傊谶@次的實(shí)訓(xùn)中讓我學(xué)到了知識,同時也讓我學(xué)到了經(jīng)驗(yàn),這讓我在以后的工作中有重大幫助。參考文獻(xiàn)[1]劉敏.
移動終端的Android移植與應(yīng)用程序設(shè)計[D].西安電子科技大學(xué)2011[2]王蕾.
哈爾濱招行Android手機(jī)銀行匯率換算模塊的設(shè)計與實(shí)現(xiàn)[D].吉林大學(xué)2011[3]施金蘭.
基于Android平臺的網(wǎng)絡(luò)共享研究與實(shí)現(xiàn)[D].華東師范大學(xué)2011[4]趙建勛.
基于Android平臺的移動位置服務(wù)的開發(fā)與實(shí)現(xiàn)[J].現(xiàn)代商貿(mào)工業(yè).2010(20)[5]李林濤,朱珊虹.
基于Android系統(tǒng)的手機(jī)游戲黑白棋的設(shè)計與實(shí)現(xiàn)[J].新鄉(xiāng)學(xué)院學(xué)報(自然科學(xué)版).2011(03)[6]叢秋波.
用于Android手機(jī)操作系統(tǒng)的視頻引擎[J].電子設(shè)計技術(shù).2010(07)[7]郭國勇.
Android啟動過程優(yōu)化研究[D].蘭州大學(xué)2012[8]擺云.
基于Android開放平臺和無線通信網(wǎng)絡(luò)的實(shí)時音視頻傳輸系統(tǒng)設(shè)計與實(shí)現(xiàn)[D].蘭州大學(xué)2012[9]劉牛.
基于Android平臺的數(shù)字電視機(jī)頂盒模擬器的研究與開發(fā)[D].蘭州大學(xué)2012[10]王康.
AndroidRIL研究及其在無線通訊模塊上的實(shí)現(xiàn)[D].太原科技大學(xué)2012附錄:ChessActivity.javapackagecom.example.chessgame;importandroid.app.Activity;//引入相關(guān)的包importandroid.media.MediaPlayer;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.view.Window;importandroid.view.WindowManager;publicclassChessActivityextendsActivity{ booleanisSound=true;//是否播放聲音 MediaPlayerstartSound;//開始和菜單時的音樂 MediaPlayergamemusic;//游戲聲音 HandlermyHandler=newHandler(){//用來更新UI線程中的控件publicvoidhandleMessage(Messagemsg){ if(msg.what==1){ //WelcomeView或HelpView或GameView傳來的消息,切換到MenuView initMenuView();//初始化并切換到菜單界面 } elseif(msg.what==2){//MenuView傳來的消息,切換到GameView initGameView();//初始化并切換到游戲界面 } elseif(msg.what==3){//MenuView傳來的消息,切換到HelpView initHelpView();//初始化并切換到幫助界面 }} }; publicvoidonCreate(BundlesavedInstanceState){//重寫的onCreatesuper.onCreate(savedInstanceState); //全屏 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); startSound=MediaPlayer.create(this,R.raw.startsound);//加載歡迎聲音 startSound.setLooping(true);//設(shè)置游戲聲音循環(huán)播放 gamemusic=MediaPlayer.create(this,R.raw.gamemusic);//游戲過程的背景聲音 gamemusic.setLooping(true);//設(shè)置游戲聲音循環(huán)播放this.initWelcomeView();//初始化歡迎界面}publicvoidinitWelcomeView(){//初始化歡迎界面 this.setContentView(newWelcomeView(this,this));//切換到歡迎界面 if(isSound){//需要播放聲音時 startSound.start();//播放聲音 }}publicvoidinitGameView(){//初始化游戲界面 this.setContentView(newGameView(this,this));//切換到游戲界面}publicvoidinitMenuView(){//初始化菜單界面 if(startSound!=null){//停止 startSound.stop();//停止播放聲音 startSound=null; } if(this.isSound){//是否播放聲音 gamemusic.start();//播放聲音 } this.setContentView(newMenuView(this,this));//切換View}publicvoidinitHelpView(){//初始化幫助界面 this.setContentView(newHelpView(this,this));//切換到幫助界面}}ChessMove.javapackagecom.example.chessgame;/***該類為棋子的一個走法*包含是什么棋子*起始點(diǎn)的位置*目標(biāo)點(diǎn)的位置*以及估值時所用到的score*/publicclassChessMove{ intChessID;//表明是什么棋子 intfromX;//起始的坐標(biāo) intfromY; inttoX;//目的地的坐標(biāo) inttoY; intscore;//值,估值時會用到 publicChessMove(intChessID,intfromX,intfromY,inttoX,inttoY,intscore){//構(gòu)造器 this.ChessID=ChessID;//棋子的類型 this.fromX=fromX;//棋子的起始坐標(biāo) this.fromY=fromY; this.toX=toX;//棋子的目標(biāo)點(diǎn)x坐標(biāo) this.toY=toY;//棋子的目標(biāo)點(diǎn)y坐標(biāo) this.score=score; }}SearchEngine.javapackagecom.example.chessgame;publicclassSearchEngine{ //表示棋盤棋的分布publicstaticintm_curPosition[][]=newint[10][9];//記錄最佳走棋publicstaticChessMovebestMove=newChessMove();//走法產(chǎn)生七器publicstaticGuiZemoveGen=newGuiZe();//估值產(chǎn)生器publicstaticEveluationm_eve=newEveluation();//搜索深度publicstaticintm_searchDepth;//當(dāng)前搜索深度publicstaticintm_maxDepth;//移動棋子publicstaticvoidsearchAgoodMove(intposition[][]){}publicstaticintmakeMove(ChessMovedata){intchessID; chessID=m_curPosition[data.toY][data.toX];m_curPosition[data.toY][data.toX]=m_curPosition[data.fromY][data.fromX];m_curPosition[data.fromY][data.fromX]=ConstData.NOCHESS;returnchessID;}//判斷游戲時候結(jié)束publicstaticintisGameOver(intposition[][],intdepth){inti,j;booleanredLive=false,blackLive=false;for(i=0;i<3;++i)for(j=3;j<6;++j){if(position[i][j]==1)blackLive=true;}for(i=7;i<10;++i)for(j=3;j<6;++j){if(position[i][j]==8)redLive=true;}i=(m_maxDepth-depth+1)%2;//取當(dāng)前奇偶標(biāo)志if(!redLive)//紅將不在了{(lán)if(i!=0)return19990+depth;elsereturn-19990-depth;}if(!blackLive)if(0!=i)return-19990-depth;elsereturn19990+depth;return0;//兩將都在,返回0}//取消移動publicstaticvoidunMakeMove(ChessMovemove,intchessID){m_curPosition[move.fromY][move.fromX]=m_curPosition[move.toY][move.toX];m_curPosition[move.toY][move.toX]=chessID;}}NegamaxEngine.javapackagecom.example.chessgame;publicclassNegamaxEngineextendsSearchEngine{ publicNegamaxEngine(){ } publicstaticChessMoveSearch(int[][]position){ searchAgoodMove(position); returnbestMove; } publicstaticvoidsearchAgoodMove(int[][]position){m_maxDepth=m_searchDepth;inti,j;for(i=0;i<10;++i)for(j=0;j<9;++j)m_curPosition[i][j]=position[i][j];negaMax(m_maxDepth);//調(diào)用負(fù)極大值搜索引擎try{ Thread.sleep(4000); }catch(InterruptedExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }makeMove(bestMove);}//負(fù)極大值搜索引擎publicstaticintnegaMax(intdepth){intcurrent=-20000;intscore=0;intcount=0,i;inttype;i=isGameOver(m_curPosition,depth);if(i!=0)//不等于0表示某方的王不存在了,直接返回{returni;}booleanside;if((m_maxDepth-depth)%2==1)side=true;elseside=false;if(depth<=0){//搜索到葉子節(jié)點(diǎn),返回估值信息 returnm_eve.eveluation(m_curPosition,side);}//生產(chǎn)所有可能的走法,count=moveGen.allPossibleMoves(m_curPosition,depth,side);for(i=0;i<count;++i){//嘗試每種走法type=makeMove(moveGen.MoveList[depth][i]);//返回此種走法的估值分?jǐn)?shù)score=-negaMax(depth-1);//取消上次走法unMakeMove(moveGen.MoveList[depth][i],type);//若當(dāng)前走法更優(yōu),則記錄下來if(score>current){current=score;//如果到了根節(jié)點(diǎn)Sif(depth==m_maxDepth){//記錄最優(yōu)的走棋,把它保存到m_bestMove中bestMove=moveGen.MoveList[depth][i];}}}returncurrent;}}ConstDate.javapackagecom.example.chessgame;publicclassConstData{ publicfinalstaticintNOCHESS=0;//無子//黑方publicfinalstaticintB_KING=1;//黑帥publicfinalstaticintB_CAR=2;//黑車publicfinalstaticintB_HORSE=3;//黑馬publicfinalstaticintB_CANON=4;//黑炮publicfinalstaticintB_BISHOP=5;//黑士publicfinalstaticintB_ELEPHANT=6;//黑象publicfinalstaticintB_PAWN=7;//黑兵publicfinalstaticintB_BEGIN=1;publicfinalstaticintB_END=7;//紅方publicfinalstaticintR_KING=8;//紅將publicfinalstaticintR_CAR=9;//紅車publicfinalstaticintR_HORSE=10;//紅馬publicfinalstaticintR_CANON=11;//紅炮publicfinalstaticintR_BISHOP=12;//紅仕publicfinalstaticintR_ELEPHANT=13;//紅相publicfinalstaticintR_PAWN=14;//紅卒publicfinalstaticintR_BEGIN=8;publicfinalstaticintR_END=14;//定義每種棋的價值//兵100,士250,象250,馬350,炮350車500publicfinalstaticintBASEVALUE_PAWN=100;publicfinalstaticintBASEVALUE_BISHOP=250;publicfinalstaticintBASEVALUE_ELEPHANT=250;publicfinalstaticintBASEVALUE_HORSE=350;publicfinalstaticintBASEVALUE_CANON=350;publicfinalstaticintBASEVALUE_CAR=500;publicfinalstaticintBASEVALUE_KING=10000;//定義各種棋子的靈活性//也就是每多一個可走位置應(yīng)加上的值//兵15,士1,象1,車6,馬12,炮6,王0publicfinalstaticintFLEXIBLE_PAWN=15;publicfinalstaticintFLEXIBLE_BISHOP=1;publicfinalstaticintFLEXIBLE_ELEPHANT=1;publicfinalstaticintFLEXIBLE_HORSE=12;publicfinalstaticintFLEXIBLE_CANON=6;publicfinalstaticintFLEXIBLE_CAR=6;publicfinalstaticintFLEXIBLE_KING=0;//初始棋盤publicfinalstaticintINITCHESSBOARD[][]={{2,3,6,5,1,5,6,3,2},{0,0,0,0,0,0,0,0,0},{0,4,0,0,0,0,0,4,0},{7,0,7,0,7,0,7,0,7},{0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0},{14,0,14,0,14,0,14,0,14},{0,11,0,0,0,0,0,11,0},{0,0,0,0,0,0,0,0,0},{9,10,13,12,8,12,13,10,9}};//判斷chessID是否是黑棋publicstaticbooleanisBlack(intchessID){return(chessID>=B_BEGIN&&chessID<=B_END);}//判斷chessID是否是紅棋publicstaticbooleanisRed(intchessID){return(chessID>=R_BEGIN&&chessID<=R_END);}//判斷chessID1和chessID2是否是同色publicstaticbooleanisSameSide(intchessID1,intchessID2){return((isBlack(chessID1)&&isBlack(chessID2))||(isRed(chessID1)&&isRed(chessID2)));}基于C8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺控制器的研制
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 28海的女兒說課稿-2023-2024學(xué)年四年級下冊語文統(tǒng)編版
- 2 我是什么(說課稿)-2024-2025學(xué)年統(tǒng)編版語文二年級上冊
- 2024-2025學(xué)年高中生物 專題2 微生物的培養(yǎng)與應(yīng)用 課題2 土壤中分解尿素的細(xì)菌的分離與計數(shù)說課稿3 新人教版選修1
- 2025國有土地使用權(quán)出讓協(xié)議合同
- 2025有限公司股權(quán)轉(zhuǎn)讓合同
- Module 1 Unit 2 Changes in our lives Listen and say Listen and enjoy (說課稿)-2024-2025學(xué)年滬教牛津版(深圳用)英語六年級下冊
- 2025城市供用氣合同
- 濰坊耐火混凝土施工方案
- 加氣轎車出售合同范例
- 8《安全記心上》(第一課時)說課稿-2024-2025學(xué)年道德與法治三年級上冊統(tǒng)編版
- 如何構(gòu)建高效課堂課件
- 虛擬化與云計算技術(shù)應(yīng)用實(shí)踐項(xiàng)目化教程 教案全套 第1-14周 虛擬化與云計算導(dǎo)論-騰訊云服務(wù)
- 徐金桂行政法與行政訴訟法新講義
- 瀝青拌合設(shè)備結(jié)構(gòu)認(rèn)知
- GB/T 13234-2018用能單位節(jié)能量計算方法
- (課件)肝性腦病
- 北師大版五年級上冊數(shù)學(xué)教學(xué)課件第5課時 人民幣兌換
- 工程回訪記錄單
- 住房公積金投訴申請書
- 高考物理二輪專題課件:“配速法”解決擺線問題
- 檢驗(yàn)科生物安全風(fēng)險評估報告
評論
0/150
提交評論