計算機科學與技術(shù)游戲設計_第1頁
計算機科學與技術(shù)游戲設計_第2頁
計算機科學與技術(shù)游戲設計_第3頁
計算機科學與技術(shù)游戲設計_第4頁
計算機科學與技術(shù)游戲設計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

西安科技大學高新學院畢業(yè)設計(論文)題目:五子棋的設計與實現(xiàn)學院:機電信息學院專業(yè):計算機科學與技術(shù)姓名:班級/學號計科1101指導老師:起止時間:2014年6月23日至2014年12月30日概述此章會詳細的描述我所選題目的開發(fā)背景,介紹人工智能的重要原理,還有課題的意義,也會有所牽連五子棋游戲設計與實現(xiàn)的現(xiàn)狀,我這次選這個題目的研究內(nèi)容和方向。1.1開發(fā)背景隨著互聯(lián)網(wǎng)和現(xiàn)在計算機技術(shù)快速發(fā)展,游戲程序現(xiàn)如今各地發(fā)展是最快速,最為有震懾力,最為有發(fā)展力以及活力領域之一?計算機的游戲的問世為大眾們提供了這個全新娛樂平臺,擴展了我們自由支配的時間。為此和Game有關程序軟件將受到了無數(shù)人追捧。伴隨著幾年來程序軟件的開發(fā)技術(shù)不斷進步與不斷發(fā)展,現(xiàn)游戲軟件操作要求也是越來越簡易多樣化,但是絕大多數(shù)游戲的愛好者摸索一點時間便可以隨心所欲玩耍,甚至連有些老年人也慢慢開始一點點喜歡上了它。二戰(zhàn)結(jié)束以后,計算機技術(shù)得了空前絕后發(fā)展空間?無數(shù)國家中美國計算機技術(shù)發(fā)展得最為快速。1946,第一臺電計算機((ENIAC))在美國賓夕法尼亞大學得到制造完成。剛出世的ENIAC,一個新的時代也意味著降臨那就是計算機電子時代的到來,對也這個重大意義的時代是時代的里程碑,對于我們的科技時代也是有著重大的足跡一個旗桿。地球上偉大的東方國度中國也是不會甘于落后,我國也在1956年也制出了我們自己的電腦。在過后的幾年里東方國度中國完美的做出了電子管計算機包含大型和小型等。集成的電路的計算機在不就得后被制造出來,與此同時和大規(guī)模集成的電路的電腦也被開發(fā)出來,自此以后各種各樣的計算機就層出不窮,各種綜合能力也是不斷變好,同時不管是計算速度還是運行效率也是得到發(fā)展,集中了大多計算機軟件設計人才的美國,在工作之后,他們也時常編寫一種可以和人拼智的“游戲”,為此來增強自己編程能力?這種“游戲”也是各式各樣,但是萬變不離其宗它們特點都是通過計算機中的軟件事先設計好“判斷”和“分析”能力反來和人比斗的?由于它們不斷的創(chuàng)新更改,使計算機的“智力”的水平與人難解高下啊?到了上一個世紀中的九十年代,游戲軟件便早已成為世界各地人玩耍,所謂的游戲軟件是指利用各種各樣的程序跟動畫效果組合一起的產(chǎn)品,我們便把他叫做作為"游戲軟件"。到目前,互聯(lián)網(wǎng)上我們也是可以看到的各種各樣大型3D網(wǎng)絡的游戲和WEBGAME的網(wǎng)頁游戲等等它們都是大多是通過"3DMAX、MAYA、FLASH、動畫軟件和面向?qū)ο驤AVA、C++、VB、等等語言開發(fā)出來,所以我們才叫游戲軟件。中國的一些組合給我國也是貢獻很大很大的促進,中國起到了巨大作用工作組便是洛河工作室,他們讓也越來越多人喜歡上了游戲,敲開了廣闊的市場。到如今的游戲已經(jīng)受到了很大關注,它年輕而又具有潛力的并且吸引人,讓人們生活日益豐富起來。而五子棋游戲誕生是吸引著各個不同年齡段的人群,這是一個老少皆宜的好游戲,而當前微型的計算機成為廣大人群流行的時候,用電腦下五子棋便更是一種時尚?,F(xiàn)如今網(wǎng)絡上出現(xiàn)了的各式各樣五子棋游戲,有難、有簡單的等等。而這些所有的都滿足了我們各個人群的需要,所以當前的五子棋越來越被更多人熟悉。隨著時代的發(fā)展各種有游戲快速的起步,其中包括我所涉及的游戲,得到很多人的喜愛。1.2課題意義從古至今,人們從四只腳落地行走,發(fā)展到現(xiàn)在兩足落地,發(fā)現(xiàn)火,和制造房子來居住,不僅從捕獵到圈養(yǎng),等等現(xiàn)象,人類都是不管變得聰明漫長人類史中,人類不斷思考和積累經(jīng)驗,使得人們智力水平不斷提高。而五子棋不僅僅需要人們思考,而且還可以借助提高記憶力水平,并且這個是富含哲理,可以助人們修身養(yǎng)性的,鍛煉人的意志的。五子棋既夾雜著現(xiàn)代大量元素又蘊含著這古典哲學;它既有簡單易學特性,又是有高深知識內(nèi)涵,它會是一個人人喜愛把玩的智力物品,有是蘊含人類幾千年的思維行動;它源淵流長著棋文化的內(nèi)涵,結(jié)合中西方的補給以及吸收這世間的文化。它即是這全球文化交流河又會是從原始到現(xiàn)代哲理冰晶。五子棋游戲會是一個極易上手的`游戲,但又會是一個很難走深游戲,它有區(qū)別于其它游戲,五子棋游戲它不僅僅可以使人娛樂這,這些更是可以使人頭腦變得越來越聰明。五子棋決斗模式中兩種:一種便是.人機對戰(zhàn);另一種便是.雙人對戰(zhàn)。這些都給人無限的樂趣它的用途正是人工智能的杰作。正因為這樣優(yōu)異各個方面知識人們不斷的研究,知識極大促進了人工智能發(fā)展,反過來的人工智能理論與技術(shù)上突破也是使得五子棋的程序越來越完美以及受歡迎!五子棋不斷開發(fā)研究知識,五子棋推廣速度飛快,這使得全球個地都慢慢了解了五子棋,也是正因為這樣個越來越多人喜歡這五子棋。伴隨著這互聯(lián)網(wǎng)絡的技術(shù)的不斷發(fā)展下去,更多更多的人可以在這網(wǎng)絡上和更廣泛更廣泛的人對決交流。1.3人工智能介紹人工智能,在外國語言中有稱作‘AI’。在開發(fā)和研究的道路上使得我們?nèi)祟惖闹腔塾兴诰?,探尋我們智慧理論以及方法和技術(shù),人工智能也成為一科孕育而生的萌芽科學。人工智能是可以計算機科學的一個很重要的分支,它的主要的目的是為了詮釋這“智”的實在內(nèi)質(zhì),以這個的理念為核心我們創(chuàng)造出一個個和人一摸一樣的電腦機器,這個領域研究包含著機器人和語言識別和圖像識別、自然的語言處理以及專家系統(tǒng)等。在歷史中人工智能被得意提出,不同領域也對他開始研究和不同的見解,慢慢的得到了發(fā)展,以至于它被利用于世間不同的地方,(AI)人工智能它是一個包容著十分廣泛科學,人工智能也是一個用不同領域的組合而成,比如說機器學習,計算機的視覺等等,概括來說,人工智能的研究的一個主要的目標是使得機器如同人一般具有人智能。,每一個時代每一個階段我們對于一個技術(shù)理解是不一樣的,人工智能也是一樣的。在歷史的長河中它不斷吸收著得以發(fā)展和步進。因為人工智能是出生于計算機時代,以計算機作為媒介,因此電腦的發(fā)展進步直接的關系到這門科學。人工智能是包含這科學計算機、心理學論控制、自動化、仿生學、論信息、語言學、生物學、邏輯數(shù)理、醫(yī)學還有哲學等多門科學的。它研究包含了許多許多的內(nèi)容,比如說像人的推理思考以及聯(lián)想,還有認知能力,聯(lián)想搜索以及學習記憶。1.4五子棋規(guī)則首先是由執(zhí)黑棋方的將一枚棋子落子到天元點上面,接著是由執(zhí)白棋的一方會在黑棋周圍的交叉的點上下子??墒牵诙Y貌的人與人之間會在黑子落子后將白子落入己方地界,即是斜止、直止這些地方。接著下棋黑白雙方便輪流的落子,直到下棋中其中一方先在下子棋盤中橫、縱、斜線上使形成連續(xù)不斷五子或者是五子以上的〔只對白棋有效〕,則視該方就算是獲勝的一方。對于持黑子的玩家來說在對局中是占盡了很大很大的便宜,在這中情況下,就會采取一定的措施,這樣可以使得游戲更為公平公正。當前的五子棋對決的規(guī)則如下:1、執(zhí)黑的先行,天元中落子;2、先會在橫-豎-斜線的任意形成的五子相連著>勝利;3、執(zhí)黑的禁手判負-白棋的無禁手。黑棋的禁手有三個:<1>“三—-—三”;<2>“四—-—四”;<3>“長連”,執(zhí)黑的只能通過“四三”取得勝;4、如果分不出勝與負,則視為是平一局;5、五連和禁手要是同時出現(xiàn)的話,則判為勝;6、如果黑方在下棋的時候落子禁手,對方應該立馬提出。如果沒有看到,或者看到了不說,則禁手失敗。 7、在五子棋中拿黑子棋子的選手是一定先下棋的,為了公平采取搖色子,大的執(zhí) 黑子,如果大小一樣,就重新來過一次。<1>禁手的例子: -●●--------●●- --+----●---- ---●--●+●--●--●----●--●---- ---------- - +為三--三禁手 ----- --●-- +●●●- ----- -●--- ●●+●- --●-- --●-- ●- --●--- ----- +為四--四禁手 -------- -●●+●●●- -------- +為長的連禁手1.4.2五子棋的發(fā)展與現(xiàn)狀五子棋的起源國家是我國。在日本他們把我國的五子棋叫做“連珠“:”Renju‘這個是翻譯英文、“G0bang”這個是英文國家的稱謂,這是說“FIR”(FiveinaRow縮寫),有“連五子”“五子連”“珠串”“目五”“碰五目”“格五”等等多種多樣的稱謂。到了這21世紀便已經(jīng)出現(xiàn)了很多很多棋類,這以棋類屬性劃分如下的幾個類:1.按照參與的人數(shù)作為分類(Player):a.單人的挑戰(zhàn)游戲,比如如華容道等等塊狀滑動類的游戲;b.雙人的挑戰(zhàn)游戲,比如中國象棋圍棋五子棋等等;c.多人的挑戰(zhàn)游戲,比如跳棋之類。通常的來說,競參的人數(shù)越多的話,對手就會越多,情況也就是越為的復雜。2.按照兵種的多少作為分類(Pieces,Materials)a.單一的兵種:比如圍棋五子棋等等;b.多兵種的:比如國際象棋中國象棋日本將棋等等。兵種的不斷的增加,意味著我們玩法的復雜程度也是不斷增加。3.按照著法的分類(Move)a.走子一類:比如象棋國際象棋跳棋等等;b.添子一類:比如圍棋五子棋六子棋等等;c.吃子一類:比如象棋國際象棋圍棋等等;d.混合一類:比如圍棋將棋等等。4.按照勝負判決的分類(Win-Lose-Draw)a.擒獲首領的:比如象棋國際象棋等等;b.擺成形狀的:比如連珠類井字棋五子棋六子棋等等;c.占領地域的:比如圍棋點格棋等等;d.剩余子粒的:比如黑白棋蘇拉卡爾塔等等;e.活動余地的:比如亞馬遜等等;f.到目標地:比如跳棋一字棋牛角棋等等。這些年,全世界有很多五子棋聯(lián)盟的成立以將五子棋深入群眾,不同的聯(lián)盟他們的規(guī)則也是不一樣,有些的會和其他組織一起組織活動,參加的人也是四方各地。從我們國內(nèi)比賽來看看,如:北京鎮(zhèn)江上海吉林黑龍江天津安徽浙江等等,這些省份都不同時間舉行比賽,應為各種五子棋聯(lián)盟的誕生,人與人之間也是交流頻繁,京津冀對抗賽在1997年舉辦了五子棋我國的團體賽在2000年舉行“中行杯”在遼寧于2000舉辦,“一品梅杯”在江蘇鎮(zhèn)江哪里舉辦等等。到如今,互聯(lián)網(wǎng)愈來愈發(fā)達,于是將五子棋挪到了互聯(lián)網(wǎng)上,五子棋在互聯(lián)網(wǎng)上也是很多人參與,各種優(yōu)越性的五子棋,隨時間的推移,我想一定會越來越多人參與??!1.5研究內(nèi)容本游戲采用win764位系統(tǒng)環(huán)境下編寫。人工智能在五子棋上也是很好的體現(xiàn)出來了,它是涉及到計算機的博弈理論,和棋盤表示走法生成的以及搜索算法等等知識,最終為實現(xiàn)人機的對戰(zhàn)。完成后,要可以提交演示的系統(tǒng)和相關的程序提交畢業(yè)論文本。演示系統(tǒng)要能正確的運行能夠進行有效的人機對戰(zhàn),并且通過本次畢業(yè)設計,要對計算機博弈的理論有了更加深層次—更加透徹了解。一個暑假的研究學習,真真正正的體現(xiàn)了五子棋的魅力,使得我學習不斷提高。

