版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 人工智能是一門正在迅速發(fā)展的新興的,綜合性很強(qiáng)的交叉科學(xué)。它與生物工程、空間技術(shù)一起被并列為二十一世界三大尖端技術(shù)。它的中心任務(wù)是研究如何使計(jì)算機(jī)去做那些過(guò)去只能靠人的智力才能做的工作。目前各發(fā)達(dá)國(guó)家都把人工智能作為重點(diǎn)項(xiàng)目,列入本國(guó)的高科技發(fā)展計(jì)劃當(dāng)中,投入巨大的人力和物力。</p><p> 計(jì)
2、算機(jī)人機(jī)對(duì)弈也是其中之一。作為人智能研究的一個(gè)重要分支,計(jì)算機(jī)博弈是檢驗(yàn)人工水平的一個(gè)重要方面。它的研究為人工智能帶來(lái)了很多重要的方法和理論,產(chǎn)生了廣泛的社會(huì)影響和學(xué)術(shù)影響。</p><p> 五子棋人機(jī)對(duì)弈是計(jì)算機(jī)博弈中的一種。研究其計(jì)算機(jī)算法,可以讓我們看到人工智能的稚形,也有助于我們?nèi)四X的開發(fā)。五子棋是我國(guó)發(fā)明的,研究它可以讓更多的外國(guó)人了解五子棋,這有助于我國(guó)優(yōu)秀文化的推廣。</p>&l
3、t;p> 關(guān)鍵詞:人工智能,計(jì)算人機(jī)對(duì)弈,五子棋,算法</p><p><b> Abstract</b></p><p> Artificial intelligence is a rapidly developing new, integrated a strong Frontier Science. It is with bio-engineerin
4、g, space technology has been listed as 21 in the world along with the three cutting-edge technology. Its central task is to study how to make the computer do that in the past to rely on human intelligence to do. AI is cu
5、rrently regarded as the focus of the developed countries included in this car's high-tech development projects invested tremendous human and material resources. </p><p> Key words: Artificial Intelli
6、gence, Man-machine Cchess Computer, </p><p> Man-machine Chess, Algorithm</p><p><b> 目 錄</b></p><p><b> 摘 要Ⅰ</b></p><p> AbstractⅡ</p&
7、gt;<p> 目錄 .......................................................................................................................... Ⅲ</p><p> 緒論....................................................
8、........................................................... 1</p><p> 需求分析....................................................................................................... 2</p><p> (一)業(yè)
9、務(wù)需求 ................................................................................................ 2</p><p> (二)性能需求 .......................................................................................
10、......... 2</p><p> (三)系統(tǒng)平臺(tái)需求 ........................................................................................ 2</p><p> 五子棋相關(guān)基礎(chǔ)........................................................
11、................................. 3</p><p> 3.1 五子棋解釋 ............................................................................................ 3</p><p> 3.2 五子棋的基本規(guī)則 ......................
12、.......................................................... 3</p><p> 3.3 五子棋的常用術(shù)語(yǔ) ................................................................................ 4</p><p> 開發(fā)工具、環(huán)境及其技術(shù) .......
13、.................................................................... 6</p><p> 4.1 flash 簡(jiǎn)介..................................................................................................6</p><
14、p> 程序設(shè)計(jì)思路與實(shí)現(xiàn) ...................................................................................10</p><p> 5.1 游戲設(shè)計(jì)思路.....................................................................................
15、....10</p><p> 5.2 游戲設(shè)計(jì)步驟........................................................................................ 11</p><p> 結(jié)論 ................................................................
16、........................................................... 32</p><p> 參考文獻(xiàn) ....................................................................................................................</p>&l
17、t;p> 致謝 ............................................................................................................................</p><p> 附錄 ..........................................................
18、..................................................................</p><p><b> 第一章:緒論</b></p><p><b> 1.1 前 言</b></p><p> 電腦已經(jīng)深入到日常工作和生活的方方面面,比如文字處理、信息管理、輔
19、助設(shè)計(jì)、圖形圖像處理、教育培訓(xùn)以及游戲娛樂(lè)等。Windows系統(tǒng)的推出使電腦從高雅的學(xué)術(shù)殿堂走入了尋常百姓家,各行各業(yè)的人們無(wú)須經(jīng)過(guò)特別的訓(xùn)練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了花樣繁多的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開發(fā)適合自己特殊需求的軟件。通過(guò)系統(tǒng)的學(xué)習(xí),人們就可以使用它開發(fā)出功能齊全,滿足特殊需求的應(yīng)用程序。這次畢業(yè)設(shè)計(jì),將學(xué)過(guò)的flash中的各種技術(shù)綜合起來(lái),用fl
20、ash8開發(fā)工具編寫一個(gè)小游戲,既對(duì)自己學(xué)過(guò)的技能進(jìn)行一次檢驗(yàn),也能系統(tǒng)地將學(xué)過(guò)的知識(shí)復(fù)習(xí)鞏固。</p><p> 隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)技術(shù)的普及范圍越來(lái)越廣,網(wǎng)絡(luò)能夠提供的服務(wù)多樣、便捷,已經(jīng)成為人們生產(chǎn)生活中不可缺少的重要組成部分。如今網(wǎng)絡(luò)休閑游戲發(fā)展迅速,它憑借健康、方便、互動(dòng)性強(qiáng)、益智等諸多優(yōu)點(diǎn),成為大部分現(xiàn)代人休閑娛樂(lè)的首選。</p><p><b> 第
21、二章 需求分析</b></p><p> 五子連珠,在民間俗稱“五子棋”,是一種流傳很廣的益智棋類游戲,游戲規(guī)則非常簡(jiǎn)單,適合各個(gè)年齡段的朋友玩,相信大家以前也一定玩過(guò)此游戲。</p><p><b> 2.1業(yè)務(wù)需求</b></p><p> 此系統(tǒng)為智力游戲,適合于各類游戲愛(ài)好者。由于其經(jīng)典性及其游戲的簡(jiǎn)單性,各類人士都可
22、以也都愛(ài)玩。人們?cè)谂c電腦對(duì)戰(zhàn)享受娛樂(lè)的同時(shí),也會(huì)體會(huì)到自己的智力也會(huì)有所提升。</p><p><b> 功能要求</b></p><p> 人機(jī)對(duì)弈模式:選擇該模式可以實(shí)現(xiàn)人與電腦之間的對(duì)弈,電腦會(huì)智能的選擇該在哪處下子,并會(huì)在每次下棋結(jié)束后判斷是否有哪方已經(jīng)獲勝,如果獲勝則結(jié)束本局游戲,并提示玩家游戲結(jié)束。</p><p> 人人對(duì)弈
23、模式:選擇該模式可以實(shí)現(xiàn)人與人之間的對(duì)弈,系統(tǒng)會(huì)提示哪方先下,然后玩家之間交替的下棋,同樣系統(tǒng)會(huì)在下完每次棋后判斷是否有哪方已經(jīng)獲勝,如果獲勝則結(jié)束本局游戲,并提示玩家游戲結(jié)束。</p><p> 悔棋功能:這個(gè)功能也是根據(jù)游戲的實(shí)際需求而存在的,在現(xiàn)實(shí)生活中難免有失誤下錯(cuò)了棋,那么就需要悔棋。此功能提供了悔棋功能,使得下棋的靈活性有所提高。玩家若想悔棋,則只需選擇悔棋按鈕便可以重新下過(guò)剛才的棋。</p&
24、gt;<p><b> 2.2 性能需求</b></p><p> 該款五子棋游戲功能雖然簡(jiǎn)單,但最主要的還是實(shí)現(xiàn)了人人對(duì)弈模式和人機(jī)對(duì)弈兩種模式,所以從這個(gè)角度來(lái)說(shuō),該款游戲需要能很好的在兩種模式間良好的轉(zhuǎn)換。雖然系統(tǒng)不大,但要在滿足玩家的基本要求的情況下,電腦有一定的智能,能給于新手一定的幫助。</p><p> 2.3 系統(tǒng)平臺(tái)需求</
25、p><p> 編程語(yǔ)言:ActionScript</p><p> 操作系統(tǒng):Windows xp系列</p><p> 開發(fā)工具:Flash 8</p><p> 第三章 五子棋的相關(guān)基礎(chǔ)</p><p><b> 3.1五子棋解釋</b></p><p> 引用
26、《辭?!分兴?,五子棋是“棋類游戲,棋具與圍棋相同,兩人對(duì)局,輪流下子,先將五子連成一行者為勝?!薄N遄悠宓拿Q:日文亦有“連五子、五子連、串珠、五目、五目碰、五格、五石、五法、五聯(lián)、京棋”等多種稱謂,英文則稱之為FIR (Five In A Row的縮寫)、Gomoku(日語(yǔ)“五目”的羅馬拼音)、Gobang、connect 5、mo-rphion。捷克語(yǔ)piskvorky,韓語(yǔ)omok、韓國(guó)人還稱之為情侶棋。</p>
27、<p> 3.2五子棋基本規(guī)則</p><p> 1.五子棋行棋時(shí),黑棋先下第一子,由天元開始,后白棋在黑棋周圍的交叉點(diǎn)的落子。接著黑方再以天元中心的25個(gè)交叉點(diǎn)的范圍內(nèi)落盤面的第三子,之后黑白雙方相互順序子。</p><p> 2.最先在棋盤線交點(diǎn)橫向,縱向,斜向形成已方的五個(gè)棋子連續(xù)的一方為勝。</p><p> 3.出現(xiàn)禁手對(duì)方指出后將判負(fù),
28、其中包括兩個(gè)或兩個(gè)以上的活三,活四,長(zhǎng)連均稱之為禁手。</p><p> 4.禁手只對(duì)黑棋有效,白棋無(wú)禁手。</p><p> 5.黑方禁手形成時(shí),白方需立即指出,黑方將被判負(fù)。若白方未發(fā)現(xiàn)黑方禁手存在而繼續(xù)應(yīng)子,其后指出黑方禁手不能判黑方負(fù)。</p><p> 6.黑方連五與禁手同時(shí)形成,因黑方已連成五即黑方已獲勝,故禁手規(guī)則失效。</p>&
29、lt;p> 7.在對(duì)局中,在盤上落下的子又拿起來(lái),此動(dòng)作稱為拔子,若拔子將被判為負(fù)。</p><p> 8.在對(duì)局中棋子掉落在棋盤上將被判負(fù)。若推子或蹭子,以盤面第一落點(diǎn)為準(zhǔn)。用手將棋子推正不算違犯規(guī)則。</p><p> 9.在對(duì)局中,一方自行中止比賽如:中途退場(chǎng),將被判負(fù)。</p><p> 10.在對(duì)局中對(duì)方宣布認(rèn)輸,本局獲勝。</p>
30、;<p> 11.超過(guò)比賽規(guī)定所用時(shí)間限制,將被判為負(fù):正式比賽期間,遲到時(shí)間超過(guò)比賽容許時(shí)間將被判負(fù)。</p><p> 12.如下至最終一子仍不分勝負(fù)則定為平局。</p><p> 13.中盤期間雙方 同意和局提議,判定為平局。</p><p> 3.3五子棋常用術(shù)語(yǔ)</p><p> 1.著:也稱“步”。對(duì)局中把
31、一個(gè)棋子按照規(guī)則放到某一交叉點(diǎn),稱之為一著棋。一著是否完成有兩種規(guī)則:</p><p> (1)在執(zhí)行落子無(wú)悔規(guī)則是,以行棋者的手離開棋子為一著已完成。</p><p> (2)在執(zhí)行限時(shí)規(guī)則時(shí),以行棋者按下棋鐘作為一著已完成。</p><p> 2.PASS :五子棋中引入的英文名稱,即應(yīng)該行棋的一方主動(dòng)放棄此次行棋的機(jī)會(huì),由對(duì)方繼續(xù)行棋。</p>
32、;<p> 3.先手:對(duì)方必須應(yīng)答的著法,如對(duì)方形成活三必須阻止其形成活四。</p><p> 4.絕對(duì)先手:相對(duì)先手而言,即形成同色連四或嵌五,對(duì)方必須應(yīng)著,就是絕對(duì)先手。絕對(duì)先手又叫“沖”。</p><p> 5.VCF:(Victory of Continus Four 的縮寫) 意思是利用連續(xù)沖四取勝之意。利用連續(xù)不斷的沖四或嵌五的絕對(duì)先手,制止形成連五獲得勝利
33、的一種方法。在對(duì)局接近尾聲或排局解題中一種常見的取勝技巧。</p><p> 6.追下取勝:是指白棋利用黑棋禁手取勝的戰(zhàn)術(shù)。白1 沖四,迫使黑2 形成“四、四”禁手( 即沖四,活四禁手), 這種取勝方法叫做追下取勝。</p><p> 7.自由取勝:追下取勝以外的取勝方法,即未利用黑棋禁手戰(zhàn)術(shù)而取勝。</p><p> 8.一子雙殺:是指對(duì)局中一方落子后出現(xiàn)兩
34、個(gè)叫殺點(diǎn)即兩個(gè)獲勝點(diǎn),而使對(duì)方無(wú)法防守的情形。一般是有兩個(gè)沖四活三點(diǎn),白棋的雙活三,雙四均可稱為一子雙殺。</p><p> 9.陽(yáng)線:棋盤上可見的橫線與直線的總稱。</p><p> 10.陰線:也稱“斜線”。是棋盤上不可見的斜行線。</p><p> 11.“四、三”:指同時(shí)具備兩個(gè)先手,其中一個(gè)四,另一個(gè)是活三。</p><p>
35、 12.“活三”、“嵌五”、“沖四”:參見五子棋重要棋形講座。</p><p> 13. 禁手:對(duì)局中禁止使用的戰(zhàn)術(shù)或被判為負(fù)的行棋手段。</p><p> 14. 開局:也稱“布局”。布局階段大體為七至十幾著之內(nèi)。種類繁多,職業(yè)連珠五子棋有二十四種開局。 </p><p> 15. 局面:亦稱“局勢(shì)”。為對(duì)局中某一段時(shí)間
36、內(nèi)雙方子力的配置情況。</p><p> 16. 優(yōu)勢(shì):是指足以取勝的優(yōu)勢(shì)局面,其對(duì)方即為敗勢(shì)。</p><p> 17. 妙著:對(duì)局中走出的一步精妙的著法。既合乎邏輯又出人意料,有使局面頓時(shí)改觀的效果,對(duì)局勢(shì)的發(fā)展及對(duì)局的質(zhì)量都有重大影響。</p><p> 18. 好著:也稱“佳著”。對(duì)局中成功的某一步。</p><p> 19.
37、 正著:對(duì)局的某一局面中的正確著法。</p><p> 20. 劣著:對(duì)局中,導(dǎo)致嚴(yán)重不利后果的一步錯(cuò)誤著法。</p><p> 21. 敗著:也稱“失著”“漏著”。對(duì)局中造成局面惡化的一步嚴(yán)重錯(cuò)誤著法。</p><p> 22. 等著:對(duì)局中具有等待性的一步著法,主要意圖是等待有利時(shí)機(jī)。</p><p> 23. 廢著:也稱“空著”
38、。對(duì)局中不起作用的著法。實(shí)際上指浪費(fèi)時(shí)間毫無(wú)疑義的錯(cuò)著。</p><p> 24. 搶先:對(duì)局中利用反活三或沖四的強(qiáng)制手段奪取主動(dòng)權(quán)的著法。</p><p> 25. 打譜:按照棋譜演練著法,是提高棋藝水平的重要方法之一。</p><p> 26. 復(fù)局:也叫“復(fù)著”。對(duì)局結(jié)束又重演對(duì)局的過(guò)程。一般用以研究、比較雙方的成敗得失和著法的優(yōu)劣。</p>
39、<p> 第四章 開發(fā)工具、環(huán)境及其技術(shù)</p><p> 4.1 FLASH簡(jiǎn)介</p><p> Flash 由macromedia公司推出的交互式矢量圖和 Web 動(dòng)畫的標(biāo)準(zhǔn)。網(wǎng)頁(yè)設(shè)計(jì)者使用 Flash 創(chuàng)作出既漂亮又可改變尺寸的導(dǎo)航界面以及其他奇特的效果。Flash的涉及領(lǐng)域較為廣泛,主要涉及:動(dòng)畫游戲制作,網(wǎng)絡(luò)構(gòu)件,學(xué)習(xí)課件,網(wǎng)站廣告設(shè)計(jì)及全flash網(wǎng)
40、站,工控界面等等。主要特點(diǎn)是制作簡(jiǎn)單,通用性比較大,涉及的領(lǐng)域多,制作出的東西效果都可以做到非常精致。缺點(diǎn)在于有些效果需要?jiǎng)e的軟件輔助制作等等,不是所有效果都能制作出來(lái)。</p><p> FLASH有三重意義:1) FLASH英文本意為“閃光”;2)它是全球流行的電腦動(dòng)畫設(shè)計(jì)軟件;3)它代表用上述軟件制作的流行于網(wǎng)絡(luò)的動(dòng)畫作品。Flash是一種交互式矢量多媒體技術(shù),他的前身是Futureplash,早期網(wǎng)上流
41、行的矢量動(dòng)畫插件。后來(lái)由于Macromedia公司收購(gòu)了Future Splash以后便將其改名為 Flash2,到現(xiàn)在最新的flashcs3?,F(xiàn)在網(wǎng)上已經(jīng)有成千上萬(wàn)個(gè)Flash站點(diǎn),著名的如Macromedia專門ShockRave站點(diǎn),全部采用了Shockwave Flash 和Director。可以說(shuō)Flash已經(jīng)漸漸成為交互式知量的標(biāo)準(zhǔn),未來(lái)網(wǎng)頁(yè)的一大主流。 </p><p> 動(dòng)畫是將靜止的畫面變?yōu)閯?dòng)
42、態(tài)的藝術(shù).實(shí)現(xiàn)由靜止到動(dòng)態(tài),主要是靠人眼的視覺(jué)殘留效應(yīng).利用人的這種視覺(jué)生理特性可制作出具有高度想象力和表現(xiàn)力的動(dòng)畫影片。動(dòng)畫以人類視覺(jué)的原理為基礎(chǔ)。 如果快速查看一系列相關(guān)的靜態(tài)圖像,那么我們會(huì)感覺(jué)到這是一個(gè)連續(xù)的運(yùn)動(dòng)。 每一個(gè)單獨(dú)圖像稱之為幀。幀是動(dòng)畫電影中的單個(gè)圖像。</p><p> Flash是MacroMedia公司專為網(wǎng)絡(luò)應(yīng)用設(shè)計(jì)的一個(gè)交互性矢量動(dòng)畫設(shè)計(jì)軟件。網(wǎng)站設(shè)計(jì)者可以使用Flash為網(wǎng)站設(shè)計(jì)
43、各種動(dòng)態(tài)Logo動(dòng)畫、導(dǎo)航條以及全屏動(dòng)畫,還可以加入動(dòng)感音樂(lè),完全具備多媒體的各項(xiàng)功能。Flash以其體積短小,流體播放的特點(diǎn)迅速打開市場(chǎng),將WWW上的站點(diǎn)頁(yè)面設(shè)計(jì)帶上了一個(gè)全新的高度。實(shí)現(xiàn)Web數(shù)據(jù)庫(kù)的應(yīng)用一般有兩種方法:一種是Web服務(wù)器端提供中間件,連接Web服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器;另一種是把應(yīng)用程序下載到客戶端直接訪問(wèn)數(shù)據(jù)庫(kù)。最常用的中間件技術(shù)有通用網(wǎng)關(guān)接口(CGI)和應(yīng)用程序編程接口(API)兩種。CGI程序存在效率低、速度慢等
44、缺點(diǎn);而API很大程度上克服了CGI的缺點(diǎn),但其兼容性差,開發(fā)難度大也讓許多開發(fā)人員望而卻步??蛻舳嗽L問(wèn)數(shù)據(jù)庫(kù)主要包括JavaScript和數(shù)據(jù)庫(kù)連接器(IDC)等。用JavaScript和IDC開發(fā)Web數(shù)據(jù)庫(kù)雖然簡(jiǎn)單,但也存在功能有限、不能完全控制其過(guò)程等缺點(diǎn),所以它們也無(wú)法勝任較復(fù)雜的Web數(shù)據(jù)庫(kù)的開發(fā)。微軟推出的ASP方案很好地解決了這些難題。ASP(Active Server Page)是Microsoft公司推出的一種基于服
45、</p><p> 動(dòng)畫與動(dòng)畫設(shè)計(jì)(即原畫)是不同的概念,原畫設(shè)計(jì)是動(dòng)畫影片的基礎(chǔ)工作.原畫設(shè)計(jì)的每一鏡頭的角色、動(dòng)作、表情,相當(dāng)於影片中的演員.所不同的是設(shè)計(jì)者不是將演員的形體動(dòng)作直接拍攝到膠片上,而是通過(guò)設(shè)計(jì)者的畫筆來(lái)塑造各類角色的形象并賦予他們生命、性格和感情。</p><p> 動(dòng)畫片中的動(dòng)畫一般也稱為"中間畫".這是指兩張?jiān)嫷闹虚g過(guò)程而言的.動(dòng)畫片動(dòng)作的
46、流暢、生動(dòng),關(guān)鍵要靠"中間畫"的完善.一般先由原畫設(shè)計(jì)者繪制出原畫,然后動(dòng)畫設(shè)計(jì)者根據(jù)原畫規(guī)定的動(dòng)作要求以及幀數(shù)繪制中間畫.原畫設(shè)計(jì)者與動(dòng)畫設(shè)計(jì)者必須有良好的配合才能順利完成動(dòng)畫片的制作。</p><p> 動(dòng)畫繪制需要的工具一般有:拷貝箱工作臺(tái)、定位器、鉛筆、橡皮、顏料、曲線尺等.方法是:按原畫順序?qū)⑶昂髢蓮埉嬅嫣自诙ㄎ黄魃?,然后再覆蓋一張同樣規(guī)格的動(dòng)畫紙,通過(guò)臺(tái)下拷貝箱的燈光,在兩張?jiān)?/p>
47、動(dòng)作之間先畫出第一張中間畫(稱為第一動(dòng)畫),然后再將第一動(dòng)畫與第一張?jiān)嫰B起來(lái)套在定位器上,覆蓋另一張空白動(dòng)畫紙畫出第二動(dòng)畫.依此方法,繪制出兩張?jiān)嬛g的全部動(dòng)作。</p><p> 對(duì)動(dòng)畫時(shí)間的基本考慮是放映速度:電影和電視的放映速度是24幀/秒,而動(dòng)畫片一般有12幀就可以了,然后錄制或拍攝時(shí)進(jìn)行雙格處理。如果繪制動(dòng)作較快的動(dòng)畫最好進(jìn)行單格處理,即每秒要繪制24個(gè)畫面。對(duì)於快速奔跑的動(dòng)作,一般采用8幀單格畫
48、面。對(duì)於物體發(fā)生震動(dòng)用單格處理兩端的動(dòng)作就可以了。</p><p> 物體的靜止到移動(dòng)到靜止都有類似的規(guī)律:靜止開始時(shí)速度慢、運(yùn)動(dòng)中的速度快、運(yùn)動(dòng)停止時(shí)的速度慢.表現(xiàn)在幀數(shù)上則是:從靜止到運(yùn)動(dòng)幀數(shù)逐漸減少,從運(yùn)動(dòng)到靜止幀數(shù)逐漸增加,中間運(yùn)動(dòng)過(guò)程的速度最快,幀數(shù)也最少。</p><p> 動(dòng)畫中經(jīng)常會(huì)有循環(huán)動(dòng)作,但不同的情況需要的幀數(shù)也是不同的。如:快速飄揚(yáng)的旗需要6幀畫面循環(huán);又如火焰
49、的循環(huán),大火的動(dòng)作循環(huán)從底部燒到頂部可能需要幾秒,而小火的循環(huán)只需要幾幀;下雨的循環(huán)動(dòng)作最好設(shè)置兩層,前層雨水穿過(guò)屏幕,一般需6幀畫面,后層雨水穿過(guò)屏幕的時(shí)間慢於前層,循環(huán)的幀數(shù)也相應(yīng)多於前層;下雪的動(dòng)畫則至少需要有3種大小不同的雪花,循序的時(shí)間約需要2秒;一個(gè)急速跑步動(dòng)作需4幀畫面,快跑動(dòng)作需8幀畫面,慢跑動(dòng)作則需12幀,超過(guò)16 幀,畫面就失去沖刺感覺(jué);大象需要1~1.5秒完成一個(gè)完整的步子;小動(dòng)物如貓的一個(gè)動(dòng)作只需0.5 秒或更少
50、;鷹的翅膀一個(gè)循環(huán)需要8幀;小麻雀的翅膀循環(huán)動(dòng)作有2幀畫面就可以了。</p><p> 在Flash的時(shí)間幀面板上,在一個(gè)時(shí)間點(diǎn)(關(guān)鍵幀)繪制一個(gè)形狀,然后在另一個(gè)時(shí)間點(diǎn)(關(guān)鍵幀)更改該形狀或繪制另一個(gè)形狀,F(xiàn)lash 根據(jù)二者之間的幀的值或形狀來(lái)創(chuàng)建的動(dòng)畫被稱為“形狀補(bǔ)間動(dòng)畫”。</p><p> 形狀補(bǔ)間動(dòng)畫可以實(shí)現(xiàn)兩個(gè)圖形之間顏色、形狀、大小、位置的相互變化,其變形的靈活性介于逐
51、幀動(dòng)畫和動(dòng)作補(bǔ)間動(dòng)畫二者之間,使用的元素多為用鼠標(biāo)或壓感筆繪制出的形狀,如果使用圖形元件、按鈕、文字,則必先“打散”再變形。</p><p> 形狀補(bǔ)間動(dòng)畫建好后,時(shí)間幀面板的背景色變?yōu)榈G色,在起始幀和結(jié)束幀之間有一個(gè)長(zhǎng)長(zhǎng)的箭頭。</p><p> 在時(shí)間軸面板上動(dòng)畫開始播放的地方創(chuàng)建或選擇一個(gè)關(guān)鍵幀并設(shè)置要開始變形的形狀,一般一幀中以一個(gè)對(duì)象為好,在動(dòng)畫結(jié)束處創(chuàng)建或選擇一個(gè)關(guān)鍵幀并
52、設(shè)置要變成的形狀,再單擊開始幀,在【屬性】面板上單擊【補(bǔ)間】旁邊的小三角,在彈出的菜單中選擇【形狀】,此時(shí),時(shí)間軸上的變化如圖3-3-1所示,一個(gè)形狀補(bǔ)間動(dòng)畫就創(chuàng)建完畢。Flash的【屬性】面板隨鼠標(biāo)選定的對(duì)象不同而發(fā)生相應(yīng)的變化。當(dāng)我們建立了一個(gè)形狀補(bǔ)間動(dòng)畫后,點(diǎn)擊時(shí)間幀,【屬性】。</p><p> Flash動(dòng)畫說(shuō)到底就是“遮罩+補(bǔ)間動(dòng)畫+逐幀動(dòng)畫”與元件(主要是影片剪輯)的混合物,通過(guò)這些元素的不同組合
53、,從而可以創(chuàng)建千變?nèi)f化的效果。</p><p> 三大基本功能之外的延伸Flash動(dòng)畫的三大基本功能是一切Flash動(dòng)畫應(yīng)用的基礎(chǔ)。但現(xiàn)在Flash已經(jīng)是一個(gè)非常強(qiáng)大的平臺(tái),他是一個(gè)富媒體環(huán)境。在Flash 4時(shí)他加入了MP3聲音的支持,F(xiàn)lash 3及以前的版本對(duì)音頻支持是很匱乏的,從那個(gè)時(shí)候起你可以設(shè)計(jì)多媒體的Flash動(dòng)畫了。在Flash 6時(shí)他加入了視頻的支持,F(xiàn)lash 5及以前的版本不支持視頻(不包
54、括鏈接的Quicktime),這時(shí),你可以嵌入視頻,也可以播放外部的Flv格式的視頻。甚至,你還可以捕做到來(lái)自麥克風(fēng)和攝像頭的實(shí)時(shí)音頻和視頻。雖然Flash 4以前的版本中也有簡(jiǎn)潔的腳本代碼,但應(yīng)該不算有嚴(yán)格意義上的Actionscript,充其量只能算是Action,因?yàn)樗麅H有簡(jiǎn)單的幾條語(yǔ)句,連加減乘除運(yùn)算符都沒(méi)有。增強(qiáng)的圖形處理功能目前Flash對(duì)位圖的處理功能還比較弱,因?yàn)樗畛跏菑氖噶刻幚砥鹗嫉?,加之矢量圖形是Flash GUI
55、設(shè)計(jì)之基石,所以估計(jì)還會(huì)沿著矢量處理的道路繼續(xù)前進(jìn)。</p><p> Flash的功能可能越來(lái)越復(fù)雜,如何系統(tǒng)地掌握這項(xiàng)技術(shù)就顯得非常重要。系統(tǒng)地掌握一門技術(shù)有兩個(gè)好處:一個(gè)是對(duì)目前的功能有清晰的認(rèn)識(shí);第二,就是能夠從容應(yīng)對(duì)更復(fù)雜的知識(shí)。</p><p> 了解這些對(duì)于一個(gè)初入門的動(dòng)畫設(shè)計(jì)者是非常有意義的,正是將這些功能邏輯的整理出來(lái),有利于用戶建立正確的、邏輯的知識(shí)體系,而不是再在
56、黑夜里徘徊了。</p><p> 第五章 程序設(shè)計(jì)思路與實(shí)現(xiàn)</p><p> 5.1 程序設(shè)計(jì)思路</p><p> 游戲的主界面如圖1所示:</p><p><b> 圖1</b></p><p> 棋子的位置根據(jù)棋盤上的橫縱標(biāo)識(shí)來(lái)決定(橫向?yàn)?-15,縱向?yàn)锳-O)。</p
57、><p> 剛開始不知從何下手,后來(lái)通過(guò)相關(guān)資料發(fā)現(xiàn)游戲關(guān)鍵在于玩家中有一方是電腦,如何合理的控制電腦走棋是最關(guān)鍵的部分。如果要實(shí)現(xiàn)電腦的自動(dòng)計(jì)算棋局和決定落子位置,就需要用到一些Ai(人工智能)方面的知識(shí)。</p><p> 棋類游戲一般都會(huì)在一個(gè)二維的棋盤上進(jìn)行,所以自然的就會(huì)使用二維數(shù)組來(lái)記錄棋子的位置和決定落子的位置,數(shù)組在棋類游戲中也是應(yīng)用非常的廣泛。</p>&l
58、t;p> 5.2游戲制作步驟:</p><p><b> 游戲素材準(zhǔn)備</b></p><p> 1.棋子的準(zhǔn)備:棋類游戲當(dāng)然少不了棋子,本游戲中需要兩類棋子,一種為黑色棋子,一種為白色棋子,默認(rèn)情況下電腦使用黑色棋子,我們可以從外部導(dǎo)入兩副棋子圖片,也可以在Flash中進(jìn)行手工繪制。</p><p> 新建一個(gè)Graphic組件
59、,并命名為black graphic,使用橢圓工具繪制一個(gè)圓形,并填充上黑色,這樣一個(gè)簡(jiǎn)單的黑色棋子就做好了,如圖2</p><p><b> 圖2</b></p><p> 寬14.3,長(zhǎng)14.3 X:-7.2 Y-7.2</p><p> 因?yàn)槲覀冃枰谟螒蛑惺褂肁ction對(duì)棋子進(jìn)行控制,所以需要將上面做好的Graphic組件轉(zhuǎn)換為
60、Movie clip類型的組件。所以新建一個(gè)movie clip組件,命名為black,將組件black graphic拖到組件black的編輯區(qū)即可。</p><p> 按照同樣的方法制作一個(gè)white graphic組件,并繪制一個(gè)白色的棋子,然后在建立相應(yīng)的white movie clip組件,繪制好的白色棋子如圖3所示圖3</p><p> 2. 控制按鈕的制作:游戲中需要使用
61、鼠標(biāo)將棋子落到棋盤上,所以需要使用按鈕結(jié)合棋子的方法,因?yàn)橛螒蛑形覀兛吹降膶?shí)際是棋子,但是控制的是按鈕,所以這里我們只需要制作一個(gè)簡(jiǎn)單的隱形按鈕即可,按鈕大小和棋子大小相似,如圖4所示:(最好將棋子打碎用Ctrl+B打碎兩次)</p><p><b> 圖4</b></p><p> 當(dāng)游戲結(jié)束后還需要有一個(gè)Replay按鈕允許玩家重玩游戲,所以可以建立一個(gè)簡(jiǎn)單的
62、按鈕,用來(lái)控制游戲的再次運(yùn)行,Replay按鈕如圖5所示:</p><p><b> 圖5</b></p><p> 3. 控制棋類游戲中少不了大量的Action程序控制,為了便于對(duì)游戲進(jìn)行控制,一般將Action放在專門的Movie clip中,然后就可以在游戲的任何地方調(diào)用了。A:新建一個(gè)Movie clip組件,命名為blk,進(jìn)入組件編輯狀態(tài)后,在第一關(guān)鍵
63、楨添加如下AS:</p><p> stop();function makelist(maker) //自定義函數(shù)makelist,參數(shù)為maker,其作用是生成一個(gè)列表{if (maker =="white") //如果傳遞進(jìn)函數(shù)的參數(shù)是white{color = 2;color_bad = 1;//設(shè)置兩變量值}else //如果傳遞進(jìn)函數(shù)的參數(shù)是black
64、{color = 1;color_bad = 2;//設(shè)置兩變量值}for (i=0; i<15; i++) //外循環(huán),循環(huán)變量為I,循環(huán)次數(shù)為15次{for (j=0; j<15; j++) //外循環(huán),循環(huán)變量為j,循環(huán)次數(shù)為15次,兩次循環(huán)共15*15此,正好等于棋盤的大小,用來(lái)設(shè)//置棋盤{if (_root.table[i][j] <> 0) //table數(shù)組用來(lái)檢查棋盤是
65、否為空,為空,相應(yīng)的值為1,否則為0{for (k=0; k<4; k++) {if (maker =="white") {_root.computer[i*15+j][k] = 0;} else{_roo</p><p> {x = x + _root.dir[k+4][0];y = y + _root.dir[k+4][1];score = score *
66、 2;}if (score > 30) {score = score * 2;}if ((_root.table[x+_root.dir[k+4][0]][y+_root.dir[k+4][1]] == color_bad) and (x+_root.dir[k+4][0] < 15) and (y+_root.dir[k+4][1] >= 0) and (y+_root.dir[k+4][1] < 1
67、5) and (x+_root.dir[k+4][0] >= 0)) {score = score / 2;}if (maker =="white") {_root.computer[i*15+j][k] = score;} else {_root.player[i*15+j][k] = score;}}//初始化棋盤,根據(jù)上一步落子的不同,來(lái)計(jì)算一下一步的落子}}}}</p>
68、;<p> B:再新建一個(gè)Movie clip組件,命名為blk2,進(jìn)入組件編輯狀態(tài)后,在第一關(guān)鍵楨添加as:stop();在第六楨插入一個(gè)關(guān)鍵楨,并添加如下AS:</p><p> if (_root.playnow == "computer") {// 如果先落子的為電腦,則初始化棋盤_root.func.makelist("white")
69、;_root.func.makelist("black");//分別調(diào)用前面定義的自定義函數(shù),且傳遞不同的參數(shù)max_computer = 0;max_player = 0;k = 0;//定義三個(gè)變量for (j=0; j<15; j++) {for (i=0; i<15; i++) {for (k=0; k<4; k++) {if (_root.comput
70、er[j*15+i][k] == max_computer) {rndnum = random ( 100 ) + 1;if (rndnum > 50) {max_computer = _root.computer[j*15+i][k] ;xc = i;yc = j;}}if (_root.computer[j*15+i][k] > max_computer) {max_computer
71、</p><p> _root.gameoverman.gotoAndPlay(2);</p><p><b> }}</b></p><p> C:新建一個(gè)Movie clip組件,并命名為bb,此組件用來(lái)計(jì)算電腦如何走棋,進(jìn)入組件編輯狀態(tài)后,在圖層layer1繪制一個(gè)有填充色的矩形,然后在第5楨插入一個(gè)關(guān)鍵楨,在同樣位置繪制一個(gè)大小
72、相同填充色不同的矩形。新建一個(gè)圖層,在矩形里輸入提示文字:電腦走棋,然后再新建一個(gè)圖層Action,在第一楨添加AS: stop();,在第8楨插入一個(gè)關(guān)鍵楨,在此楨添加如下AS:</p><p> if (_root.playnow == "computer") {//初始化棋盤_root.func.makelist("white");_root.func.ma
73、kelist("black");//調(diào)用自定義函數(shù)max_computer = 0;max_player = 0;k = 0;//定義三變量for (j=0; j<15; j++) {for (i=0; i<15; i++) {for (k=0; k<4; k++) {if (_root.computer[j*15+i][k] == max_computer) {
74、rndnum = random ( 100 ) + 1;if (rndnum > 50) {max_computer = _root.computer[j*15+i][k] ;xc = i;yc = j;}}if (_root.computer[j*15+i][k] > max_computer) {max_computer = _root.computer[j*15+i][k] ;xc = i;yc&l
75、t;/p><p> if (max_computer > max_player) {x = xc;y = yc;} else {x = xp;y = yp;}// 繪制棋子num = y * 15 + x;removeMovieClip(_root.b add num);duplicateMovieClip(_root.white, "white"
76、add num, num + 300);setProperty(_root.white add num, _x, 34.7 + x * 20);setProperty(_root.white add num, _y, 34.7 + y * 20);_root.table[y][x] = 2;// 顯示棋子_root.display = "Xpos : " + (x + 1);temp = ch
77、r ( y + 65);_root.display1 = "Ypos : " + temp;_root.playnow = "player";// 判斷是否獲勝</p><p> xx = x;yy = y;for (k=0; k<4; k++) {if (_root.a_result <> 6) {_root.a_result =
78、0;x = xx;y = yy;while ((_root.table[y][x] == 2) and (y+_root.dir[k][1] < 16) and (x+_root.dir[k][0] >= -1) and (x+_root.dir[k][0] < 16) and (y+_root.dir[k][1] >= -1)) {x = x + _root.dir[k][0];y = y + _
79、root.dir[k][1];// "_root.table["+y+"]["+x+"]="+_root.table[y][x]_root.a_result = _root.a_result+1;}x = xx;y = yy;while ((_root.table[y][x] == 2) and (y+_root.dir[k+4][1] < 16)
80、 and (x+_root.dir[k+4][</p><p> _root.gameoverman.gotoAndPlay(2);</p><p><b> } }</b></p><p> D:再新建一個(gè)movie clip組件,命名為buttonclip,此組件用來(lái)控制雙方的落子,進(jìn)入組件編輯狀態(tài)后,將前面做好的隱形按鈕拖放到編輯
81、區(qū)中,然后給第一楨添加AS:</p><p><b> stop();.</b></p><p> 給這個(gè)隱性按鈕加AS</p><p> on (release) {</p><p> if (_root.playnow == "player") {</p><p>
82、 // Get xpos ypos</p><p> _root.xpos = (int(this._x +0.5) - 15)/20 - 1;</p><p> _root.ypos = (int(this._y +0.5) - 15)/20 - 1;</p><p> // Display</p><p> temp = (in
83、t(this._x +0.5) - 15)/20;</p><p> _root.display = "Xpos : " + temp;</p><p> temp = (int(this._y +0.5) - 15)/20;</p><p> temp = chr ( temp + 64);</p><p> _
84、root.display1 = "Ypos : " + temp;</p><p> _root.num = _root.ypos * 15 + _root.xpos;</p><p> // Draw the balls</p><p> removeMovieClip(_root.b add _root.num);</p>
85、<p> duplicateMovieClip(_root.black, "black" add _root.num, _root.num + 300);</p><p> setProperty(_root.black add _root.num, _x, 34.7 + _root.xpos * 20);</p><p> setProperty(_
86、root.black add _root.num, _y, 34.7 + _root.ypos * 20);</p><p> _root.table[ypos][xpos] = 1;</p><p> // Changer to computer</p><p> _root.playnow = "computer";</p>
87、<p><b> // Win?</b></p><p> xx = _root.xpos;</p><p> yy = _root.ypos;</p><p> for (k=0; k<4; k++) {</p><p> if (_root.a_result <> 6) {&
88、lt;/p><p> _root.a_result = 0;</p><p><b> x = xx;</b></p><p><b> y = yy;</b></p><p> while ((_root.table[y][x] == 1) and (y+_root.dir[k][1] <
89、; 16) and (x+_root.dir[k][0] >= -1) and (x+_root.dir[k][0] < 16) and (y+_root.dir[k][1] >= -1)) {</p><p> x = x + _root.dir[k][0];</p><p> // "_root.table["+y+"]["
90、+x+"]="+_root.table[y][x] (for trace)</p><p> y = y + _root.dir[k][1];</p><p> _root.a_result = _root.a_result+1;</p><p><b> }</b></p><p><b
91、> x = xx;</b></p><p><b> y = yy;</b></p><p> while ((_root.table[y][x] == 1) and (y+_root.dir[k+4][1] < 16) and (x+_root.dir[k+4][0] >= -1) and (x+_root.dir[k+4][0]
92、 < 16) and (y+_root.dir[k+4][1] >= -1)) {</p><p> x = x + _root.dir[k+4][0];</p><p> y = y + _root.dir[k+4][1];</p><p> _root.a_result = _root.a_result+1;</p><p&
93、gt;<b> }</b></p><p> if (_root.a_result == 6) {</p><p> _root.playnow = "nobody";</p><p><b> }</b></p><p><b> }</b>&l
94、t;/p><p><b> }</b></p><p> // Game over</p><p> if (_root.playnow =="nobody") {</p><p> _root.gameoverman.gotoAndPlay(3);</p><p><
95、;b> }</b></p><p><b> }</b></p><p> // It's computer's turn</p><p> if (_root.playnow =="computer") {</p><p> _root.computerr
96、un.gotoAndPlay(5);</p><p><b> }</b></p><p> }E:最后再制作一個(gè)movie clip,命名為gameover,此組件用來(lái)判斷游戲是否結(jié)束,也就是判斷是缶有一方已經(jīng)連好了五顆棋子。進(jìn)入組件編輯狀態(tài)后,連續(xù)建立四個(gè)圖層,分別為layer1,layer2,layer3和action,在layer1,layer2,lay
97、er3的第一楨插入空白,然后在第2楨繪制電腦獲勝的提示信息,并將Replay按鈕拖到編輯區(qū)中,給按鈕添加As:</p><p> on (release) </p><p> 在layer1,layer2,layer3的第三楨按照同樣的方法設(shè)置您勝利的提示信息,</p><p> 然后回到圖層action,接下來(lái)就要添加具體的控制Action了,在此圖層的前三
98、個(gè)關(guān)鍵楨分別添加as: stop();,在第四關(guān)鍵楨添加如下AS:for (i=0; i<=225; i++) {removeMovieClip(_root.black add i);removeMovieClip(_root.white add i);removeMovieClip(_root.b add i);}//清除棋盤上的棋子_root.gotoAndPlay("run")
99、;//跳轉(zhuǎn)到游戲的開始</p><p> 布置主場(chǎng)景:游戲的主要工作完成后,接下來(lái)需要布置主場(chǎng)景了。首先使用繪圖工具繪制出游戲中的棋盤,棋盤大小為15*15的矩陣,然后給棋盤標(biāo)上橫向</p><p> 分別將組件white,black,buttonclip,blk,bb和gameover拖到舞臺(tái)的合適位置,如圖所示:</p><p> 組件white的
100、實(shí)例名為:black組件black的實(shí)例名為:white組件buttonclip的實(shí)例名為:b組件blk的實(shí)例名為:func組件bb的實(shí)例名為:computerrun組件gameover的實(shí)例名為:gameoverman然后在棋盤上繪制兩個(gè)Dynamic text動(dòng)態(tài)文本框,用來(lái)顯示上一步落子的位置,分別設(shè)置變量名為display和display1。最后,給第一關(guān)鍵禎添加as:</p><p>
101、 stop();num = 0;table = new Array();computer = new Array();player = new Array();a_result = 0;// Table arrayfor (i=0; i<15; i++) {table[i] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);}// Computer and player ta
102、ble listfor (j=0; j<15; j++) {for (i=0; i<15; i++) {computer[j*15+i] = new Array(0,0,0,0);player[j*15+i] = new Array(0,0,0,0);}}// Make buttonscount = 0;for (j=0; j<15; j++) {for (i=0; i<15; i++) {
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- java五子棋畢業(yè)設(shè)計(jì)論文
- 五子棋畢業(yè)論文-html開發(fā)五子棋的原型設(shè)計(jì)
- 五子棋游戲畢業(yè)設(shè)計(jì)
- 五子棋畢業(yè)論文
- 畢業(yè)設(shè)計(jì)--五子棋人機(jī)對(duì)弈
- 畢業(yè)設(shè)計(jì)---網(wǎng)絡(luò)五子棋游戲
- 五子棋游戲設(shè)計(jì)畢業(yè)論文
- 網(wǎng)絡(luò)五子棋五子棋設(shè)計(jì)與實(shí)現(xiàn).doc
- java五子棋畢業(yè)設(shè)計(jì)--java五子棋對(duì)弈程序的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)絡(luò)五子棋游戲畢業(yè)設(shè)計(jì)
- java五子棋畢業(yè)設(shè)計(jì)(整套)
- 五子棋對(duì)弈系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)論文——五子棋游戲設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--五子棋程序設(shè)計(jì)
- qt網(wǎng)絡(luò)五子棋五子棋設(shè)計(jì)與實(shí)現(xiàn)
- flash課程設(shè)計(jì)---五子棋游戲制作
- 人機(jī)對(duì)弈五子棋游戲畢業(yè)設(shè)計(jì)
- 畢業(yè)論文---網(wǎng)絡(luò)五子棋游戲設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)linux環(huán)境下五子棋游戲設(shè)計(jì)
- java五子棋游戲畢業(yè)論文
評(píng)論
0/150
提交評(píng)論