已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2012屆畢業(yè)論文基于ANDROID的游戲設(shè)計學(xué)院信息學(xué)院學(xué)生姓名指導(dǎo)教師專業(yè)計算機(jī)應(yīng)用技術(shù)班級09級01班完成時間2012/3/29基于ANDROID的五子棋游戲設(shè)計【關(guān)鍵詞】機(jī)器人,生命周期,算法,線程【摘要】本論文主要闡述以面向?qū)ο蟮某绦蜷_發(fā)語言ECLIPSE為開發(fā)工具,基于智能手機(jī)ANDROID之上設(shè)計一個五子棋游戲。五子棋起源于中國古代的傳統(tǒng)黑白棋種之一,它不僅能增強(qiáng)思維能力提高智力,而且富含哲理,有助于修身養(yǎng)性。本系統(tǒng)是本系統(tǒng)中設(shè)定了人機(jī)對戰(zhàn)和人人對戰(zhàn)兩種模式。人機(jī)對戰(zhàn)實現(xiàn)的是一些簡單的算法,人人對戰(zhàn)只是進(jìn)行了輸贏方的判定。它與JAVAME的五子棋設(shè)計有許多的不一樣,ANDROID本來就是全觸摸的形式,而且操作非常簡單。THEFIVEINAROWGAMEBASEDONANDROID【ABSTRACT】THISPAPERMAINLYEXPOUNDSTHEOBJECTORIENTEDPROGRAMDEVELOPMENTINECLIPSEFORLANGUAGEDEVELOPMENTTOOL,SMARTPHONEANDROIDBASEDONABOVEDESIGNAFIVEINAROWGAMEGOBANGORIGINATEDINCHINAANCIENTTRADITIONALBLACKWHITEKIND,ITNOTONLYCANENHANCEONEOFTHINKINGCAPACITY,IMPROVEINTELLIGENCEANDHIGHINPHILOSOPHY,HELPSTOCULTIVATEONESMORALITYRAISESAGENDERTHISSYSTEMISTHESYSTEMTHATSETTHEMANMACHINEAGAINSTANDEVERYONEAGAINSTTWOPATTERNSTHEREALIZATIONMANMACHINEAGAINSTSOMESIMPLEALGORITHM,EVERYONEWASAGAINSTJUSTWINTHEJUDGEMENTOFTHEPARTYITHASWITHTHEJAVAMEGOBANGCHESSDESIGNMANYAREDISSIMILAR,ANDROIDISTHEENTIRETOUCHINGFORMORIGINALLY,MOREOVEROPERATESISSIMPLE【KEYWORDS】ANDROID,ACTIVITY,ARITHMETIC,THREAD目錄緒論41開發(fā)概述611背景612課題來源713國內(nèi)外研究現(xiàn)狀714論文主要工作82ANDROID的開發(fā)環(huán)境821操作系統(tǒng)822ANDROID開發(fā)環(huán)境823ANDROID開發(fā)環(huán)境變量配置8231JDK的配置9232SDK的配置1024ECLIPSE設(shè)置1025ANDROID開發(fā)環(huán)境配置最終步驟113ANDROID應(yīng)用程序核心1131應(yīng)用程序基礎(chǔ)1132應(yīng)用程序組件12321、活動(ACTIVITIES)13322、服務(wù)(SERVICES)15323、廣播接收者(BROADCASTRECEIVERS)16324、內(nèi)容提供者(CONTENTPROVIDERS)174相關(guān)技術(shù)概念1741坐標(biāo)布局(ABSOLUTELAYOUT)1742INTENT1843ALERTDIALOG2044相關(guān)的算法研究21441相關(guān)的數(shù)據(jù)結(jié)構(gòu)21442分析規(guī)則21443勝負(fù)判斷23444算法實現(xiàn)描述245實現(xiàn)運(yùn)行情況,以及各個模塊的截圖2551概要設(shè)計26521游戲主界面27522新游戲界面28523幫助界面28524關(guān)于五子棋介紹界面29525五子棋的退出30總結(jié)30參考文獻(xiàn)31附錄32緒論智能手機(jī)SMARTPHONE,具有獨(dú)立的操作系統(tǒng),像個人電腦一樣支持用戶自行安裝軟件、游戲等第三方服務(wù)商提供的程序,并通過此類程序不斷對手機(jī)的功能進(jìn)行擴(kuò)充,同時可通過移動通訊網(wǎng)絡(luò)來實現(xiàn)無線網(wǎng)絡(luò)接入。目前,全球多數(shù)手機(jī)廠商都有智能手機(jī)產(chǎn)品,而芬蘭諾基亞、美國蘋果、加拿大RIM(黑莓)、美國摩托羅拉、中國臺灣宏達(dá)(HTC)更是智能機(jī)中的佼佼者。智能手機(jī)具有五大特點(diǎn)1具備了無線接入互聯(lián)網(wǎng)的能力,即要有GSM的支持網(wǎng)絡(luò)下的GPRS或者是CDMA網(wǎng)絡(luò)支持下的CDMA1X或3G網(wǎng)絡(luò)。2人性化,可以根據(jù)個人需要擴(kuò)展機(jī)器的功能。3它是具有開放性的操作系統(tǒng),還可以安裝非常多的應(yīng)用程序,使得智能手機(jī)的功能可以得到無限的擴(kuò)展。4具有PDA功能,其中包括個人信息管理、日程記事、任務(wù)安排、多媒體應(yīng)用、瀏覽網(wǎng)頁。5強(qiáng)大的功能,擴(kuò)展性能強(qiáng),第三方軟件支持多。ANDROID的誕生從時間要追溯到二零零三年,在參與到ANDROID的傳奇之前,它的創(chuàng)始人ANDYRUBIN在周刊中這么說過“在開發(fā)對于用戶位置以及狀態(tài)更加敏感的移動設(shè)備方面存在著巨大的潛力”,他還說過“很快他們就會在消費(fèi)類產(chǎn)品中使用這些位置信息,如果開發(fā)者足夠聰明的話。”現(xiàn)在看起來他自己都沒想到他的預(yù)言是多么的準(zhǔn)確實際上,移動領(lǐng)域?qū)l(fā)生巨變,從而催生出我們從未見過的強(qiáng)大的智能手機(jī)。到二零零五年有很多關(guān)于GOOGLE即將進(jìn)軍移動設(shè)備制造領(lǐng)域并專注于制造基于位置服務(wù)的手機(jī)的謠傳,但最大的障礙就在于GOOGLE沒有自己的可以達(dá)成這個目標(biāo)的平臺。在二零零五年七月,GOOGLE收購了ANDROID,這么一個小規(guī)模收購行動還是立刻引起了移動業(yè)界的興趣,它們懷疑這是GOOGLE進(jìn)入移動市場的的標(biāo)志。盡管如此,這個當(dāng)時只是一個小規(guī)模的移動軟件開發(fā)公司正是由ANDYRUBIN、RICHMINER、NICKSEARS以及CHRISWHITE四個人共同創(chuàng)建的?,F(xiàn)在看來,他們的懷疑是正確的。差不多兩年半以后,在二零零七年十一月五日,GOOGLE發(fā)布了ANDROID,它這個的發(fā)布給移動業(yè)界帶來了一場可怕的風(fēng)暴,基于LINUX的全新移動操作系統(tǒng)。這不單單是一個全新的移動系統(tǒng),非常重要的是它是開源的。這是當(dāng)時新成立的開放手機(jī)聯(lián)盟整合下的成果,諸如GOOGLE、HTC、INTEL、SPRINTNEXTEL、TMOBILE以及NVIDIA都是這個聯(lián)盟的成員,該聯(lián)盟的目的就是要創(chuàng)立移動設(shè)備的開放標(biāo)準(zhǔn)。第一款搭載ANDROID系統(tǒng)的手機(jī)是2008年9月由TMOBILE發(fā)布的G1,它擁有GPS功能,31M攝像頭,以及一系列的GOOGLE應(yīng)用。G1的面市,正式拉開了GOOGLE以及整個移動業(yè)界激動人心的大冒險的序幕。ANDROID操作系統(tǒng)版本ANDROID11發(fā)布于2009年2月ANDROID15“CUPCAKE”這是第一個主要版本,發(fā)布于2009年5月這個升級之后,它的更新給用戶帶來了新的體驗。用戶界面得到了極大的改良,并且增添了以下功能。ANDROID16“DONUT”2009年9月發(fā)布。搭載ANDROID16的HTCHERO獲得了意想不到的成功。使得原來用許多都沒有用過ANDROID的人都對ANDROID非常的關(guān)注,并且也讓競爭者蘋果和微軟更加警惕了。ANDROID20/212009年10月26日,又一個主要版本升級以創(chuàng)紀(jì)錄的速度放出。這次,大版本升級到了ANDROID20/21“ECLAIR”。ANDROID201SDK在2009年12月3日發(fā)布出來,后來是2010年1月10日發(fā)布的21版本。很多圍觀群眾和用戶可能會有點(diǎn)奇怪“ANDROID為什么會被用甜點(diǎn)作為它系統(tǒng)版本的代號”,其實這個命名方法開始在ANDOIRD15發(fā)布出來的時候。每一個版本代表的甜點(diǎn)的尺寸就越變越大,然后按照字母的數(shù)序小蛋糕,甜甜圈和松餅。在這之前人們預(yù)計22版本的代號可能是“餡餅”,但這個最終被證明是錯誤的,“FROYO”(凍酸奶)才是ANDROID22這個伴隨GOOGLENEXUSONE發(fā)布的新版的最新代號。而下一個版本的代號將會是“姜餅”。ANDROID22“FROYO”NEXUSONE的用戶已經(jīng)開始接受ANDROID22“FROYO”的無線更新,其它機(jī)型的用戶可能會在短時間內(nèi)獲取到這一更新的。這一版本的更新出來會讓大量讓其他手機(jī)用戶垂涎三尺。有關(guān)的消息眾口一詞聲稱ANDROID30“GINGERBREAD”,GOOGLE將會在今年秋天的某個時候發(fā)布出來,它將帶來給用戶新的體驗。從ANDROID的發(fā)展旅途中,我們看到2003年ANDY他是一個有遠(yuǎn)見的人,看到了2005年的起步和被GOOGLE的收購,也看到了系統(tǒng)的進(jìn)步以及新的機(jī)型的快速發(fā)布。所有這一切都讓我們相信,ANDROID將會走向世界第一移動操作系統(tǒng)寶座的步伐是勢不可擋的。ANDROID平板電腦也在今年的夏天開始發(fā)布以及GOOGLETV發(fā)布以后也許還有GOOGLEMUSIC,ANDROID可能真的會將繼續(xù)帶著我們走向移動設(shè)備夢想的彼岸。1開發(fā)概述在手機(jī)游戲的早期,大多數(shù)開發(fā)者都是想要玩轉(zhuǎn)設(shè)備、學(xué)習(xí)技巧和快速攻關(guān)的狂熱分子。但是,隨著更多的開發(fā)者加入這個行業(yè),手機(jī)游戲已經(jīng)進(jìn)化成涉及到專業(yè)設(shè)計師、構(gòu)造師、開發(fā)者、產(chǎn)品經(jīng)銷商、律師、和藝術(shù)家在內(nèi)的主導(dǎo)產(chǎn)品。這是行業(yè)走向成熟的必然趨勢。盡管在某人的業(yè)余時間內(nèi)要開發(fā)和推銷簡單的游戲更加困難,但是更多的專業(yè)商店將為許多人提供更多的就業(yè)機(jī)會。從手機(jī)軟件的平臺的種類,游戲玩家的心理,未來移動通信服務(wù)終端的發(fā)展,3G手機(jī)網(wǎng)絡(luò)對手機(jī)軟件游戲的影響,還有從J2ME手機(jī)游戲開發(fā)平臺介紹的手機(jī)游戲的趨勢和未來這種游戲的運(yùn)營模式,這幾方面的內(nèi)容來看,手機(jī)游戲是未來游戲發(fā)展的趨勢,其移動性、互連性,必定會帶來網(wǎng)絡(luò)游戲的風(fēng)暴,這就使我們對這一個新興的領(lǐng)域有了一定的概念,對指導(dǎo)我們建立一個手機(jī)軟件開發(fā)培訓(xùn)的知識結(jié)構(gòu)有一定的幫助,也是我們的一個發(fā)展契機(jī)。11背景在我們的生活中有許多的游戲,但是游戲不同,它也會給玩家?guī)聿煌母惺芎蜕罾砟?。游戲是我們?nèi)粘I畹囊粋€必不可少的娛樂項目,也帶動了游戲相關(guān)產(chǎn)業(yè)市場的發(fā)展。游戲平臺是經(jīng)過從游戲機(jī)到電視游戲,然后從到PC游戲,到手機(jī)游戲,中間經(jīng)歷了很多的技術(shù)的更新和變革。但隨著新技術(shù)的發(fā)展和我們生活水平質(zhì)量的提高,手機(jī)開始逐漸變?yōu)槠占?,因為手機(jī)是非常小巧便捷的,而且方便的特性成為我們?nèi)粘I钪斜貍渫ㄓ嵐ぞ?。而基于手機(jī)平臺的游戲也就擁有的市場空間是巨大的,也因隨著3G的開通和應(yīng)用,手機(jī)游戲必然會迎來新的一輪游戲熱潮12課題來源現(xiàn)在的移動電話是小型的計算機(jī),它的處理能力與臺式機(jī)的標(biāo)準(zhǔn)處理能力相比很有限,但是足夠運(yùn)行一個小型的游戲?,F(xiàn)在的手機(jī)的一個特性就是它們還是網(wǎng)絡(luò)計算機(jī),能夠高速發(fā)送和接收數(shù)字?jǐn)?shù)據(jù)。除了語音數(shù)據(jù)以外,它們還可以發(fā)送和接收其它類型的數(shù)據(jù)。所以這樣的網(wǎng)絡(luò)游戲也可以在手機(jī)上實現(xiàn)。短信類游戲就好像“虛擬寵物”那樣。短信游戲是通過玩家和游戲服務(wù)商通過短信中的文字的內(nèi)容來交流,達(dá)到進(jìn)行游戲的目的的一種文字游戲。由于短信游戲的整個游戲過程都是通過文字來表達(dá),造成短信游戲的娛樂性較差。但是短信游戲卻是兼容性最好的手機(jī)游戲之一。只要您的手機(jī)可以發(fā)短信,您就可以暢快的享受短信游戲給您帶來的快樂了。圖形類游戲更接近我們常說的“電視游戲”,玩家通過動畫的形式來發(fā)展情節(jié)進(jìn)行游戲。由于游戲采用了更為直觀且更為精美的畫面直接表現(xiàn),因此圖形類游戲的游戲性和代入感往往較文字類游戲高。因此廣受玩家們的歡迎。嵌入式游戲是一種將游戲程序預(yù)先固化在手機(jī)的芯片中的游戲。由于這種游戲的所有數(shù)據(jù)都是預(yù)先固化在手機(jī)芯片中的,因此這種游戲是無法進(jìn)行任何修改的。也就是說,您不能更換其它游戲的,只能玩您手機(jī)中已經(jīng)存在的娛樂游戲,而且您也不能將它們刪除。手機(jī)在網(wǎng)絡(luò)游戲行業(yè)在多年的技術(shù)經(jīng)驗與運(yùn)營經(jīng)驗的積累與總結(jié)之后,到了2009年迫不及待的需要創(chuàng)新出新的游戲模式和嶄新的運(yùn)營模式來推動手機(jī)游戲市場的爆發(fā)和發(fā)展。其中比較吸引人們的是手機(jī)的休閑類的游戲。應(yīng)該可以說它是與PC網(wǎng)絡(luò)游戲完全的脫離開了,而且充分發(fā)揮了自身的優(yōu)勢手機(jī)終端。休閑類的游戲恰巧與之相反,只需要很少的網(wǎng)絡(luò)流量的網(wǎng)絡(luò)環(huán)境,通過少量多次的游戲形式帶給玩家流暢的游戲體驗滿足玩家瞬間提升的快感,但是同時卻很難具有長期的“沉迷”性。本題目是基于ANDROID平臺開發(fā)的一個小型的程序。其實都差不多,在有JAVA的智能手機(jī)上都可以運(yùn)行。其實手機(jī)是我們生活中不可缺少的工具,這些小游戲可以帶給我們快樂和放松我們的心情。無論什么樣手機(jī),我想買起來的時候上面就有一些它自帶的各種小游戲,其中有一個獨(dú)特的小游戲也是非常重要的。13國內(nèi)外研究現(xiàn)狀A(yù)NDROID是GOOGLE開發(fā)的基于LINUX平臺的開源手機(jī)操作系統(tǒng)。它包括操作系統(tǒng)、用戶界面和應(yīng)用程序移動電話工作所需的全部軟件,而且不存在任何以往阻礙移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。GOOGLE與開放手機(jī)聯(lián)盟合作開發(fā)了ANDROID,這個聯(lián)盟由包括中國移動、摩托羅拉、高通、宏達(dá)電和TMOBILE在內(nèi)的30多家技術(shù)和無線應(yīng)用的領(lǐng)軍企業(yè)組成。GOOGLE通過與運(yùn)營商、設(shè)備制造商、開發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化、開放式的移動電話軟件平臺,在移動產(chǎn)業(yè)內(nèi)形成一個開放式的生態(tài)系統(tǒng)。ANDROID作為谷歌企業(yè)戰(zhàn)略的重要組成部分,將進(jìn)一步推進(jìn)“隨時隨地為每個人提供信息“這一企業(yè)目標(biāo)的實現(xiàn)。我們發(fā)現(xiàn),全球為數(shù)眾多的移動電話用戶從未使用過任何基于ANDROID的電話。谷歌的目標(biāo)是讓(移動通訊)不依賴于設(shè)備甚至平臺。出于這個目的,ANDROID將補(bǔ)充,而不會替代谷歌長期以來奉行的移動發(fā)展戰(zhàn)略通過與全球各地的手機(jī)制造商和移動運(yùn)營商結(jié)成合作伙伴,開發(fā)既有用又有吸引力的移動服務(wù),并推廣這些產(chǎn)品。開放手機(jī)聯(lián)盟的成立和ANDROID的推出是對現(xiàn)狀的重大改變,在帶來初步效益之前,還需要不小的耐心和高昂的投入。但是,我們認(rèn)為全球移動用戶從中能獲得的潛在利益是值得付出這些努力的。如果你也是一個開發(fā)者,并對我們的想法感興趣,就請再給我們一星期的時間,屆時谷歌便能提供SDK了。如果你是一名移動用戶,只需再等一段時間,我們的一些合作伙伴計劃在2008年下半年推出基于ANDROID平臺的電話產(chǎn)品。如果你已經(jīng)擁有一部你了解并喜愛的電話,請登錄MOBILEGOOGLECOM,確保你已經(jīng)安裝谷歌手機(jī)地圖、GMAIL以及其他一些專為你的手機(jī)開發(fā)的精彩應(yīng)用。谷歌將繼續(xù)努力,讓這些服務(wù)變得更好,同時也將添加更有吸引力的特性、應(yīng)用和服務(wù)。14論文主要工作此游戲主要是采用ANDROID的VIEW框架編寫,部分框架運(yùn)用ANDROID中的其他組件。主要運(yùn)用了算法來實現(xiàn)對棋局的分析,棋盤輸贏的判定。UI方面此游戲當(dāng)進(jìn)入游戲的界面時,調(diào)用的是一個用相對布局ABSOLUTELAYOUT的XML布局文件。其中包括了一個IAMGEVIEW和4個BUTTON分別實現(xiàn)了不同的功能。第一個BUTTON是進(jìn)入新游戲,點(diǎn)擊按鈕進(jìn)入新游戲,來選擇對手。第二個BUTTON是幫助,用了一個TEXTVIEW來說明怎樣來進(jìn)行游戲。第三個BUTTON是游戲的關(guān)于,用了一個ALERTDIALOG來介紹了一下游戲的這個游戲的好處。第四個BUTTON是游戲的退出按鈕。在游戲中,我用畫線來不滿了整個的手機(jī)屏幕,在上面用了TEXTVIEW來進(jìn)行了文字的說明和提示。本篇論文,主要目的是為了探討更加深入的理解ANDROID,為移動終端上的游戲軟件的打造提供一個思路。2ANDROID的開發(fā)環(huán)境本章將主要介紹如何構(gòu)建ANDROID開發(fā)環(huán)境,包括獲取ANDROIDSDK、ECLIPSE以及進(jìn)行ANDROIDECLIPSE插件設(shè)置等。21操作系統(tǒng)目前只支持XP32BIT、VISTA32/64BIT、MACOSX1048或更新版本X86、LINUX只在LINUXUBUNTUDAPPERDRAKE上面做過測試。系統(tǒng)XPSP2/SP332BIT來做講解,其他系統(tǒng)的可以GOOGLE一下差異,反正都大同小異的。22ANDROID開發(fā)環(huán)境無論是官方還是我本人,都建議使用ECLIPSE進(jìn)行開發(fā),當(dāng)然,ECLIPSE版本要在33以上,這是官方說法,33以下我也沒測過,33EUROPA、34GANYMEDE都可以,JAVA版本或者EE版本也都沒問題的,可以到ECLIPSE官方下載最新版本。因為開發(fā)是基于JAVA的,所以JDK是少不了的,JDK要求是50或者60,我還是用50比較多,可以到SUN官方下載。23ANDROID開發(fā)環(huán)境變量配置231JDK的配置首先要到SUN官方下載JDK,注意的是下載JDK而不是下載JRE,因為JRE是提供JAVA的運(yùn)行環(huán)境而不是開發(fā)環(huán)境。SUN官方網(wǎng)站是HTTP/JAVASUNCOM下載后安裝是下的解壓包那就解壓到某目錄,例如解壓到是CPROGRAMFILESJAVAJDK150_14右鍵點(diǎn)擊我的電腦屬性高級,點(diǎn)擊下面的環(huán)境變量,在下面的“系統(tǒng)變量”處選擇新建在變量名處輸入JAVA_HOME變量值中輸入剛才的目錄,比如我的就CPROGRAMFILESJAVAJDK150_14。效果如圖21所示圖21進(jìn)入環(huán)境變量確定后再新建一個變量名為CLASSPATH,變量值為JAVA_HOME/LIB/RTJARJAVA_HOME/LIB/TOOLSJAR,確定后找到PATH的變量,雙擊或點(diǎn)擊編輯,在變量值最前面加上JAVA_HOME/BIN注意里面的是,確定、確定、確定后即可。具體如下圖22所示圖22環(huán)境變量的設(shè)置然后開始運(yùn)行CMD,輸入JAVA或者JAVAC看看有沒有效果,如果出來一大堆其它的東西,那就好了,如果出現(xiàn)類似XXX不是內(nèi)部或者是外部命令之類的,那就說明你的設(shè)置有問題,看看那里出問題然后加以改正。232SDK的配置因為我們要開發(fā)的ANDROID應(yīng)用程序,所以下的SDK是GOOGLE那里下載,地址在HTTP/DEVELOPERANDROIDCOM/SDK/15_R3/INDEXHTML以后更新后估計地址會變,所以大家可以從HTTP/DEVELOPERANDROIDCOM/INDEXHTML進(jìn)入ANDROID主頁,然后點(diǎn)擊SDK就到了這個下載頁面,我是XP,當(dāng)然下載了第一個WINDOWS的版本。下載后解壓到一個目錄,如是DSDKANDROIDSDKWINDOWS15_R3ANDROIDSDKWINDOWS15_R3然后同樣要設(shè)置環(huán)境變量,同JDK設(shè)置,新建一個SDK_HOME,值為DSDKANDROIDSDKWINDOWS15_R3ANDROIDSDKWINDOWS15_R3,然后找到PATH,在前面加上SDK_HOMETOOLS就OK了。和JDK一樣,我們也可以測試一下環(huán)境變量是否設(shè)置成功,CMD窗口中輸入ANDROID,出現(xiàn)一堆東西,就完成了。24ECLIPSE設(shè)置當(dāng)然,以上都搞定后,還不能馬上用ECLIPSE開發(fā)ANDROID應(yīng)用程序,還必須添加ECLIPSE插件才行,幸好這步驟非常輕松,打開ECLIPSE后,點(diǎn)擊菜單欄的HELPINSTALLNEWSOFTWARE然后點(diǎn)擊ADD會出來一個ADDSITE的窗口,這里NAME輸入ANDROID自己取個就是了,LOCATION中輸入插件的網(wǎng)絡(luò)地址HTTPS/DLSSLGOOGLECOM/ANDROID/ECLIPSE/然后就等待連接了,然后INSTALL,把“ANDROIDDDMS“和“ANDROIDDEVELOPMENTTOOLS“都選中,F(xiàn)INISH就可以了,可能有段時間會去計算插件占用資源情況,慢慢等會。完成后會提示重啟ECLIPSE來加載插件,OK重啟,就可以用了。25ANDROID開發(fā)環(huán)境配置最終步驟為什么要有這個步驟,是因為運(yùn)行了EXAMPLE的時候總會出現(xiàn)“FAILEDTOFINDANAVDCOMPATIBLEWITHTARGET”,所以在這里寫一下該步驟來提供大家的方便。AVD必須在運(yùn)行實例之前前創(chuàng)建好,這個時候可以直接在CMD中輸入ANDROIDLIST,就會列出幾個由AVD創(chuàng)建的API,如果有ID1ID2ID3分別對應(yīng)SDK11SDK15GOOGLEAPIS。然后就運(yùn)行ANDROIDCREATENAMEMYNAME取一個英文的名字TARGET3如果要用SDK15就輸入2,11輸出13ANDROID應(yīng)用程序核心本章將會詳細(xì)敘述ANDROID的應(yīng)用程序所包括的基本組件,還有這些組件之間的溝通方式INTENT除了CONTENTPROVIDER,同時講解一下ANDROID應(yīng)用程序的生命周期ACTIVITY這是其他智能收與ANDROID手機(jī)平臺最顯著不同的地方。最后將介紹在ANDROID的應(yīng)用程序中如何利用下載外部資源。31應(yīng)用程序基礎(chǔ)ANDROID的應(yīng)用程序全部都是用JAVA編程語言所寫的。編譯后的JAVA代碼包括應(yīng)用程序要求的任何數(shù)據(jù)和資源文件,是通過AAPT工具捆綁成一個ANDROID包,歸檔文件是以APK為后綴。這個文件是分發(fā)應(yīng)用程序和安裝到移動設(shè)備的中介或者是工具,用戶下載這個文件到他們自己的設(shè)備上。一個APK文件中的所有代碼就會被認(rèn)為是一個應(yīng)用程序。AAPT是ANDROIDASSETPACKAGINGTOOL的首寫字母的縮寫,這個工具包是含在SDK的TOOLS/目錄下的。查看、創(chuàng)建、更新與ZIP兼容的歸檔文件(ZIP、JAR、APK)。它也能將資源文件編譯成二進(jìn)制包。雖然你可能不會經(jīng)常直接使用APPT,但構(gòu)建腳本(BUILDSCRIPTS)和IDE插件會使用這個工具打包成APK文件,構(gòu)成一個ANDROID的應(yīng)用程序。下面是更詳細(xì)的使用細(xì)節(jié),首先打開一個終端,進(jìn)入TOOLS/目錄下,運(yùn)行命令LINUX或MAC操作系統(tǒng)/AAPT,如果是WINDOWSAAPTEXE。在這里注意的是TOOLS/目錄指的是ANDROIDSDK目錄下的/PLATFORMS/ANDROIDX/TOOLS/。在很多的方面,每個ANDROID的應(yīng)用程序是生活在它自己的世界。默認(rèn)的情況下,任何一個應(yīng)用程序是運(yùn)行在它自己的LINUX進(jìn)程中。而當(dāng)應(yīng)用程序中的任何代碼需要被執(zhí)行時候,ANDROID將啟動進(jìn)程;當(dāng)它不再需要和系統(tǒng)資源不會被其他應(yīng)用程序所請求時,ANDROID就會關(guān)閉進(jìn)程這個進(jìn)程。每一個應(yīng)用程序都有自己的JAVA虛擬機(jī)(VM),所以應(yīng)用程序的代碼是獨(dú)立于其他所有的應(yīng)用程序代碼的運(yùn)行。在默認(rèn)情況下,每一個應(yīng)用程序分配一個唯一的LINUX用戶ID。權(quán)限被設(shè)置為每一個應(yīng)用程序的文件僅對用戶和應(yīng)用程序自己本身可見。雖然有一些方法也可以暴露他們給其他應(yīng)用程序。也有可能的是設(shè)置兩個應(yīng)用程序共享一個用戶ID,這種情況下,他們能夠看到對方的文件。為了節(jié)省系統(tǒng)資源的占用,具有相同ID的應(yīng)用程序最好可以安排在同一個LINUX進(jìn)程中,共享同一個VM。32應(yīng)用程序組件ANDROID的一個主要特點(diǎn)是,一個應(yīng)用程序可以利用其他應(yīng)用程序的元素(假設(shè)這些應(yīng)用程序允許的話)。例如,如果你的應(yīng)用程序需要顯示一個圖像的滾動列表,且其他應(yīng)用程序已經(jīng)開發(fā)了一個合適的滾動條并可以提供給別的應(yīng)用程序用,你可以調(diào)用這個滾動條來工作,而不用自己開發(fā)一個。你的應(yīng)用程序不用并入其他應(yīng)用程序的代碼或鏈接到它。相反,當(dāng)需求產(chǎn)生時它只是啟動其他應(yīng)用程序塊。對于這個工作,當(dāng)應(yīng)用程序的任何部分被請求時,系統(tǒng)必須能夠啟動一個應(yīng)用程序的進(jìn)程,并實例化該部分的JAVA對象。因此,不像其他大多數(shù)系統(tǒng)的應(yīng)用程序,ANDROID應(yīng)用程序沒有一個單一的入口點(diǎn)(例如,沒有MAIN函數(shù))。相反,系統(tǒng)能夠?qū)嵗瓦\(yùn)行需要幾個必要的組件。有四種類型的組件活動(ACTIVITIES)服務(wù)(SERVICES)廣播接收者(BROADCASTRECEIVERS)內(nèi)容提供者(CONTENTPROVIDERS)然而,并不是所有的應(yīng)用程序都必須包含上面的四個部分,你的應(yīng)用程序可以由上面的一個或幾個來組建。當(dāng)你決定使用以上哪些組件來構(gòu)建ANDROID應(yīng)用程序時,你應(yīng)該將它們列在ANDROIDMANIFESTXML文件中,在這個文件中你可以聲明應(yīng)用程序組件以及它們的特性和要求。關(guān)于ANDROIDMANIFESTXML在ANDROID開發(fā)之旅HELLOWORLD項目的目錄結(jié)構(gòu)的16、ANDROIDMANIFESTXML簡單介紹了一下,你可以參考一下,下篇也將介紹它。321、活動(ACTIVITIES)一個活動表示一個可視化的用戶界面,關(guān)注一個用戶從事的事件。例如,一個活動可能表示一個用戶可選擇的菜單項列表,或者可能顯示照片連同它的標(biāo)題。一個文本短信應(yīng)用程序可能有一個活動,顯示聯(lián)系人的名單發(fā)送信息;第二個活動,寫信息給選定的聯(lián)系人;其他活動,重新查看舊信息或更改設(shè)置。雖然他們一起工作形成一個整體的用戶界面,但是每個活動是獨(dú)立于其他活動的。每一個都是作為ACTIVITY基類的一個子類的實現(xiàn)。ANDROIDAPPACTIVITY類因為幾乎所有的活動(ACTIVITIES)都是與用戶交互的,所以ACTIVITY類關(guān)注創(chuàng)建窗口,你可以用方法SETCONTENTVIEWVIEW將自己的UI放到里面。然而活動通常以全屏的方式展示給用戶,也可以以浮動窗口或嵌入在另外一個活動中。有兩個方法是幾乎所有的ACTIVITY子類都實現(xiàn)的ONCREATEBUNDLE初始化你的活動(ACTIVITY),比如完成一些圖形的繪制。最重要的是,在這個方法里你通常將用布局資源(LAYOUTRESOURCE)調(diào)用SETCONTENTVIEWINT方法定義你的UI,和用FINDVIEWBYIDINT在你的UI中檢索你需要編程地交互的小部件(WIDGETS)。SETCONTENTVIEW指定由哪個文件指定布局(MAINXML),可以將這個界面顯示出來,然后我們進(jìn)行相關(guān)操作,我們的操作會被包裝成為一個意圖(INTENT),然后這個意圖對應(yīng)有相關(guān)的ACTIVITY進(jìn)行處理。ONPAUSE處理當(dāng)離開你的活動時要做的事情。最重要的是,用戶做的所有改變應(yīng)該在這里提交(通常CONTENTPROVIDER保存數(shù)據(jù))。生命周期如圖31圖31ANDROID的生命周期每一個應(yīng)用程序可能只包含一個活動,或者是像短信應(yīng)用程序一樣,它可能會包含幾個活動。這些活動分別是什么,以及有多少,這個當(dāng)然取決于它的應(yīng)用程序自己的設(shè)計。根據(jù)一般情況來說,當(dāng)一個應(yīng)用程序被啟動的時候,會被標(biāo)記為第一個的活動,應(yīng)該展示給用戶。從一個活動轉(zhuǎn)移到另外一個活動由當(dāng)前的活動完成從而開始下一個。每一個活動都會有一個默認(rèn)的窗口。根據(jù)一般情況來說,窗口是會填滿整個屏幕的,但是它也有可能比屏幕小或者是浮在其他窗口上,這個就是程序員代碼的編寫情況了。一個活動還可以使用額外窗口。比如彈出式對話框,或者是當(dāng)一個用戶選擇屏幕上一個特定的項時,會跳出一個窗口來顯示給用戶重要的信息。窗口的可視化內(nèi)容是由繼承自接口為VIEW基類,一個分層的視圖對象提供。每個可視化控件是窗口內(nèi)的一個特定的矩形空間。父視圖包含和組織子女視圖的布局。葉子視圖分層的底層。繪制的矩形會直接控制和響應(yīng)用戶的操作。所以,一個視圖活動是與用戶發(fā)生交互的地方。比如說,一個視圖顯示一個小的圖片和當(dāng)用戶點(diǎn)擊圖片時發(fā)起一個動作行為。ANDROID有一些現(xiàn)成的可視化控件你可以使用,其中包括按鈕(BUTTONS)、圖片按鈕(IMAGEBUTTON)、文本域(TEXTFIELDS)、可編輯文本控件(EDITTEXT)、菜單項(MENUITEMS)、仿真時鐘(ANALOGCLOCK)滾動條(SCROLLBARS)、開關(guān)按鈕(TOGGLEBUTTON)、復(fù)選按鈕(CHECKBOXES)等等。通過ACTIVITYSETCONTENTVIEW方法來設(shè)置一個視圖層次在我們的活動窗口中。內(nèi)容視圖(CONTENTVIEW)是層次結(jié)構(gòu)的根視圖對象。層次結(jié)構(gòu)如下圖32所示圖32VIEW的層次結(jié)構(gòu)ACTIVITYSETCONTENTVIEW方法PUBLICVOIDSETCONTENTVIEWINTLAYOUTRESID根據(jù)布局資源的設(shè)置活動界面。資源將會被夸大,添加布局資源文件中的所有的最高層的視圖(TOPLEVELVIEWS)到活動322、服務(wù)(SERVICES)與ACTIVITY相反,SERVICE是沒有可視化的用戶界面,但是SERVICE的特點(diǎn)是能長時間在后臺運(yùn)行的。所以,也可以這樣去理解,SERVICE是具有一段較長生命周期而且沒有用戶界面的程序。比如說一個服務(wù)可能要播放背景音樂但是用戶做可以去做其他一些事情,或者它也可能從網(wǎng)絡(luò)獲取數(shù)據(jù),也或者是計算一些東西并會提供一個結(jié)果給需要的活動(ACTIVITIES)。每一個服務(wù)都繼承自SERVICE基類。每一個服務(wù)類都惠子在ANDROIDMANIFESTXML中有自己相應(yīng)的聲明。服務(wù)必須可以通過CONTEXTSTARTSERVICE或者CONTEXTBINDSERVICE啟動因為SERVICE是有兩個不同的生命周期的。一個非常典型的例子是媒體播放器播放一個播放列表中的歌曲文件。該播放器應(yīng)用程序?qū)⒖赡苡幸粋€或者是多個活動(ACTIVITIES),可以允許用戶選擇要聽的歌曲和開始播放。然而,音樂播放本身就不會被一個活動處理,因為用戶是希望保持音樂一直播放的,當(dāng)用戶離開播放器的時候而去做其他事情。為了保持音樂能夠繼續(xù)播放,媒體播放器活動可以啟動一個服務(wù)運(yùn)行在后臺的運(yùn)行。系統(tǒng)將會保持音樂播放服務(wù)運(yùn)行,甚至媒體播放器離開屏幕的時候??梢赃B接到(綁定到)一個持續(xù)運(yùn)行的服務(wù)(并啟動服務(wù),如果它尚未運(yùn)行)。連接之后,你可以通過服務(wù)暴露的接口與服務(wù)交流。對于音樂服務(wù),這個接口可以允許用戶暫停、倒帶、停止和重新播放。像活動(ACTIVITIES)和其他組件一樣,服務(wù)(SERVICES)運(yùn)行在應(yīng)用程序進(jìn)程中的主線程中。因此,他們將不會阻止其他組件或用戶界面,他們往往產(chǎn)生其他一些耗時的任務(wù)(如音樂播放)。323、廣播接收者(BROADCASTRECEIVERS)一個廣播接收者是這樣一個組件,它不做什么事,僅是接受廣播公告并作出相應(yīng)的反應(yīng)。許多廣播源自于系統(tǒng)代碼,例如公告時區(qū)的改變、電池電量低、已采取圖片、用戶改變了語言偏好。應(yīng)用程序也可以發(fā)起廣播,例如為了他其他程序知道某些數(shù)據(jù)已經(jīng)下載到設(shè)備且他們可以使用這些數(shù)據(jù)。一個應(yīng)用程序可以有任意數(shù)量的廣播接收者去反應(yīng)任何它認(rèn)為重要的公告。所有的接受者繼承自BROADCASTRECEIVER基類。BROADCASTRECEIVER類是接受SENDBROADCAST發(fā)送的意圖(INTENTS)的基類。可以用CONTEXTREGISTERRECEIVER動態(tài)地注冊這個類的實例,或者通過ANDROIDMANIFESTXML中標(biāo)簽靜態(tài)發(fā)布。注意如果你在ACTIVITYONRESUME注冊一個接受者,你應(yīng)該在ACTIVITYONPAUSE注銷它。因為當(dāng)暫停時你不會收到意圖,注銷它將削減不必要的系統(tǒng)開銷。不要在ACTIVITYONSAVEINSTANCESTATE中注銷它,因為它將不會被調(diào)用,如果用戶移動到先前的堆棧。有兩種主要的可接受廣播類型正常廣播(由CONTEXTSENDBROADCAST發(fā)送)是完全異步的。所有的廣播接收者以無序方式運(yùn)行,往往在同一時間接收。這樣效率較高,但是意味著接受者不能使用結(jié)果或終止廣播數(shù)據(jù)傳播。有序廣播(由CONTEXTSENDORDEREDBROADCAST發(fā)送)一次傳遞給一個接收者。由于每個接收者依次執(zhí)行,因此它可以傳播到下一個接收器,也可以完全終止傳播以便他不會傳遞給其他接收者。接收者的運(yùn)行順序可由匹配的意圖過濾器(INTENTFILTER)的ANDROIDPRIORITY屬性控制。廣播接收者不顯示一個用戶界面。然而,它們啟動一個活動去響應(yīng)收到的信息,或者他們可能使用NOTIFICATIONMANAGER去通知用戶。通知可以使用多種方式獲得用戶的注意閃爍的背光、振動設(shè)備、播放聲音等等。典型的是放在一個持久的圖標(biāo)在狀態(tài)欄,用戶可以打開獲取信息。324、內(nèi)容提供者(CONTENTPROVIDERS)內(nèi)容提供者(CONTENTPROVIDER)使一個應(yīng)用程序的指定數(shù)據(jù)集提供給其他應(yīng)用程序。這些數(shù)據(jù)可以存儲在文件系統(tǒng)中、在一個SQLITE數(shù)據(jù)庫、或以任何其他合理的方式。內(nèi)容提供者繼承自CONTENTPROVIDER基類并實現(xiàn)了一個標(biāo)準(zhǔn)的方法集,使得其他應(yīng)用程序可以檢索和存儲數(shù)據(jù)。然而,應(yīng)用程序并不直接調(diào)用這些方法。相反,替代的是它們使用一個CONTENTRESOLVER對象并調(diào)用它的方法。CONTENTRESOLVER能與任何內(nèi)容提供者通信,它與提供者合作來管理參與進(jìn)來的進(jìn)程間的通信。內(nèi)容提供者是ANDROID應(yīng)用程序的主要組成部分之一,提供內(nèi)容給應(yīng)用程序。他們封裝數(shù)據(jù)且通過單個CONTENTRESOLVER接口提供給應(yīng)用程序。只有需要在多個應(yīng)用程序間共享數(shù)據(jù)是才需要內(nèi)容提供者。例如,通訊錄數(shù)據(jù)被多個應(yīng)用程序使用,且必須存儲在一個內(nèi)容提供者中。如果你不需要在多個應(yīng)用程序間共享數(shù)據(jù),你可以直接使用SQLITEDATABASE當(dāng)CONTENTRESOLVER發(fā)出一個請求時,系統(tǒng)檢查給定的URI的權(quán)限并傳遞請求給內(nèi)容提供者注冊。內(nèi)容提供者能理解URI想要的東西。URIMATCHER類用于幫組解析URIS。需要實現(xiàn)的方法主要如下QUERYURI,STRING,STRING,STRING,STRING返回數(shù)據(jù)給調(diào)用者INSERTURI,CONTENTVALUES插入數(shù)據(jù)到內(nèi)容提供者UPDATEURI,CONTENTVALUES,STRING,STRING更新內(nèi)容提供者已存在的數(shù)據(jù)DELETEURI,STRING,STRING從內(nèi)容提供者中刪除數(shù)據(jù)GETTYPEURI返回內(nèi)容提供者中的MIME類型數(shù)據(jù)更多的關(guān)于CONTENTRESOLVER信息,請查看相關(guān)文檔。每當(dāng)有一個應(yīng)該由特定組件處理的請求,ANDROID可以確保該組件的應(yīng)用程序正在運(yùn)行,如果沒有就啟動它,而且一個適當(dāng)?shù)慕M件實例可用,如果沒有就創(chuàng)建。4相關(guān)技術(shù)概念本章節(jié)主要介紹一下此論文中用到了的ANDROID的布局文件,可視化控件以及它們的具體實現(xiàn)。41坐標(biāo)布局(ABSOLUTELAYOUT)坐標(biāo)布局(ABSOLUTELAYOUT)的子控件需要指定相對與此坐標(biāo)布局的橫、縱坐標(biāo)的值,將會想FRAMELAYOUT那樣被排在左上角。項目中進(jìn)入游戲的布局文件代碼如下42INTENTANDROID中提供了INTENT機(jī)制來協(xié)助應(yīng)用間的交互與通訊,INTENT負(fù)責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,ANDROID則根據(jù)此INTENT的描述,負(fù)責(zé)找到對應(yīng)的組件,將INTENT傳遞給調(diào)用的組件,并完成組件的調(diào)用。INTENT不僅可用于應(yīng)用程序之間,也可用于應(yīng)用程序內(nèi)部的ACTIVITY/SERVICE之間的交互。因此,INTENT在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。(1)ACTION一般要執(zhí)行的操作,如ACTION_VIEW,ACTION_EDIT,ACTION_MAIN等(2)DATA也就是執(zhí)行動作要操作的數(shù)據(jù)ANDROID中采用指向數(shù)據(jù)的一個URI來表示,如在聯(lián)系人應(yīng)用中,一個指向某聯(lián)系人的URI可能為CONTENT/CONTACTS/1。對于不同的動作,其URI數(shù)據(jù)的類型是不同的可以設(shè)置TYPE屬性指定特定類型數(shù)據(jù),如ACTION_EDIT指定DATA為文件URI,打電話為TELURI,訪問網(wǎng)絡(luò)為HTTPURI,而由CONTENTPROVIDER提供的數(shù)據(jù)則為CONTENTURIS。(3)CATEGORY提供了有關(guān)的行動來執(zhí)行的其他信息。例如,CATEGORY_LAUNCHER意味著它應(yīng)該出現(xiàn)在作為頂層應(yīng)用程序啟動器,而CATEGORY_ALTERNATIVE意味著它應(yīng)在的其他行動用戶可以對一個數(shù)據(jù)列表中。(4)TYPE指定一個明確的意圖的數(shù)據(jù)類型(MIME類型)。一般情況下,類型推斷,從數(shù)據(jù)本身。通過設(shè)置這個屬性,您禁用,評價并強(qiáng)制顯式類型。(5)COMPONENT指定組件類使用的意圖明確的名稱。通常這是由看在意圖(動作,數(shù)據(jù)/類型和類別)其它信息和匹配一個組件,它可以處理它的。如果這個屬性被設(shè)置,那么評價沒有執(zhí)行,這部份會被用來完全一樣的。通過指定這個屬性,其他所有屬性成為可選的意向。(6)EXTRAS這是任何其他信息包。這可以用來提供擴(kuò)展信息的組件。例如,如果我們有一個行動,發(fā)送一封郵件,我們也可以包括在這里的數(shù)據(jù)提供一個額外的部分主題,正文等。下面是轉(zhuǎn)載來的其他的一些INTENT用法實例轉(zhuǎn)自JAVAEYE顯示網(wǎng)頁1URIURIURIPARSE“HTTP/GOOGLECOM“2INTENTINTENTNEWINTENTINTENTACTION_VIEW,URI3STARTACTIVITYINTENT顯示地圖1URIURIURIPARSE“GEO38899533,77036476“2INTENTINTENTNEWINTENTINTENTACTION_VIEW,URI3STARTACTIVITYINTENT4/其他GEOURI例5/GEOLATITUDE,LONGITUDE6/GEOLATITUDE,LONGITUDEZZOOM7/GEO0,0QMYSTREETADDRESS8/GEO0,0QBUSINESSNEARCITY9/GOOGLESTREETVIEWCBLLLAT,LNG路徑規(guī)劃1URIURIURIPARSE“HTTP/MAPSGOOGLECOM/MAPSFD2INTENTINTENTNEWINTENTINTENTACTION_VIEW,URI3STARTACTIVITYINTENT4/WHERESTARTLAT,STARTLNG,ENDLAT,ENDLNGAREALONGWITH6DECIMALSLIKE50123456打電話1/叫出撥號程序2URIURIURIPARSE“TEL0280000456“3INTENTINTENTNEWINTENTINTENTACTION_DIAL,URI4STARTACTIVITYINTENT1/直接打電話出去2INTENTINTENTNEWINTENTINTENTACTION_CALL,URI3URIURIURIPARSE“TEL0280000456“43ALERTDIALOGALERTDIALOG是一個DIALOG類的子類,可以顯示一個、兩個或三個按鈕。如果你只是想在此對話框中顯示一個字符串,請使用SETMESSAGE()方法。如果你想顯示一個更復(fù)雜的VIEW,查找FRAMELAYOUT的所謂“自定義“,并添加到您的VIEWFRAMELAYOUTFLFRAMELAYOUTFINDVIEWBYIDANDROIDRIDCUSTOMFLADDVIEWMYVIEW,NEWLAYOUTPARAMSMATCH_PARENT,WRAP_CONTENT44相關(guān)的算法研究441相關(guān)的數(shù)據(jù)結(jié)構(gòu)關(guān)于盤面情況的表示,首先得到屏幕的大小,然后根據(jù)所畫棋子的大小來確定下一條棋盤的畫線。產(chǎn)生棋盤上所有的線PRIVATEVOIDCREATELINESFORINTI0ILINESNEWARRAYLISTPRIVATEVOIDDRAWCHSSBOARDLINESCANVASCANVASFORLINELINELINESCANVASDRAWLINELINEXSTART,LINEYSTART,LINEXSTOP,LINEYSTOP,PAINT442分析規(guī)則判斷各個四個方向的棋子在某個方向(八個中的一個)可下多少棋子,這個方法是第一分析中的核心方法PRIVATEVOIDCOUNTPOINTLISTMYPOINTS,LISTENEMYPOINTS,POINTPOINT,FIRSTANALYSISRESULTFR,INTDIRECTION,BOOLEANFORWARDIFMYPOINTSCONTAINSPOINTTONEXTPOINT,DIRECTION,FORWARDFRCOUNTIFMYPOINTSCONTAINSPOINTTONEXTPOINT,DIRECTION,FORWARDFRCOUNTIFMYPOINTSCONTAINSPOINTTONEXTPOINT,DIRECTION,FORWARDFRCOUNTIFMYPOINTSCONTAINSPOINTTONEXTPOINT,DIRECTION,FORWARDFRCOUNTELSEIFENEMYPOINTSCONTAINSPOINT|ISOUTSIDEOFWALLPOINT,DIRECTIONFRALIVESTATEHALF_ALIVEELSEIFENEMYPOINTSCONTAINSPOINT|ISOUTSIDEOFWALLPOINT,DIRECTIONFRALIVESTATEHALF_ALIVEELSEIFENEMYPOINTSCONTAINSPOINT|ISOUTSIDEOFWALLPOINT,DIRECTIONFRALIVESTATEHALF_ALIVEELSEIFENEMYPOINTSCONTAINSPOINT|ISOUTSIDEOFWALLPOINT,DIRECTIONFRALIVESTATEHALF_ALIVE/在某個方向上是否還能下到滿五個棋子PRIVATEINTMAXCOUNTONTHISDIRECTIONPOINTPOINT,LISTENEMYPOINTS,INTDIRECTION,INTCOUNTINTXPOINTGETX,YPOINTGETYSWITCHDIRECTION/橫向CASEHENGWHILEENEMYPOINTSCONTAINSPOINTSETXPOINTGETX1POINTSETYYWHILEENEMYPOINTSCONTAINSPOINTSETYPOINTGETY1POINTSETXXSETYYWHILEENEMYPOINTSCONTAINSPOINTSETXPOINTGETX1SETYPOINTGETY1POINTCOMPUTERPOINTNULLPOINTHUMANPOINTNULLINTX,YFIRSTANALYSISRESULTFIRSTANALYSISRESULTFORINTI0ICURRENTRANGEXSTOP|YCURRENTRANGEYSTOPCONTINUE/IFXDEBUGX/嘗試在此位置上下一個棋子,并分析在“橫向”這個方向上我方可形成的狀態(tài),如活4,活3,半活4,活2等所有狀態(tài)FIRSTANALYSISRESULTTRYANDCOUNTRESULTCOMUTERS,HUMANS,COMPUTERPOINT,HENGCOMPUTERPOINTSETXXSETYY/回復(fù)點(diǎn)位的原值,以供下次分析IFFIRSTANALYSISRESULTNULL/無返回結(jié)果此方向上不可能達(dá)到五個棋子,IFFIRSTANALYSISRESULTCOUNT5/等于5表示在此點(diǎn)上下棋子即可連成5個,勝利了,不再往下進(jìn)行分析/記錄第一次分析結(jié)果ADDTOFIRSTANALYSISRESULTFIRSTANALYSISRESULT,COMPUTERFIRSTRESULTSRETURNCOMPUTERPOINT第二次分析,分析第一次形成的結(jié)果,第一次分析結(jié)果會把一步棋在四個方向上可形成的結(jié)果生成最多四個FIRSTANALYSISRESULT對象(敵我各四)/這里要把這四個對象組合成一個SENCONDANALYSISRESULT對象,PRIVATEPOINTDOCOMPUTERSENCONDANALYSISMAPFIRSTRESULTS,LISTSENCO
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職汽車運(yùn)營管理應(yīng)用(應(yīng)用技術(shù))試題及答案
- 2025年大學(xué)(森林保護(hù))森林防火學(xué)階段測試題及解析
- 2025年中職模具設(shè)計與制造(模具調(diào)試技巧)試題及答案
- 2025年大學(xué)音樂教育(聲樂教學(xué))試題及答案
- 2025年高職(航海技術(shù))船舶貨運(yùn)管理綜合測試題及答案
- 2025年中職電梯安裝與維修保養(yǎng)(電梯故障診斷與排除)試題及答案
- 2025年中職機(jī)械類(數(shù)控編程基礎(chǔ))試題及答案
- 2025年大學(xué)公路運(yùn)輸(公路運(yùn)輸實務(wù))試題及答案
- 2025年中職(鐵道運(yùn)輸管理)鐵路客運(yùn)組織試題及答案
- 2026年常州機(jī)電職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試模擬試題有答案解析
- 2025年河南體育學(xué)院馬克思主義基本原理概論期末考試筆試題庫
- 2026年中國鐵路上海局集團(tuán)有限公司招聘普通高校畢業(yè)生1236人備考題庫及答案詳解1套
- 2026年上海市普陀區(qū)社區(qū)工作者公開招聘備考題庫附答案
- 移動式工程機(jī)械監(jiān)理實施細(xì)則
- 買房分手協(xié)議書范本
- 門窗安裝專項施工方案
- 招聘及面試技巧培訓(xùn)
- 貴州興義電力發(fā)展有限公司2026年校園招聘考試題庫附答案
- 2025年水果連鎖門店代理合同協(xié)議
- 耐克加盟協(xié)議書
- 朱棣課件教學(xué)課件
評論
0/150
提交評論