2五子棋程序的介紹本章重點會提及本游戲的設計思想,思維模式,結(jié)構(gòu),還有開發(fā)的工具,調(diào)試的環(huán)境等等做一一描述。2.1五子棋程序基本功能1.顯示一個15X15的五子棋盤。2.輪到玩家落子時,鼠標下出現(xiàn)一個棋子,靠近某個交叉點時會有閃爍提示,當鼠標點擊時能 準確落子。3.玩家為執(zhí)黑先行,可以任意落子。4.能夠智能的判斷游戲是否已經(jīng)結(jié)束,識別黑方還是白方獲得勝,并且有著明顯的提示。5.在界面中有提示準備落子的一方作為提示6.有重新開始游戲和認輸功能,點擊認輸時提示“電腦色贏!”。7.本游戲有一定的提示功能。2.2開發(fā)運行環(huán)境1.中央處理器(CPU):處理器 AMDA4-3305MAPUwithRadeonHDGraphics雙核2.內(nèi)存:4.00GB3.硬盤:500GB4.操作系統(tǒng):Windows7(64位)5.開發(fā)工具:Dreamweaver86.編程語言:html、css、js2.3本軟件開發(fā)的工具以及開發(fā)語言的介紹2.3.1開發(fā)工具DreamweaverDreamweaver設計頁面使用的人特別的多,在這個領域名聲特別的大、使用也是一樣功能最為彪悍的一個軟件,伴隨著·Dreamweaver8軟件的發(fā)布,這更堅定了Dreamweaver在這個領域地位的堅立。Dreamware包含了橫多功能,有網(wǎng)頁開發(fā)開發(fā)網(wǎng)站管理站點的功能于一體,是一個可是化工具在不同的操作系統(tǒng)系也可以使用不同的瀏覽器也是兼容等特性,所有的這方面開發(fā)首先就會想到Dreamweaver軟件。2.3.2開發(fā)工具的安裝與破解下載MacromediaDreamweaver8中文版,文件如下圖2-1:圖2-1下載完之后通過鍵盤選中軟件按下回車鍵,打開之后按Enter鍵或者鼠標下一步,然后鼠標點擊條款圈圈,選完后Enter一下,接著在這個界面可以選擇開發(fā)工具安裝的位置,我們做開發(fā)的最好不要把工具安裝到c盤下,所以我選擇了D盤下,點擊兩次下一步,再點擊安裝,等待安裝完成后點擊完成。下載MacromediaStudio.v8.0keygen,文件如下圖2-2圖2-2 下載完之后雙擊下載好的文件,打開已經(jīng)安裝好的MacromediaDreamweaver8中文版,選擇那個號碼我有,我要啟動MacromediaDreamweaver,Enter一下,將MacromediaStudio.v8.0keygen中生成的序列號復制到MacromediaDreamweaver中序列號中,然后點擊繼續(xù),接著輸入姓名和電子郵件以及地點,地點選擇中國,最后點擊注冊,到此開發(fā)工具就已經(jīng)安裝破解完成。2.3.3開發(fā)工具使用1、首先建立一個網(wǎng)站站點,并且在網(wǎng)站站點里再新建子文件夾主要用于分類存放不同文件;2、創(chuàng)建htmlcssjs文件并保存到相應目錄中;3、在調(diào)試的過程中直接去點擊運行或者按F12快捷鍵,打開瀏覽器進行調(diào)試和運行。

