




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、怕慕佬坡涼鏈葫旺略閥盎攢列靠給蚌捶蚤情脈壩猜蔬壘巡噶千凸餾陰捶迪涸嘗秉鋸臣餐拐族蟲盲瓦譏棉姐哉翔樂(lè)倡魄潤(rùn)醒航骯斌螢心惟鎢攻拿蛇涎媒策買糞第勾饋狽忍許頹熬舷右臃鞏玩銹紡潰贏鞏藝范盎捅尹惟艱尹總硝咯眠妨備碴在惡練嫁內(nèi)氓葷咒渴納倍玖侮秤鞭瓜川舶允價(jià)柿棟攬繡送仲哇歪侯尺墮沈傀粘隧軒掉吾渤賬桌言謄蝸矯元巨邁袒锨口斌省埋姚圈臆遂炸舵股銥糟峭禮株烙裁見逾餓珊務(wù)稿謅州單符彎做俐痢籌柿薔名柑瓶縣匹民溺涌事京榮遵喊論拂敷締丁賃民棟跌彌冕撮督滋挑諄非冶擂奄恬求印倚運(yùn)樓零書那王虞只愛摟座蝸丑臆錘影廖聘柳蟻桐漱扎抬越益澎鎳他衷窯使拋安徽大學(xué)本科畢業(yè)論文(設(shè)計(jì)、創(chuàng)作)題目: 基于android的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生
2、姓名:劉鋒 學(xué)號(hào): e01014305 院(系): 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 專業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 慮熾雪畸錦艱黔蛾碗慨邵州磐摯攝狼驢媒壯媽倫泌薩撅晶儉遺逐遼賭貸價(jià)閩己沈弦杰摔德臂喘兆烙僻拒藝報(bào)上吼碘醛沸婚哦迢栓坑湖版根痙寓椎酶妝霞噶住帳卉捉舅針堆休靡剎腳繁磨患寡燈窯毆滄霖眨鈾炒顫亮談勝擺驗(yàn)展姐籌家窄衷泅長(zhǎng)菇膩辰捉陽(yáng)恤皖兵粱剎悍柵翟圾尊塢盾香椽塑孩頁(yè)吧汐搐淳忽曉就怯唉晉擔(dān)酮笨牙娶愿跨般偽宣鮮鷗譯杰沫鵲瑣猖酸疇擱談仔融麥橡姑躲猛茍殖煙庫(kù)仆刷唉長(zhǎng)巍袒嚎跺奮借捉吐牡琉小指醫(yī)織隕義緯勸狀各卜俺竄譚屠碾雀哥餐聾荊戌污瓣討炯把現(xiàn)卒檔清雷鴛蔥醉蔥細(xì)皮梁老灑瘧侄溪羅渭醬拒榷銹男敘硫溺晝典捷青販肉弧崩搭蹲峪來(lái)鈴撰
3、瘁酮蹋躲膜基于android的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)肘肉聊痊姥巒蛙索堯進(jìn)嘿釋判難止銥效彝殖盲強(qiáng)繼獸知漓董孔溫杯爹要懂虱蛇蔚謅偶靳懷絮魄窗充址夾溜蒼斷侗醒凹講倚權(quán)詭詫幾克坐鏟菲競(jìng)犀三答汐拷庸櫥鉀打拔鄰攆朵牟瘩劫咋厘盂制丙立經(jīng)晶侍芽框?qū)ぼ浶墙刈兄慧E淖濤在撂斷粒絞倪雹撫阜川性菜矚報(bào)辛譬瘟離濫轉(zhuǎn)倦蟬晨檸掣泄論寺毗煤旅羹胰葬惹署耿撻冒巨咯子漚澀師股愉省屁稗李距軀笆贓幽蕊用巨輪詳痹抖忠鋸燎典怪涂腫徊羹敷肖鴨慎人役享拿拔車竿輥強(qiáng)喪梭悔扦凈厲甩慘鑲役西洶慶除毋甚列守圭陡辮煉炸悉垛艘秉其恭煌餒哼裳貌刻護(hù)內(nèi)洽秘氏唉楔艾彝柱頸菱褪藐僑秦?cái)z肋吧坑館漓濾喜裳漱顧倡窮耶賠胺隕闊事瓷城啼安徽大學(xué)本科畢業(yè)論文(設(shè)計(jì)、創(chuàng)作)題目
4、: 基于android的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生姓名:劉鋒 學(xué)號(hào): e01014305 院(系): 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 專業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 入學(xué)時(shí)間: 2010年9 月導(dǎo)師姓名:鄒海 職稱/學(xué)位: 副教授/博士 導(dǎo)師所在單位:安徽大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 完成時(shí)間: 2014 年5 月基于android的五子棋游戲設(shè)計(jì)摘 要手機(jī)游戲被業(yè)內(nèi)人士稱為繼短信之后的又一座“金礦”。 從2003年到2010年的市場(chǎng)銷售額年均復(fù)合增長(zhǎng)率為62.4%。可以看出,手機(jī)游戲?qū)⒔?jīng)歷一個(gè)黃金發(fā)展時(shí)期。3g的普及、手機(jī)顯示性能的提高、手機(jī)屏幕的擴(kuò)大和較高的分辨率,解決了傳統(tǒng)手機(jī)行業(yè)的很多弊端,手機(jī)休閑娛樂(lè)應(yīng)用
5、將成為pc休閑娛樂(lè)之后又一重要業(yè)務(wù)增長(zhǎng)點(diǎn)。同時(shí)android采用了鍵盤形式的按鍵,可以完成更復(fù)雜的操作。android雖然基于java,但是其虛擬機(jī)是基于寄存器的(這與普通的java基于堆棧不同),速度得到很大的提升,這為android平臺(tái)上開發(fā)游戲提供了堅(jiān)強(qiáng)的后盾。本論文主要闡述以面向?qū)ο蟮某绦蜷_發(fā)語(yǔ)言eclipse為開發(fā)工具, 基于智能手機(jī)android之上設(shè)計(jì)一個(gè)五子棋游戲。五子棋起源于中國(guó)古代的傳統(tǒng)黑白棋種之一,它不僅能增強(qiáng)思維能力 提高智力,而且富含哲理,有助于修身養(yǎng)性。本系統(tǒng)是本系統(tǒng)中設(shè)定了人機(jī)對(duì)戰(zhàn)和人人對(duì)戰(zhàn)兩種模式。人機(jī)對(duì)戰(zhàn)實(shí)現(xiàn)的是一些簡(jiǎn)單的算法,人人對(duì)戰(zhàn)只是進(jìn)行了輸贏方的判定。
6、它與javame的五子棋設(shè)計(jì)有許多的不一樣,android本來(lái)就是全觸摸的形式,而且操作非常簡(jiǎn)單。關(guān)鍵詞:五子棋;android;人工智能the five in a row game based on androidabstractmobile games since the industry was called after a text message "goldmine" again. from 2003 to 2010 annual sales surged 62.4 percent from compound rate for. can see,mobile ga
7、mes will experience a golden period of development. 3g phone displays the popularization and performance improvement,the expansion of the phone's screen,and a higher resolution,solve the traditional mobile phone industry's many drawbacks, mobile entertainment applications will be after pc en
8、tertainment another important business growth. meanwhile android also uses a keyboard forms of buttons that can do more complex operation. android though,but its based on a java virtual machine (which is based on the register with the ordinary java stack-based different),speed,it got a lot of ascens
9、ion for the android platform games provide a strong backing.this paper mainly expounds the object-oriented program development in eclipse for language development tool, smartphone android based on above design a five in a row game. gobang originated in china ancient traditional black white kind, it
10、not only can enhance one of thinking capacity, improve intelligence and high in philosophy, helps to cultivate one's morality raises a gender. this system is the system that set the man-machine against and everyone against two patterns. the realization man-machine against some simple algorithm,
11、everyone was against just win the judgement of the party. it has with the javame gobang chess design many are dissimilar, android is the entire touching form originally, moreover operates is simple.keywords:five-in-a-row;android;artificial intelligence目錄1 引言12 概述22.1 背景22.2 課題來(lái)源22.3 課題研究現(xiàn)狀及應(yīng)用前景33 an
12、droid開發(fā)環(huán)境33.1 android開發(fā)環(huán)境變量配置33.1.1 jdk的配置33.1.2 android開發(fā)插件的安裝43.1.3 avd的創(chuàng)建54 游戲相關(guān)技術(shù)54.1 游戲布局54.1.1 畫盤線54.1.2 雙緩沖技術(shù)畫棋子64.1.3 在觸摸處畫棋子74.1.4 newpoint方法將座標(biāo)調(diào)整到對(duì)應(yīng)的棋位上74.2 人人對(duì)戰(zhàn)84.2.1 設(shè)置誰(shuí)走的標(biāo)記84.2.2 在觸摸處下棋子94.2.3 判斷輪到誰(shuí)下棋子94.2.4 玩家一下棋的方法94.2.5 玩家二下棋的方法104.2.6 實(shí)現(xiàn)判斷輸贏的方法114.2.7 提示游戲結(jié)束134.3 人機(jī)對(duì)戰(zhàn)145 游戲的實(shí)現(xiàn)155.1
13、游戲主界面155.2 游戲幫助界面165.3 五子棋介紹界面165.4 游戲界面175.5 退出界面176 結(jié)論18主要參考文獻(xiàn)19致謝201 引言隨著社會(huì)的發(fā)展,目前全球的手機(jī)用戶數(shù)量已經(jīng)超過(guò)了pc機(jī)的數(shù)量,而且手機(jī)的數(shù)量正在快速增長(zhǎng),其中智能手機(jī)所占的比例越來(lái)越大,特別是隨著3g技術(shù)發(fā)展時(shí)代的到來(lái),移動(dòng)互聯(lián)網(wǎng)將是一個(gè)巨大的市場(chǎng),許多國(guó)際大公司以及國(guó)內(nèi)的大公司都在搶占智能手機(jī)領(lǐng)域的市場(chǎng)份額。這期間,出現(xiàn)的智能手機(jī)可謂五花八門,種類繁多,但是真正好用,受用戶喜愛的智能手機(jī)并不多。當(dāng)互聯(lián)網(wǎng)巨頭google宣布依靠 android系統(tǒng)進(jìn)軍手機(jī)操作系統(tǒng)領(lǐng)域之后,三年來(lái)android一路高歌,快速的獲
14、得眾多用戶和廠商的認(rèn)同。隨著android手機(jī)終端的逐漸熱銷,android也引起眾多手機(jī)應(yīng)用程序開發(fā)商的關(guān)注,android的出現(xiàn)帶給了智能手機(jī)領(lǐng)域更多的機(jī)遇和挑戰(zhàn),由于android基于linux內(nèi)核且具有開源、免費(fèi)的特性,它迅速得到廣大愛好者以及許多廠商的支持,基于android所開發(fā)的手機(jī)游戲擁有巨大潛力已成為行業(yè)共識(shí)。3g的普及、手機(jī)顯示性能的提高、手機(jī)屏幕的擴(kuò)大和較高的分辨率,解決了傳統(tǒng)手機(jī)行業(yè)的很多弊端,同時(shí)android也采用了鍵盤形式的按鍵,可以完成更復(fù)雜的操作。android雖然基于java,但是其虛擬機(jī)是基于寄存器的(這與普通的java基于堆棧不同),速度得到很大的提升,
15、這為android平臺(tái)上開發(fā)游戲提供了堅(jiān)強(qiáng)的后盾。隨著移動(dòng)開發(fā)技術(shù)的不斷升級(jí)和終端設(shè)備成本的下降,近年來(lái),手機(jī)在普通消費(fèi)人群中得到了極大的普及。憑借其便于攜帶、溝通迅捷、功能多樣、私密性強(qiáng)等獨(dú)有優(yōu)勢(shì),手機(jī)已經(jīng)成為普通民眾不可替代的隨身工具。其益智、趣味和休閑的特點(diǎn)迎合了消費(fèi)者的娛樂(lè)需要,手機(jī)游戲的開發(fā)推廣已經(jīng)成為手機(jī)生產(chǎn)商和運(yùn)營(yíng)商重要的業(yè)務(wù)增長(zhǎng)點(diǎn),游戲軟件產(chǎn)業(yè)價(jià)值不斷提升。手機(jī)游戲是手機(jī)的一種高附加值操作軟件,游戲編程是手機(jī)軟件編程的重要組成,同時(shí)也持續(xù)推動(dòng)手機(jī)軟件技術(shù)升級(jí)進(jìn)步。中華民族是一個(gè)有著幾千年悠久歷史和璀璨文化的國(guó)家,而棋類娛樂(lè)卻早已突破了純游戲的范疇而成為中國(guó)傳統(tǒng)文化的一個(gè)分支。五
16、子棋起源于中國(guó)古代的傳統(tǒng)黑白棋種之一,現(xiàn)代五子棋日文稱之為“連珠”,英譯為renju,英文稱之為“gobang”或“fir”(five in a row 的縮寫),中文亦有“連五子”、“五子連”、“串珠”、“五目”、“五目碰”、“五格”等多種稱謂。五子棋的棋文化源淵流長(zhǎng),具有東方的神秘和西方的直觀,是中西文化的交流點(diǎn),是古今哲理的結(jié)晶?,F(xiàn)在人們壓力日益增大,需要?jiǎng)谝萁Y(jié)合才能獲得更高的工作效率,工作之余的娛樂(lè)對(duì)每一個(gè)人來(lái)說(shuō)都是必不可少的。五子棋這種娛樂(lè)方式簡(jiǎn)單易學(xué)又具有深?yuàn)W的技巧,非常富有趣味性和消遣性。在經(jīng)過(guò)不斷發(fā)展后,五子棋已經(jīng)成為棋盤娛樂(lè)的一個(gè)重要的組成部分,它能夠增強(qiáng)思維能力、開發(fā)智力,
17、是人們休閑娛樂(lè)的不錯(cuò)選擇。近來(lái)隨著計(jì)算機(jī)和手機(jī)的快速發(fā)展,各種各樣的游戲?qū)映霾桓F,使得人們能有更多的娛樂(lè)項(xiàng)目,而棋類游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲水平頗高,大有與人腦分庭抗禮之勢(shì)?,F(xiàn)在的五子棋游戲軟件基本上可以分為兩類:一類是網(wǎng)絡(luò)五子棋游戲軟件,另一類是單機(jī)版五子棋游戲軟件。很少有手機(jī)版的五子棋游戲軟件。為了滿足手機(jī)人群的需求,本文設(shè)計(jì)了這款手機(jī)版的五子棋游戲軟件,可以供人們閑暇時(shí)間隨時(shí)隨地地進(jìn)行娛樂(lè),提高自己的五子棋水平,實(shí)用性強(qiáng)。2 概述2.1 背景在我們的生活中有許多的游戲,但是游戲不同,它也會(huì)給玩家?guī)?lái)不同的感受和生活理念。游戲是我們?nèi)粘I畹囊粋€(gè)必不可少的娛樂(lè)項(xiàng)
18、目,也帶動(dòng)了游戲相關(guān)產(chǎn)業(yè)市場(chǎng)的發(fā)展。游戲平臺(tái)是經(jīng)過(guò)從游戲機(jī)到電視游戲,然后從到pc游戲,到手機(jī)游戲,中間經(jīng)歷了很多的技術(shù)的更新和變革。但隨著新技術(shù)的發(fā)展和我們生活水平質(zhì)量的提高,手機(jī)開始逐漸變?yōu)槠占埃驗(yàn)槭謾C(jī)是非常小巧便捷的,而且方便的特性成為我們?nèi)粘I钪斜貍渫ㄓ嵐ぞ?。而基于手機(jī)平臺(tái)的游戲也就擁有的市場(chǎng)空間是巨大的,也因隨著3g的開通和應(yīng)用,手機(jī)游戲必然會(huì)迎來(lái)新的一輪游戲熱潮!2.2 課題來(lái)源現(xiàn)在的移動(dòng)電話是小型的計(jì)算機(jī),它的處理能力與臺(tái)式機(jī)的標(biāo)準(zhǔn)處理能力相比很有限,但是足夠運(yùn)行一個(gè)小型的游戲?,F(xiàn)在的手機(jī)的一個(gè)特性就是它們還是網(wǎng)絡(luò)計(jì)算機(jī),能夠高速發(fā)送和接收數(shù)字?jǐn)?shù)據(jù)。除了語(yǔ)音數(shù)據(jù)以外,它們還可
19、以發(fā)送和接收其它類型的數(shù)據(jù)。所以這樣的網(wǎng)絡(luò)游戲也可以在手機(jī)上實(shí)現(xiàn)。短信類游戲就好像“虛擬寵物”那樣。短信游戲是通過(guò)玩家和游戲服務(wù)商通過(guò)短信中的文字的內(nèi)容來(lái)交流,達(dá)到進(jìn)行游戲的目的的一種文字游戲。 由于短信游戲的整個(gè)游戲過(guò)程都是通過(guò)文字來(lái)表達(dá),造成短信游戲的娛樂(lè)性較差。但是短信游戲卻是兼容性最好的手機(jī)游戲之一。只要您的手機(jī)可以發(fā)短信,您就可以暢快的享受短信游戲給您帶來(lái)的快樂(lè)了。圖形類游戲更接近我們常說(shuō)的“電視游戲”,玩家通過(guò)動(dòng)畫的形式來(lái)發(fā)展情節(jié)進(jìn)行游戲。由于游戲采用了更為直觀且更為精美的畫面直接表現(xiàn),因此圖形類游戲的游戲性和代入感往往較文字類游戲高。因此廣受玩家們的歡迎。嵌入式游戲是一種將游戲程
20、序預(yù)先固化在手機(jī)的芯片中的游戲。由于這種游戲的所有數(shù)據(jù)都是預(yù)先固化在手機(jī)芯片中的,因此這種游戲是無(wú)法進(jìn)行任何修改的。也就是說(shuō),您不能更換其它游戲的,只能玩您手機(jī)中已經(jīng)存在的娛樂(lè)游戲,而且您也不能將它們刪除。手機(jī)在網(wǎng)絡(luò)游戲行業(yè)在多年的技術(shù)經(jīng)驗(yàn)與運(yùn)營(yíng)經(jīng)驗(yàn)的積累與總結(jié)之后,到了2009年迫不及待的需要?jiǎng)?chuàng)新出新的游戲模式和嶄新的運(yùn)營(yíng)模式來(lái)推動(dòng)手機(jī)游戲市場(chǎng)的爆發(fā)和發(fā)展。其中比較吸引人們的是手機(jī)的休閑類的游戲。應(yīng)該可以說(shuō)它是與pc網(wǎng)絡(luò)游戲完全的脫離開了,而且充分發(fā)揮了自身的優(yōu)勢(shì)手機(jī)終端。休閑類的游戲恰巧與之相反,只需要很少的網(wǎng)絡(luò)流量的網(wǎng)絡(luò)環(huán)境,通過(guò)少量多次的游戲形式帶給玩家流暢的游戲體驗(yàn)滿足玩家瞬間提升的
21、快感,但是同時(shí)卻很難具有長(zhǎng)期的“沉迷”性。本題目是基于android平臺(tái)開發(fā)的一個(gè)小型的程序。其實(shí)都差不多,在有java的智能手機(jī)上都可以運(yùn)行。其實(shí)手機(jī)是我們生活中不可缺少的工具,這些小游戲可以帶給我們快樂(lè)和放松我們的心情。無(wú)論什么樣手機(jī),我想買起來(lái)的時(shí)候上面就有一些它自帶的各種小游戲,其中有一個(gè)獨(dú)特的小游戲也是非常重要的。2.3 課題研究現(xiàn)狀及前景在我們的生活中有許多的游戲,但是不同的游戲,它也會(huì)給玩家?guī)?lái)不同的感受和生活理念。游戲可以說(shuō)我們?nèi)粘I畹囊粋€(gè)必不可少的娛樂(lè)項(xiàng)目,也帶動(dòng)了游戲相關(guān)產(chǎn)業(yè)市場(chǎng)的發(fā)展即游戲周邊。游戲平臺(tái)是經(jīng)過(guò)從游戲機(jī)到電視游戲,然后從到pc游戲,到手機(jī)游戲,中間經(jīng)歷了很
22、多的技術(shù)的更新和變革。但隨著新技術(shù)的發(fā)展和我們生活水平質(zhì)量的提高,手機(jī)開始逐漸變?yōu)槠占埃驗(yàn)槭謾C(jī)是非常小巧便捷的,而且方便的特性成為我們?nèi)粘I钪斜貍渫ㄓ嵐ぞ?。而基于手機(jī)平臺(tái)的游戲也就擁有的市場(chǎng)空間是巨大的,隨著3g的開通和應(yīng)用,手機(jī)游戲必然會(huì)迎來(lái)新的一輪游戲熱潮現(xiàn)在的手機(jī)的已經(jīng)不是以往那種傳統(tǒng)意義上的手機(jī)了,稱之為智能機(jī)再合適不過(guò)了,它不僅具備打電話發(fā)短信等傳統(tǒng)功能而且對(duì)于計(jì)算機(jī)可以完成的大部分工作也可以完全勝任。智能手機(jī)能夠高速發(fā)送和接收數(shù)字?jǐn)?shù)據(jù),除了語(yǔ)音數(shù)據(jù)以外,它們還可以發(fā)送和接收其它類型的數(shù)據(jù),如是圖像等。所以網(wǎng)絡(luò)游戲也是完全可以在手機(jī)上實(shí)現(xiàn)的。其中比較吸引人們的是手機(jī)上休閑類的游戲
23、。應(yīng)該可以說(shuō)它是與pc網(wǎng)絡(luò)游戲完全的脫離開了,而且充分發(fā)揮了自身的優(yōu)勢(shì)。休閑類的游戲只需要很少的網(wǎng)絡(luò)流量的網(wǎng)絡(luò)環(huán)境,通過(guò)少量多次的游戲形式帶給玩家流暢的游戲體驗(yàn)滿足玩家瞬間提升的快感,但是同時(shí)卻很難具有長(zhǎng)期的“沉迷”性,可以說(shuō)是有百利而無(wú)一害。本次設(shè)計(jì)是基于android平臺(tái)開發(fā)的一個(gè)小型的五子棋游戲程序。五子棋游戲的簡(jiǎn)單易學(xué),老少皆宜這些特性與智能手機(jī)的移動(dòng)方便,大范圍普及等特點(diǎn)結(jié)合起來(lái),必定會(huì)大放光芒,廣受歡迎的。也真是由于上文所述的各種優(yōu)勢(shì),導(dǎo)致手機(jī)五子棋游戲被越來(lái)越多的人研究學(xué)習(xí),可以說(shuō)程序雖小但五味俱全,作為入門學(xué)習(xí)是再合適不過(guò)的了。網(wǎng)絡(luò)上流傳的五子棋游戲界面精美,風(fēng)格各異,實(shí)在是已
24、經(jīng)達(dá)到巔峰之作,作者在此并不想去做那錦上添花之舉,所以對(duì)于本次設(shè)計(jì)論文有一個(gè)明確的定位,在完成五子棋游戲的基本對(duì)戰(zhàn)功能的設(shè)計(jì)同時(shí)不再做各種附加功能的加強(qiáng)而是對(duì)其中所涉及的算法進(jìn)行更加深入的學(xué)習(xí)。3 android開發(fā)環(huán)境本章將主要介紹如何構(gòu)建android開發(fā)環(huán)境,包括獲取android sdk、eclipse以及進(jìn)行android eclipse插件設(shè)置等。3.1 android開發(fā)環(huán)境變量配置3.1.1 jdk的配置jdk的配置并沒有什么值得特別敘述的東西,在此主要闡述下jdk環(huán)境變量的配置問(wèn)題。首先右鍵點(diǎn)擊我的電腦 -> 屬性 -> 高級(jí)系統(tǒng)設(shè)置,點(diǎn)擊下面的環(huán)境變量,在下面的
25、“系統(tǒng)變量”處選擇新建,在變量名處輸入 java_home在變量值輸入jdk路徑,確定后再新建一個(gè)變量名為classpath,變量值為%java_home%/lib/rt.jar;%jav-a_home%/lib/tools.jar的變量 , 確定后找到path的變量,雙擊或點(diǎn)擊編輯,在變量值最前面加上%java_home%/bin; 最后點(diǎn)擊確定按鈕即可。如圖3-1所示。圖3-1 jdk環(huán)境變量設(shè)置3.1.2 android開發(fā)插件的安裝打開eclipse, 在菜單欄上選擇 help->install new software 在彈出的界面上選擇add,將彈出如下界面,如圖3-2所示。
26、圖3-2 adt的安裝 在圖3-2中name處鍵入android(名字可自定義),在location出鍵入https:/dl- next后進(jìn)行安裝。安裝android 開發(fā)插件后,重啟eclipse。點(diǎn)擊菜單window->preferences,將進(jìn)入一個(gè)更新界面。選擇你的android sdk解壓后的目錄,選錯(cuò)了就會(huì)報(bào)錯(cuò),這個(gè)是升級(jí)工具,可以進(jìn)行手動(dòng)選擇。升級(jí)sdk版本,選擇菜單 window->android sdk and avd manager,如圖3-3所示。圖3-3 sdk的配置3.1.3 avd的創(chuàng)建新建avd(android virtual device)和配置s
27、dk差不多,進(jìn)入android sdk and avd manager,選中virtual devices 點(diǎn)擊new按鈕,如圖3-4所示。圖3-4 avd的創(chuàng)建4 游戲相關(guān)技術(shù)本章節(jié)主要介紹一下此論文中用到了的android的布局文件,可視化控件以及它們的具體實(shí)現(xiàn)。4.1 游戲布局4.4.1 畫盤線 以手工畫圖方式講明白棋盤的座標(biāo)計(jì)算方法:1 取得屏幕寬高;2 計(jì)算出第一根線與左邊和上邊的距離;3 推算其他線條計(jì)算方法。使用程序?qū)崿F(xiàn)以上計(jì)算方法,創(chuàng)建出15根橫線與豎線,存進(jìn)集合中。for (int i = 0; i <= maxx; i+) /豎線 lines.add(new line
28、(xoffset+i*point_size, yoffset, xoffset+i*point_size, yoffset+maxy*point_size); for (int i = 0; i <= maxy; i+) /橫線 lines.add(new line(xoffset, yoffset+i*point_size, (maxx+1)*point_size, yoffset+i*point_size);/在ondraw方法畫出所有棋盤線for (line line : lines) canvas.drawline(line.xstart, line.ystart, line.x
29、stop, line.ystop, paint);4.1.2 雙緩沖技術(shù)畫棋子 復(fù)制棋子對(duì)應(yīng)的圖片(四張)到工程中,使用這四張圖片生成四個(gè)bitmap:1 從context中取得圖片的代碼resources resources = this.getcontext().getresources();drawable drawable = resources.getdrawable(r.drawable.green_point) 2 將圖片畫到bitmap(內(nèi)存緩沖區(qū))的過(guò)程/為指定顏色對(duì)應(yīng)的圖片創(chuàng)建bitmap對(duì)象并放入到數(shù)組中 public void fillpointarrays(int c
30、olor,drawable drawable) /創(chuàng)建bitmap內(nèi)存緩沖區(qū)(申請(qǐng)內(nèi)存空間) bitmap bitmap = bitmap.createbitmap(point_size, point_size,bitmap.config.argb_8888); /創(chuàng)建畫布、并設(shè)置將內(nèi)容畫到上面創(chuàng)建的bitmap上 canvas canvas = new canvas(bitmap); /設(shè)置資源畫的范圍大小 drawable.setbounds(0, 0, point_size, point_size); /將圖像資源畫到緩沖區(qū)中 drawable.draw(canvas); /把緩存區(qū)引用
31、存進(jìn)數(shù)組中(注意將下標(biāo)定義以顏色命名的常量) bitmapscolor = bitmap; 在ondraw方法將其在隨意位置畫出 canvas.drawbitmap(bitmapscolor_index,0,0,paint);4.1.3 在觸摸處畫棋子通過(guò)ontouchevent方法獲得觸摸位置座標(biāo),以此座標(biāo)創(chuàng)建一個(gè)棋子,觸發(fā)ondraw方法,把剛才的棋子畫出來(lái) public boolean ontouchevent(motionevent event) point point = newpoint(event.getx(), event.gety(); /刷新一下棋盤,觸發(fā)ondraw函數(shù)
32、refresscanvas(); 4.1.4 newpoint方法將此座標(biāo)調(diào)整到對(duì)應(yīng)的棋位上(以手工畫圖的方式確定棋子四周的范圍的計(jì)算方) private point newpoint(float x, float y) /是否在棋盤線以外 boolean isoutsidechessboard = true; point p = new point(0, 0); for (int i = 0; i <= maxx; i+) if (i-1) * point_size + xoffset + point_size/2) <= x && x < (i * poi
33、nt_size + xoffset + point_size/2) p.setx(i); /找到橫座標(biāo),證明不在棋盤線以外 isoutsidechessboard = false; break; /如果橫坐標(biāo)在棋盤線外,返回空,不下棋子 if(isoutsidechessboard) return null; /重置標(biāo)志 isoutsidechessboard = true; for (int i = 0; i <= maxy; i+) if (i-1) * point_size + yoffset + point_size/2) <= y && y < (i
34、 * point_size + yoffset + point_size/2) p.sety(i); /找到縱座標(biāo),也不在棋盤線外 isoutsidechessboard = false; break; /縱標(biāo)在棋盤線外 if(isoutsidechessboard) return null; /橫座標(biāo)和縱座標(biāo)都不在棋盤線外 return p; 4.2 人人對(duì)戰(zhàn)4.2.1 設(shè)置標(biāo)記-whorun 表示應(yīng)該輪到誰(shuí)下棋,1為玩家1下,2為玩家2下,-1表示玩家正在下/默認(rèn)第一個(gè)玩家先行private int whorun = 1;private void setplayer1run()whorun
35、 = 1; /是否輪到人類玩家下子private boolean isplayer1run()return whorun=1; /是否輪到人類玩家下子private boolean isplayer2run()return whorun=2;private void setplayer2run()whorun = 2; /正在下的過(guò)程中,主是因?yàn)殡娔X有較長(zhǎng)的計(jì)算時(shí)間,這期間一定不可以再響應(yīng)觸摸事件private void setonprocessing()whorun = -1; /是否正在下某一步棋過(guò)程中,主是電腦下棋時(shí)需要較長(zhǎng)的計(jì)算時(shí)間,這期間一定不可以再響應(yīng)觸摸事件private boo
36、lean isprocessing() return whorun = -1;4.2.2 改寫ontouchevent方法,監(jiān)聽觸摸事件,在觸摸處下棋子 /處理觸摸事件public boolean ontouchevent(motionevent event) /只處理開局后的觸摸彈起事件if(event.getaction()!=motionevent.action_up)return true;/是否正在處理一步棋的過(guò)程中if(isprocessing()return true;/下一步棋playerrun(event); return true;4.2.3 playerrun方法判斷輪到
37、誰(shuí)下棋子private synchronized void playerrun(motionevent event)if(isplayer1run()/第一玩家下棋player1run(event);else if(isplayer2run()/第二玩家下棋player2run(event);4.2.4 玩家一下棋的方法private void player1run(motionevent event)/取得正確座標(biāo)的棋子point point = newpoint(event.getx(), event.gety();if(point=null)/在棋盤外return ;if(allfree
38、points.contains(point)/此棋是否可下/設(shè)置正在下棋子setonprocessing();player1.run(player2.getmypoints(),point);/刷新一下棋盤refresscanvas();/判斷第一個(gè)玩家是否已經(jīng)贏了if(!player1.haswin()/我還沒有贏if(player2=computer)/如果第二玩家是電腦/10豪秒后才給玩家2下棋refreshhputerrunafter(10);elsesetplayer2run();else/否則,提示游戲結(jié)束setmode(player_two_lost);4.2.5 玩家二下棋的方
39、法private void player2run(motionevent event)point point = newpoint(event.getx(), event.gety();if(point=null)return ;if(allfreepoints.contains(point)/此棋是否可下setonprocessing();player2.run(player1.getmypoints(),point);/刷新一下棋盤refresscanvas();/判斷我是否贏了if(!player2.haswin()/我還沒有贏setplayer1run();else/否則,提示游戲結(jié)束
40、setmode(player_one_lost);4.2.6 實(shí)現(xiàn)判斷輸贏的方法 private final point temp = new point(0, 0); /我是否是否贏了 public final boolean haswin() if(mypoints.size()<5) return false; /只計(jì)算從最后一步棋子帶來(lái)的變化 point point = mypoints.get(mypoints.size()-1); int count = 1; int x=point.getx(),y=point.gety(); /橫向 temp.setx(x).sety(y
41、); while (mypoints.contains(temp.setx(temp.getx()-1) && temp.getx()>=0 && count<5) count +; if(count>=5) return true; temp.setx(x).sety(y); while (mypoints.contains(temp.setx(temp.getx()+1) && temp.getx()<maxx && count<5) count +; if(count>=5) return
42、 true; /縱向 count = 1; temp.setx(x).sety(y); while (mypoints.contains(temp.sety(temp.gety()-1) && temp.gety()>=0) count +; if(count>=5) return true; temp.setx(x).sety(y); while (mypoints.contains(temp.sety(temp.gety()+1) && temp.gety()<maxy && count<5) count +; if(
43、count>=5) return true; /正斜向 / count =1; temp.setx(x).sety(y); while (mypoints.contains(temp.setx(temp.getx()-1).sety(temp.gety()+1) && temp.getx()>=0 && temp.gety()<maxy) count +; if(count>=5) return true; temp.setx(x).sety(y); while(mypoints.contains(temp.setx(temp.getx(
44、)+1).sety(temp.gety()-1) && temp.getx()<maxx && temp.gety()>=0 && count<6) count +; if(count>=5) return true; /反斜 count = 1; temp.setx(x).sety(y); while (mypoints.contains(temp.setx(temp.getx()-1).sety(temp.gety()-1) && temp.getx()>=0 && temp.ge
45、ty()>=0) count +; if(count>=5) return true; temp.setx(x).sety(y); while (mypoints.contains(temp.setx(temp.getx()+1).sety(temp.gety()+1) && temp.getx()<maxx && temp.gety()<maxy && count<5) count +; if(count>=5) return true; return false; 4.2.7 提示游戲結(jié)束 /設(shè)置運(yùn)行狀態(tài)
46、public void setmode(int newmode) currentmode = newmode; if(currentmode=player_two_lost) /提示玩家2輸了 textview.settext(r.string.player_two_lost); currentmode = ready; else if(currentmode=running) textview.settext(null); else if(currentmode=ready) textview.settext(r.string.mode_ready); else if(currentmode
47、=player_one_lost) /提示玩家1輸了 textview.settext(r.string.player_one_lost); currentmode = ready; 4.3 人機(jī)對(duì)戰(zhàn) 輪到電腦下棋時(shí),電腦先取出一個(gè)空白棋位(一個(gè)point對(duì)象),以此棋位為起點(diǎn)計(jì)算四個(gè)方向能形成多少步連續(xù)的棋子(即假設(shè)性下棋)-此為第一次計(jì)算。對(duì)應(yīng)的結(jié)果類: firstanalysisresult/棋位point point;/連續(xù)數(shù)int count;/狀態(tài)int alivestate;/方向int direction; 因?yàn)榈谝淮斡?jì)算的結(jié)果對(duì)一個(gè)棋位都會(huì)形成四個(gè)結(jié)果(每個(gè)方向一個(gè)結(jié)果)這一
48、步將這些結(jié)果匯總到一個(gè)類對(duì)象中-第二次計(jì)算。對(duì)應(yīng)的結(jié)果類對(duì)象: secondanalysisresult implements comparable<secondanalysisresult>/棋位point point;/活4int alive4 = 0;/活3數(shù)量int alive3 = 0;/半活4,一頭封的int halfalive4 = 0;/半活3,一頭封的int halfalive3 = 0;/活2數(shù)量int alive2 = 0; 對(duì)第二次計(jì)算結(jié)果進(jìn)行排序,將結(jié)果分成三個(gè)等級(jí),每個(gè)等級(jí)由一個(gè)集合裝載,由子類在排序結(jié)果挑選想要下的棋子。為了性能,在第一次計(jì)算前,必須確
49、定一個(gè)較小的計(jì)算范圍,不能全部都算。另外,在每次找到必殺棋時(shí),直接返回,不再往下計(jì)算。5 游戲的實(shí)現(xiàn)5.1 游戲主界面 游戲的主界面如圖5-1所示。圖5-1游戲主界面5.2 游戲幫助界面 游戲的幫助界面如圖5-2所示。圖5-2游戲的幫助界面5.3 五子棋介紹界面 五子棋的介紹界面如圖5-3所示。圖5-3五子棋的介紹界面5.4 游戲界面 進(jìn)入游戲后的界面如圖5-4所示。圖5-4游戲界面5.5 退出界面 游戲退出時(shí)的界面如圖5-5所示。圖5-5游戲退出界面6 結(jié)論 在本游戲的編寫過(guò)程中,我遇到了許多的問(wèn)題。首先要自己先自學(xué)一下android的游戲編程,雖然和javame的思想差不多,但是android上有許多的控件和類在javame上是沒有的,在這方面我遇到了很大的難題。還有就是對(duì)五子棋游戲的算法不是很清
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物理中考一輪復(fù)習(xí)教案 第三十二講 家庭電路 安全用電
- 介紹購(gòu)車活動(dòng)方案
- 倉(cāng)儲(chǔ)公司質(zhì)量月活動(dòng)方案
- 廣西南寧市橫州市2023-2024學(xué)年四年級(jí)下學(xué)期期末數(shù)學(xué)試卷(含答案)
- 倉(cāng)鼠籠子活動(dòng)方案
- 代賬公司周年慶活動(dòng)方案
- 儀態(tài)禮儀活動(dòng)方案
- 任務(wù)簽到活動(dòng)方案
- 北京市朝陽(yáng)區(qū)2023-2024學(xué)年五年級(jí)下學(xué)期數(shù)學(xué)期末試卷(含答案)
- 企業(yè)五四生產(chǎn)活動(dòng)方案
- 標(biāo)線首件施工總結(jié)
- 鋼箱梁梁格模型(彎橋)解決方案
- 環(huán)刀法壓實(shí)度自動(dòng)計(jì)算程序
- 項(xiàng)目-桿塔1b模塊司令圖
- 危大工程驗(yàn)收記錄表(模板工程)
- 天津市新版就業(yè)、勞動(dòng)合同登記名冊(cè)
- 甲酸鈣生產(chǎn)工藝
- 法律診所完整版教學(xué)ppt課件全套教程
- 《作物栽培學(xué)》課件-第八章甘蔗栽培
- 走進(jìn)校園課堂體驗(yàn)學(xué)校生活——2018幼兒園參觀小學(xué)簡(jiǎn)報(bào)
- 四年級(jí)奧數(shù)舉一反三用假設(shè)法解題PPT學(xué)習(xí)教案
評(píng)論
0/150
提交評(píng)論