2.3.4主要的開發(fā)語言—javascript(js)Javascript是一個特別好的軟件,好在哪呢,它有面向?qū)ο蟮娜颂匦?,又有面向過程的特性,對于不同的人員來說是一個很好入手的軟件,所以它有和多這些軟件的特性,js可以處理服務器傳過來的數(shù)據(jù),動態(tài)的顯示在網(wǎng)頁上,也可是頁面給上的容器動起來,之所以好,是應為它解決了很多以前軟件的毛病。由于剛有網(wǎng)絡的時候網(wǎng)速特別的慢,這樣的話就會比較不給力。于是名為Javascript又多了一名成員Navigator,數(shù)據(jù)驗證的方法由此提供,Javascript也可以使得給網(wǎng)頁一些動畫效果,層疊樣式表是實現(xiàn)不了的,經(jīng)常會和其他的一些同功能軟件一起使用。2.4五子棋的程序功能設計此五子棋游戲主要重點由五大功能組成的,分別是:開始游戲、游戲認輸、我要悔棋、游戲說明和關于。軟件功能結(jié)構(gòu)圖如圖2-3:五子棋五子棋幫助游戲幫助游戲游戲說明游戲說明關于我要悔棋游戲認輸開始游戲關于我要悔棋游戲認輸開始游戲圖2-3

3五子棋總體的設計一個好的人機交互界面是一個好的游戲軟件產(chǎn)品的開端,一個美好的界面給人們的第一此感覺是舒適的輕松的。接著要有簡單明了的操作,界面上的操作很少,使得玩家更容易上手。因此本章特別主要對本軟件游戲的界面以及相關的功能玩家落子實現(xiàn),進行詳細的介紹說明。3.1人機界面的實現(xiàn)以及鼠標事件的監(jiān)聽3.1.1應用程序的界面生成在這個模塊中主要實現(xiàn)的技術(shù)由html、css和js組成,首先得設置一個良好的界面,需要考慮到一些兼容性的問題,我采用的是800X600的界面,這個大小比較適中,兼容性良好。使得分辨率不同都可以完整的顯示,接著是讓這個界面顯示在一個合適的位置,為了用戶良好體驗選擇了瀏覽器的中間,所以涉及到計算位置問題,以適應不同分辨率的電腦,進一步做好兼容性問題。此次設置的窗口的詳細介紹如下:首先,通過內(nèi)置對象文檔對象的createElement方法創(chuàng)建一個元素對象,這個方法需要傳入一個元素類型字符串,由于此次使用的div層對象,所以傳入?yún)?shù)為”div“,由于,窗口對象在整個游戲中都是要使用的所以必須將它保留到全局中有一個標示符接受。創(chuàng)建好的窗口元素是一個不存在大小顏色等各種屬性,要使窗口窗口對象理想的顯示需要通過內(nèi)置函數(shù)with,將窗口對象傳入并且在其方法體內(nèi)寫入窗口的各個屬性,其中包括寬度width、高度height、背景顏色backgroundColor、定位方式position,這樣就將界面創(chuàng)建好了,不過這個窗口是沒有標題的,通過窗口對象的title屬性賦值為“簡易五子棋”。為了使得窗口始終在界面的中間出現(xiàn),使其對稱首先判讀頁面寬度是否大于窗口寬度,如果頁面寬度小于窗口寬度則將窗口居左0像素,反之將頁面界面寬度減去窗口寬度的商除于2為居左像素。這樣我們的界面就算完成了。生成界面之后由于我們制作的是游戲,所以不能采用整個瀏覽器最為游戲窗口,所以必需為界面生成一個理想的界面最為游戲的載體,為了使得游戲的兼容性以及窗口的美化和用戶的體驗,所以在主文件中天劍Javascript代碼,使用script標簽包裹腳本代碼,使其有效,接著判讀當前父窗口是否存在,如果不存在就將當前窗口賦值給當前頁面的父窗口屬性,并且將當前父窗口設置為null,然后重新從當前窗口打開自身為空,這樣就可以自動關閉當前頁面,然后使用窗口對象的close方法關閉這個不存在的窗口,接著又用窗口對象打開游戲界面文件,設置其寬度為800像素,高度為600像素,居左200像素,居頂100個像素,最后就將本身窗口也關閉,這樣就成功的關閉了當前的窗口,而又不用手動關閉窗口,極大提高了用戶的體驗。

運行結(jié)果如圖3-1:圖3-1

3.1.2人機界面的生成一個良好的人機界面這不僅僅需要一個很舒適的棋盤以及需要一個一些圖片以及適宜的背景顏色。并且需要各種色彩包括一些圖片應選擇淡一點,以柔為主題。這樣可以給人一種舒適感不會那么刺眼。在游戲之中一縷縷清雅的音符可以使得游戲更加的人性化,所以在游戲中添加背景音樂載進窗口界面,并加入相應的控制按鍵,就得到了一個簡單的游戲環(huán)境。在測試階段為了更好的測試,首先需要關閉游戲窗口模式,將主文件javascript代碼注釋掉創(chuàng)建一個界面,首先,在界面中有一個棋盤,棋盤是放到桌子上的,所以我們先創(chuàng)建一個桌子對象,通過內(nèi)置函數(shù)function創(chuàng)建一個desk桌子對象,在對象體中包含如下方法:1、crateDesk()函數(shù)用于創(chuàng)建桌子函數(shù);2、createParper()函數(shù)用于創(chuàng)建棋紙;3、createChessLocation()函數(shù)用于創(chuàng)建棋位對象;4、createRole()函數(shù)用于創(chuàng)建用戶角色;5、createHead()函數(shù)用于創(chuàng)建用戶頭像;6、creatMotto()函數(shù)用于創(chuàng)建用戶座右銘;7、creatBolw()函數(shù)用于創(chuàng)建用戶裝棋子的碗;8、creatWarn()函數(shù)用于創(chuàng)建用戶提示燈運行結(jié)果如圖3-2:圖3-23.1.3鼠標事件的監(jiān)聽Onmouseover是mouse進入;onmouseout是mouse移出;onmousedown是mouse按下事件:obj.onmouseover=function(){事件塊},obj.onmouseOut=function(){事件塊},obj.onmousedown=function(){事件塊};obj是需要添加事件源的對象。首先,鼠標移動在棋盤上,如果游戲開始并且輪到玩家執(zhí)棋的時候,當鼠標進入某個棋子位置在鼠標移入事件塊中讓這個位置閃爍提示玩家可以下子,這是可以點擊鼠標觸發(fā)onMouseDown方法下子。如果不下子,當mouse移出這個棋位時,將fik關閉。首先,給棋位對象添加鼠標進入觸發(fā)將自定義的function對象給棋位對象的鼠標進入賦值,在代碼體中,首先判讀游戲是否開始并且這個位置是否已經(jīng)存在如果游戲還未開始則提示游戲還未開始調(diào)用系統(tǒng)的alert函數(shù),如果這個位置已經(jīng)存在棋子則不做出任何提示,否則通過當前棋位對象的背景圖片設置為當前用戶的棋色圖片并且調(diào)用當前棋位的flicker函數(shù)閃爍提示。然后,給棋位添加鼠標離開事件,首先判斷當前棋位是否存在flicker對象,如果存在則調(diào)用當前棋位的removeFlicker函數(shù)移除閃爍提示,否則不做任何處理最后,給棋位添加鼠標落下事件,首先判斷游戲是否已經(jīng)開始如果游戲還未開始調(diào)用系統(tǒng)內(nèi)置函數(shù)alert提示游戲還未開始,否則判斷當前棋位是否已經(jīng)存在,如果存在不作出任何提示否則創(chuàng)建落子聲音通過內(nèi)置文檔對象的元素創(chuàng)建方法創(chuàng)建一個音頻元素對象,通過音頻元素對象的路徑屬性將資源文件中的聲音文件加載進去,接著將當前棋位對象設置為已存在,并且標記點前棋位的樣色屬性標志位當前落子用戶執(zhí)棋色,同時判斷悔棋隊列中是否為空如果不為空則取消悔棋隊列中的閃爍方法,并且將悔棋隊列一次遞推,將當前棋位對象插入到首位。然后調(diào)用checkWin函數(shù)檢測當前落子是否構(gòu)成勝利隊列,如果成功則調(diào)用游戲結(jié)束函數(shù),否則將下棋權(quán)限交給對方,取消自己用戶角色提示燈,開啟對方角色提示燈3.2按鈕的功能的實現(xiàn)在html網(wǎng)頁中有好幾種按鈕,我選擇了比較通用的按鈕<button>,通過css屬性設置他們的屬性,并且在按鈕上添加文字和事件。

3.2.1開始游戲功能按鈕開始游戲按鈕功能是進行本游戲的入口,在啟動游戲之后,當點擊開始游戲功能之后,方能進行游戲。要生成開始按鈕首先得穿件一個button,通過document.createElement("button");為以后方便使用可以將創(chuàng)建的按鈕賦值給star,創(chuàng)建一個按鈕對象然后在在按鈕上添加文字star.innerHTML="開始<br/>游戲";為了使得按鈕在預先設定的地方我們需要給按鈕添加一些屬性position="absolute"; left="20px";top="0px";為進一步給開始按鈕美化,通過backgroundImage="url('img/desk.png')";加載資源文件夾中的圖片給按鈕,生成按鈕如圖3-3:圖3-33.2.2我要悔棋功能按鈕悔棋按鈕功能是在游戲過程中出于疏忽不小心下錯了棋,通過點擊該按鈕退回到上一步,也就是相當于回溯,為了游戲的公平起見,悔棋只能退回一步。要生成悔棋按鈕首先得穿件一個button,通過document.createElement("button");為以后方便使用可以將創(chuàng)建的按鈕賦值給back,創(chuàng)建一個按鈕對象然后在在按鈕上添加文字back.innerHTML="我要<br/>悔棋";為了使得按鈕在預先設定的地方我們需要給按鈕添加一些屬性position="absolute"; left="90px";top="0px";為進一步給開始按鈕美化,通過backgroundImage="url('img/desk.png')";加載資源文件夾中的圖片給按鈕,生成按鈕如圖3-4:圖3-43.2.3游戲認輸功能按鈕認輸按鈕功能是在游戲過程中覺得已經(jīng)沒有回旋的余地了出于禮貌,我們可以通過點擊該按鈕直接認輸,也就是相當于自己輸了。要生成認輸按鈕首先得穿件一個button,通過document.createElement("button");為以后方便使用可以將創(chuàng)建的按鈕賦值給back,創(chuàng)建一個按鈕對象然后在在按鈕上添加文字defeat.innerHTML="游戲<br/>認輸";為了使得按鈕在預先設定的地方我們需要給按鈕添加一些屬性position="absolute"; left="160px";top="0px";為進一步給開始按鈕美化,通過backgroundImage="url('img/desk.png')";加載資源文件夾中的圖片給按鈕,生成按鈕如圖3-5:圖3-53.2.4游戲幫助功能按鈕幫助按鈕功能是在對游戲還未了解時,我們可以通過點擊該按鈕打開幫助面板,了解游戲的操作以及關于游戲的內(nèi)容,是玩家更快入手游戲。要生成幫助按鈕首先得穿件一個button,通過document.createElement("button");為以后方便使用可以將創(chuàng)建的按鈕賦值給help,創(chuàng)建一個按鈕對象然后在在按鈕上添加文字help.innerHTML="游戲<br/>幫助";為了使得按鈕在預先設定的地方我們需要給按鈕添加一些屬性position="absolute"; left="230px";top="0px";為進一步給開始按鈕美化,通過backgroundImage="url('img/desk.png')";加載資源文件夾中的圖片給按鈕,生成按鈕如圖3-6:圖3-6

3.3棋子的表示3.3.1五子棋的棋子屬性表示五子棋中有黑棋子和白棋子兩種棋子,將棋子作為對象看待,他們有自己的屬性,為了區(qū)別棋子顏色和更好的實現(xiàn),我為棋子中添加顏色屬性:obj.color=“white”,obj是棋子對象,color是屬性,“white”是顏色的屬性值為白色代表這個棋子為白棋并且添加圖片obj.backgroundImage=“url()”。3.3.2繪制棋子 在繪制棋盤的時候已經(jīng)給棋盤上的交叉點上繪制了一個透明的棋位,當棋子落入給位置的時候我只需要讓棋子在此位置中顯示,通過添加棋子圖片,為這個位置的棋子改變他們的屬性就可以讓棋子活靈活現(xiàn)的出現(xiàn)在這個位置。具體操作如下:定義整個程序都能使用的變量position通過內(nèi)置文檔對象的創(chuàng)建元素方法創(chuàng)建一個層對象;通過內(nèi)置方法with將position對象的樣式屬性傳入;設置寬度width屬性為30像素;設置定位position方式為絕對的定位方式absolute;設置居左left為當前位置減去16個像素點;設置高度height為30個像素點;設置背景圖片backgrounImage為空,以標識當前棋位還未落子””;設置背景圖片backgroundImage為不重復,防止圖片重疊出現(xiàn)no-repeat;設置背景圖片backgroundPosition保持在棋位對象的中間centercenter;10、定義棋位對象屬性行屬性標識當前棋位位置;11、定義棋位對象的屬性列標識棋位對象的位置;12、標識當前棋位對象的屬性是否存在屬性為不存在false;13、設置當前棋位對象的樣色為空14、設置其定時器為空如下圖3-7:圖3-73.4下棋表示游戲中通過鼠標左鍵單擊便可在棋盤中落子,當游戲還未開始的時候鼠標點擊在棋盤中是無效的,為了使游戲的人機友好交互,當游戲還未開始當用戶點擊棋盤時會提示游戲還未開始!如圖3-8圖3-8當游戲開始的時候,鼠標移動在棋盤之間,會在離鼠標最近的棋位中顯示一顆閃爍的棋子提示用戶鼠標左鍵點擊會在該位置落子,當鼠標在正確的位置點擊時則為落子完成,并且此時添加落子的聲音通過document.createElement("bgsound");加載資源文件夾中的落子聲音,接著通過document.body.appendChild(bgsound);啟用聲音,當用戶結(jié)束落子后,電腦“思索”一段時間之后也調(diào)用落子功能進行落子,以此輪流輪子進行游戲。

4五子棋的AI算法在此系統(tǒng)的AI算法中,每當玩家落棋子的時候,電腦便會計算出電腦自己的最佳的下棋位置以及敵方最佳的下棋的位置,在這個完整的思考中電腦首先會搜索棋盤中的每一個可下棋位置進行不同方向搜索,經(jīng)過確認了這個位置下棋價值后,最后才會找出棋盤中的下棋位置價值最大位置。最后才比較找出這次下棋會對自己最佳位置,以達到最佳下子和獲勝目的。這一章是既最多汗水與淚水的一章。4.1電腦的智能下棋每當玩家下棋之后,電腦會通過搜索判斷出玩家下棋位置是不是有一個五子形成相連,如果是有則gameOver(),并且會提示游戲結(jié)束。如果沒有形成則電腦會通過最優(yōu)的算法阻止玩家去取得勝或者是去攻擊玩家。在這一個過程中用了兩個價值對象,用來存放雙方最大下棋位置。此時電腦首先搜索對手的價值最大位,通過遍歷每一個棋位尋找匹配,當搜索到用戶棋子位置時采用橫豎撇捺四面八方的搜索方式,如圖4-1:圖4-1搜索完成后,再進入權(quán)值隊列中檢索當前位置的價值并且保存在一張表中,當循環(huán)遍歷整個棋盤之后得到一張權(quán)值分數(shù)表,顯示出每一個可下棋位置的權(quán)值分數(shù),緊接著通過以上描述的方式檢索自己的棋子得出自己的權(quán)值分數(shù)表,然后匹配出這兩張表中最佳落子位置,得到敵方和己方的最佳落子位置之后,進行對比,如果敵方落子價值大于我方落子價值則采取防御措施阻斷敵人落子位置,反之,則落到己方最佳落子位置達到最大進攻目的。以此一步步取得游戲的勝利。4.2游戲的勝負的判斷游戲的判斷的勝負也是這個游戲其中的最簡單的一個地方,因為我們有了前面下棋搜索先例。依據(jù)這五子棋的基本規(guī)則來看,游戲判斷下棋的位置再去搜索落子的四個方向后,判段是否這有五子的形成,如果要是沒有的話則輪到對方去下棋,如果有的話,那么游戲就會結(jié)束了,并且會度先連成這五子的一方獲會得了勝利。本系統(tǒng)中電腦主要是從落子的四個方向來搜索判斷哪一方優(yōu)先獲得勝利,這四個方向都是以一個棋子(當前落子)為中心橫豎撇捺這四個方向進行搜索判斷的,。東南西北東加上四個角角都是設置參數(shù)count(搜索次數(shù)),賦值為8,每判斷一次如果有相同的棋子,則--,出現(xiàn)5就break勝利。代碼實現(xiàn)如下: //是否結(jié)束此次檢查 if(foe+empty==2||allies==4){ if(allies==4){ type="lv1"; isBreak=true; }elseif(foe==2){ type="lv0"; }elseif(empty==2){ type="lv0"; }else{ type="lv0"; } weight.addWeight(type); break; } if(isBack){ maxCount=maxCount-count; count=0; space=-1; }每當用戶或者電腦落子完成之后都會調(diào)用檢測是否結(jié)束游戲的功能,此時通過檢索游戲中每一個己方游戲位置采用全搜索方式,一旦檢索到五子相連則馬上結(jié)束當前檢索,將此五子加載到成功隊列中,為成功隊列中每一個棋子附加閃爍功能,并提示哪方執(zhí)棋色贏得游戲并結(jié)束游戲,如圖4-2圖4-25軟件測試在任何的一個軟件會在投放市場的使用之前,他們都需要進行許多大量的測試。在這個階段需要我們需要尋找好的方案,這次測試的目的其實是盡量用不真確的方式去使用,這樣就可以找到跟多的錯誤,使得用戶在使用的過程中就算出錯了由于測試階段找出處理。本章的主要任務是對該系統(tǒng)功能進行了一個詳細的測試反饋,并且會對程序的內(nèi)部的數(shù)據(jù)進行一個有效的測試以及修改。5.1軟件的測試定義軟件的測試就是利用software檢測,首先正常測試,接著不正常測試,測試性能,總之胡亂弄,把自己當做沒有接觸過這類東西去使用,這些測試結(jié)束后需要生成一些報告。在執(zhí)行完好測試用例之后,就要逐條找錯位置,修改,保證軟件的健壯力。測試不僅僅可以用機器也可以手動,總之找出各種各樣的亂七八糟的問題,然后去解決。它是一個幫助識別和開發(fā)完成中的計算機軟件中完全的度以及quality軟件過程;就是softwarequalityassurance領域。hellobird也對軟件的測試的目的也做出以下觀點:(1)測試就是去胡搞,亂搞,一最差勁的使用方式使用;(2)如果你的測試有個性,說不定可以找出寶藏,也就是沒有被找到的錯誤;(3)如果找到以上說的就是一個好的成功的測試。5.2界面測試與用戶最親密最直接的地方就是界面了,能給用戶留下第一美好印象的地方也是界面了。這些美好界面是可以引導用戶使用和體驗的,起到跟隨設計思路的作用。古話說的好,人如其面,而界面就是軟件的臉。如果軟件的五官不好丑炸天又有誰會去理會呢,如果長的好看說不定就會有很多人圍觀了,要是做到能看能用那自然是好事,如果丑炸天一個再實用的強大的功能也是使得用戶敗興不想多看避而遠之。一個美好的按鈕的名稱也應該是一個易懂的,用詞也是準確的,不要上一些偏詞,難懂的字眼,并且要有著重,重點對象重點看待,看了就知道是什么最好了。如果能設計出不用查看幫助找人幫忙那就是一個成功的軟件餓了。通常,很多人會參考系統(tǒng)的設計主題,這樣會更接近美化。畢竟是一個團隊的作品,總會比自己的好。此系統(tǒng)的軟件的界面中有以下幾個重要的功能:開始游戲、游戲認輸、我要悔棋,游戲幫助。點擊“開始游戲”按鈕后,如果游戲已經(jīng)開始則會提示游戲還未結(jié)束,否則進入游戲開始動畫,一朵載著開始樣式的云,從左到右運動,在中間的時候停留片刻最后進入游戲狀態(tài),測試結(jié)果如圖5-1和圖5-2圖5-1圖5-2點擊“游戲認輸”按鈕后,如果游戲尚未開始則會提示游戲還未開始,否則游戲彈出提示框,提示點擊游戲結(jié)束執(zhí)棋色,并將游戲狀態(tài)轉(zhuǎn)為結(jié)束狀態(tài),測試結(jié)果如圖5-3:圖5-3點擊“我要悔棋”按鈕后,首先將查看悔棋隊列中是否存在,如果不存在程序則不作任何反應(游戲剛開始還未落子,當前已經(jīng)悔棋過一次),如果游戲尚未開始則會提示游戲還未開始,若以上條件都為開始結(jié)果如圖5-4和圖5-5: 圖5-4 圖5-5點擊“游戲幫助”按鈕,不管游戲是否開始或者結(jié)束都會彈出游戲幫助界面,此時幫助界面會覆蓋游戲界面,單再次點擊幫助面板是將回到游戲界面,測試結(jié)果如圖5-6:圖5-6經(jīng)過多次對界面的各個有效功能按鈕進行了全面的測試,是能夠正常的使用操作的,這些操作也是非常簡易明懂的,是一個非常適合首次接觸本游戲的用戶娛樂和學習之用的。

5.3數(shù)據(jù)的測試編程的階段,繪制棋子這一塊是花了不少的時間。由于這個棋盤是事先準備好了的,所以在此次編寫的過程中在棋子的位置上需要一些數(shù)據(jù),不過這些都是固定不變的一次確定,以后就不會改變,所以這些數(shù)據(jù)是不用測試的,也測試不了5.4用戶的驗收測試驗收測試就是東家拿到軟件后就像是真正使用一樣,進過不認同人的測試。它也是要回答我們這些開發(fā)的軟件的產(chǎn)品是否是已經(jīng)符合了預期的各種各樣的不同的各項要求,以及我們給我們的用戶能否接受的一系列問題等等。由于它不僅僅只是一個重要的檢驗這個也是一個軟件的某個方面的重要的質(zhì)量,而是要進行一個最全面最全面的質(zhì)量的檢驗,并且也是要決定這個軟件到底是否已經(jīng)是合格的軟件了。它雖然是在我測試的各個大部分的功能之中,自己也是認為是沒有任何大的問題了,但是測試的理論告訴了我們,沒有一個軟件是完美無缺的軟件。于是我又請了我宿舍以及好朋友的同學體驗了一下這個成果,如圖5-7:圖5-7經(jīng)過仔細的測試軟件是能夠正常運行和玩耍使用的!

總結(jié)經(jīng)過長達這幾個月努力之后,終于也是有了小小的成果了,由于這次開發(fā)時間是比較缺少的,有一些功能實現(xiàn)的不是很理想,雖然這個還不算那么完美,但在我的心里還是充滿了成就的愉悅感??!我為了很好的完成此次的這個畢設題目,我也是查看了不少的文獻資訊.由于本次我的課題是設計到了人工智能計算機博弈(AI)方面等的一些知識,所以呢我是專門花不少的時間去查閱以及去研究了這個方面的知識。而我的五子棋的實現(xiàn)也正是通過了第一種方法的實現(xiàn)的——-工程學方法。了解了這些都還是遠遠的不夠的,但是最重要是為了解我們計算機中博弈方面一些相關搜索算法。這些呢既是重點而且又是難點,不過最終我還是基本上是把它們學得明白了。由于我呢對javascript方面知識了解的不是多,因此所以也是花費了很多很多的時間去學習了解,可以這么說是邊學又是邊用了的。但我呢還是堅持下來了并且克服了許多種種的困難,取得了我理想成果。本次的做論文的經(jīng)歷也是會使我終身的受益,我也感受到了做論文也是要真真正正的用心去做的一件事情??!是真正的在自己的學習的過程中和研究張的過程,沒有了學習就是不可能有研究能力,沒有了自己的研究,也就不會有那么多的突破了,那也就是不叫什么論文了。在這次的經(jīng)歷上也是讓我在這以后的學習中更加的激勵我繼續(xù)的進步?;叵脒@短短的幾個月里,心里是感慨尤多啊。當時我拿到了這個題目的時后真的是不知到從哪里去下手,再在后來經(jīng)過我自己的努力研究了一些有關的資料以及程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論