歡樂(lè)五子棋課程設(shè)計(jì)報(bào)告_第1頁(yè)
歡樂(lè)五子棋課程設(shè)計(jì)報(bào)告_第2頁(yè)
歡樂(lè)五子棋課程設(shè)計(jì)報(bào)告_第3頁(yè)
歡樂(lè)五子棋課程設(shè)計(jì)報(bào)告_第4頁(yè)
歡樂(lè)五子棋課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算機(jī)學(xué)院信息管理與信息系統(tǒng)專(zhuān)業(yè)《管理信息系統(tǒng)課程設(shè)計(jì)》報(bào)告〔2010/2011學(xué)年第一學(xué)期〕學(xué)生姓名:學(xué)生班級(jí):學(xué)生學(xué)號(hào):指導(dǎo)教師:2011年1月15日目錄7150第一章課程設(shè)計(jì)目的和要求 1303251.1課程設(shè)計(jì)目的 1189891.2課程設(shè)計(jì)要求 123121第二章課程設(shè)計(jì)任務(wù)和內(nèi)容 2103482.1設(shè)計(jì)的主要工作 284992.2系統(tǒng)設(shè)計(jì)原那么 212677第三章詳細(xì)設(shè)計(jì)說(shuō)明 3258013.1游戲分析和介紹 3250243.3文字說(shuō)明 472383.5主循環(huán)控制模塊 5141793.6對(duì)方和己方下子 5105423.7盤(pán)面分析填寫(xiě)棋型表 5247893.8勝負(fù)判斷 5203463.9程序流程圖 619629第四章軟件使用說(shuō)明 871334.1測(cè)試方案 8131584.2限制條件 114401第五章課程設(shè)計(jì)心得體會(huì) 1212178附錄1:參考文獻(xiàn) 1332342附錄2:程序清單 14歡樂(lè)五子棋第一章課程設(shè)計(jì)目的和要求通過(guò)此次課程設(shè)計(jì),進(jìn)一步加深對(duì)C++語(yǔ)言和運(yùn)用的了解,將理論知識(shí)運(yùn)用于開(kāi)發(fā)的實(shí)踐,并在實(shí)踐中逐步掌握軟件工具的使用。穩(wěn)固已經(jīng)學(xué)習(xí)過(guò)的C++理論知識(shí);進(jìn)一步學(xué)習(xí)程序設(shè)計(jì)、程序調(diào)試的能力;進(jìn)一步學(xué)習(xí)面向?qū)ο缶幊痰闹R(shí)和程序調(diào)試的能力;增強(qiáng)VisualC++編程環(huán)境的應(yīng)用能力掌握并且熟練應(yīng)用《C++程序設(shè)計(jì)》中所學(xué)知識(shí)。掌握函數(shù)功能的劃分方法,并運(yùn)用此方法解決問(wèn)題。學(xué)會(huì)程序測(cè)試方案的制定,并且實(shí)現(xiàn)程序的測(cè)試。通過(guò)此次實(shí)踐,積累經(jīng)驗(yàn),提高分析和解決問(wèn)題的能力。另外,能夠運(yùn)用所學(xué)知識(shí)了解五子棋游戲制作的結(jié)構(gòu),將所學(xué)知識(shí)用于實(shí)踐中。1〕在了解課程設(shè)計(jì)要求的情況下,運(yùn)用C++編一個(gè)關(guān)于五子棋的程序,并可以實(shí)現(xiàn)相關(guān)功能。2〕在課程設(shè)計(jì)的過(guò)程中,難免會(huì)遇到一些困難和錯(cuò)誤,這就要求自己在遇到困難時(shí)學(xué)會(huì)查找和解決,并向同學(xué),老師請(qǐng)教。最后不能解決的問(wèn)題要如實(shí)反映。3〕在整個(gè)過(guò)程中,需要設(shè)計(jì)者獨(dú)立完成,不得抄襲,養(yǎng)成獨(dú)立思考的能力。課程設(shè)計(jì)任務(wù)和內(nèi)容(1)總體設(shè)計(jì):包括功能結(jié)構(gòu)圖和系統(tǒng)流程圖的設(shè)計(jì)〔包含五子棋游戲的各種功能步驟〕。

(2)細(xì)節(jié)局部:實(shí)現(xiàn)人人對(duì)弈和人機(jī)對(duì)弈的要求,并且對(duì)輸入的內(nèi)容判斷棋盤(pán)是否已滿(mǎn),判斷輸入坐標(biāo)〔下棋的位置〕是否已有棋子,如果有就提示重下,判斷是否勝利,再者是循環(huán)整個(gè)游戲或者換成人人對(duì)弈或者人機(jī)對(duì)弈,可按玩家意愿選擇,并且可選是自己先玩還是電腦先玩?!?〕程序的運(yùn)行:編譯后的游戲按規(guī)那么步驟的將數(shù)據(jù)輸入,然后按照提示就可以將游戲進(jìn)行,并將其剪切出來(lái)。系統(tǒng)設(shè)計(jì)原那么(1)系統(tǒng)性。系統(tǒng)是作為統(tǒng)一整體而存在的,因此,在系統(tǒng)設(shè)計(jì)中,要從整個(gè)系統(tǒng)的角度進(jìn)行考慮,系統(tǒng)的代碼要統(tǒng)一,設(shè)計(jì)標(biāo)準(zhǔn)要標(biāo)準(zhǔn),傳遞語(yǔ)言要盡可能一致,對(duì)系統(tǒng)的數(shù)據(jù)采集要做到數(shù)出一處、全局共享,使一次輸入得到屢次利用。

(2)靈活性。為保持系統(tǒng)的長(zhǎng)久生命力,要求系統(tǒng)具有很強(qiáng)的環(huán)境適應(yīng)性,為此,系統(tǒng)應(yīng)具有較好的開(kāi)放性和結(jié)構(gòu)的可變性。在系統(tǒng)設(shè)計(jì)中,應(yīng)盡量采用模塊化結(jié)構(gòu),提高各模塊的獨(dú)立性,盡可能減少模塊間的數(shù)據(jù)耦合,使各子系統(tǒng)間的數(shù)據(jù)依賴(lài)減至最低限度。

(3)可靠性。可靠性是指系統(tǒng)抵御外界干擾的能力及受外界干擾時(shí)的恢復(fù)能力。一個(gè)一起玩家有樂(lè)趣的游戲系統(tǒng)必須具有較高的可靠性,如循環(huán)連接、檢錯(cuò)及糾錯(cuò)能力、簡(jiǎn)明易懂等。

(4)標(biāo)準(zhǔn)性。游戲的運(yùn)用以吸引玩家的樂(lè)趣為前提;一方面,系統(tǒng)設(shè)計(jì)中應(yīng)盡量防止不必要的復(fù)雜化,另一方面各模塊應(yīng)盡量簡(jiǎn)潔,以便縮短處理流程。第三章詳細(xì)設(shè)計(jì)說(shuō)明3.1游戲分析和介紹基于本游戲,首先得為整個(gè)棋盤(pán)建立一張表格用以記錄棋子信息,我們使用一個(gè)20*20的二維數(shù)組

Table[20][20]

(20*20是五子棋棋盤(pán)的大小),數(shù)組的每一個(gè)元素對(duì)應(yīng)棋盤(pán)上的一個(gè)交叉點(diǎn),用點(diǎn)表示空位、“1”和“2”在剛開(kāi)始表示人機(jī)對(duì)弈或者人人對(duì)弈,之后表示人或電腦誰(shuí)先下棋。通過(guò)輸入姓名來(lái)確定玩家身份,這張表也是今后分析的根底。在此還要為兩個(gè)玩家雙方各建立一張棋型表Computer[20][20][4]和Player[20][20][4],用來(lái)存放棋型數(shù)據(jù)歡樂(lè)五子棋歡樂(lè)五子棋人人對(duì)弈或人機(jī)對(duì)弈判斷棋盤(pán)是否已滿(mǎn)雙方交替循環(huán)下棋對(duì)輸入內(nèi)容判斷并提示錯(cuò)誤判斷哪方獲勝循環(huán)進(jìn)行游戲圖3-13.3文字說(shuō)明該五子棋程序根本上實(shí)現(xiàn)了五子棋的游戲功能,有雙方下棋的棋盤(pán)界面及最終判定結(jié)果的界面。同時(shí)該游戲采用二維坐標(biāo)實(shí)現(xiàn),明了易懂,方便玩家在游戲過(guò)程中的根本操作,使游戲更加簡(jiǎn)便。在細(xì)節(jié)方面,該系統(tǒng)判別棋面狀況,如已有棋,那么提示重下,當(dāng)棋盤(pán)滿(mǎn)時(shí),判斷為平局。該游戲根本實(shí)現(xiàn)了歡樂(lè)五子棋游戲的一些要求和特征。在游戲的源程序及文檔方面,我們也嚴(yán)格遵守軟件工程思想,立足實(shí)驗(yàn)要求,確定任務(wù),需求分析,設(shè)計(jì)和編碼,每個(gè)步驟力求清晰易懂。原代碼注釋詳盡,各功能模塊功能清楚,可移植性強(qiáng)。當(dāng)然該系統(tǒng)也有很多缺乏的地方,第一次進(jìn)行獨(dú)立的課程設(shè)計(jì),也有很多細(xì)節(jié)方面是考慮不到的,這款游戲也是在不斷的調(diào)試和修改中產(chǎn)生和完善的。希望老師能夠指出缺乏,幫助我不斷提高。3.4初始化:首先,建立盤(pán)面數(shù)組Table[20][20]、對(duì)戰(zhàn)雙方的棋型表Computer[20][20][4]和Player[20][20][4]并將它們清零以備使用;然后初始化顯示器、鍵盤(pán)、鼠等輸入輸出設(shè)備并在屏幕上畫(huà)出棋盤(pán)?!财灞P(pán)已經(jīng)顯示〕主循環(huán)控制模塊控制下棋順序,當(dāng)輪到某方下子時(shí),負(fù)責(zé)將程序轉(zhuǎn)到相應(yīng)的模塊中去,主要擔(dān)當(dāng)一個(gè)調(diào)度者的角色。下子當(dāng)輪到對(duì)方下時(shí),您通過(guò)鍵盤(pán)輸入0到20的數(shù)字,回車(chē)鍵后在棋盤(pán)上落子,程序會(huì)根據(jù)該點(diǎn)的位置,在Table[20][20]數(shù)組的相應(yīng)地方記錄,以說(shuō)明該子是玩家下的或者電腦下的,然后提示另一玩家下子。將自己和對(duì)手調(diào)換一下位置,然后用上面的方法來(lái)預(yù)測(cè)對(duì)手的棋,這樣既可以防住對(duì)手巧妙的攻擊,又能待機(jī)發(fā)動(dòng)還擊,玩家假設(shè)想贏的游戲,必須認(rèn)真考慮每一步,在人機(jī)對(duì)弈中,要注意防范,也要考慮下一步對(duì)方怎么走,否那么容易輸。盤(pán)面分析填寫(xiě)棋型表您在下五子棋時(shí),一定會(huì)先根據(jù)棋盤(pán)上的情況,找出當(dāng)前最重要的一些點(diǎn)位,如“活三”、“沖四”等;然后再在其中選擇落子點(diǎn)。先來(lái)分析己方的棋型,我們從棋盤(pán)左上角出發(fā),向右逐行搜索,當(dāng)遇到一個(gè)空白點(diǎn)時(shí),以它為中心向左挨個(gè)查找,如果遇到己方的子那么記錄然后繼續(xù),如果遇到對(duì)方的子、空白點(diǎn)或邊界就停止查找。左邊完成后再向右進(jìn)行同樣的操作;最后把左右兩邊的記錄合并起來(lái),得到的數(shù)據(jù)就是該點(diǎn)橫向上的棋型,然后把棋型的編號(hào)填入到Computer[x][y][n]中就行了〔x、y代表坐標(biāo),n=0、1、2、3分別代表橫、豎、左斜、右斜四個(gè)方向〕。而其他三個(gè)方向的棋型也可用同樣的方法得到,當(dāng)搜索完整張棋盤(pán)后,己方棋型表也就填寫(xiě)完畢了。然后再用同樣的方法填寫(xiě)對(duì)方棋型表。勝負(fù)判斷當(dāng)某方連成五子〔包括橫,豎,斜〕即獲勝,當(dāng)某方獲勝時(shí),輸出該方獲勝,游戲結(jié)束,并進(jìn)行下一輪游戲,提示摁1或2來(lái)進(jìn)行人機(jī)或者人人對(duì)弈。本程序定義了各種操作函數(shù)、各種狀態(tài)判定宏,思想明確,思路清晰。各個(gè)判斷選擇了不同路徑,因此繼續(xù)進(jìn)行或輸出結(jié)果。本流程圖中,“循環(huán)”的利用非常直接和清晰,雙方交替下棋,以及人機(jī)對(duì)弈,因此循環(huán)往復(fù)。最終決出勝負(fù)或最終平局。分析時(shí),也考慮了許多種情況,針對(duì)各個(gè)情況均作出了相對(duì)措施和解決方案。對(duì)弈方式對(duì)弈方式人人對(duì)弈人機(jī)對(duì)弈輸玩家名先下方入子先下方入子此位是否有子下子棋盤(pán)是否滿(mǎn)另一方下棋提示重下輸出該方勝勝獲勝結(jié)束開(kāi)始玩家姓名輸1人先下下下2電腦先先判斷是否獲勝平局1200退出00退出00退出是否是否是否圖3-2軟件使用說(shuō)明如圖4-1運(yùn)行結(jié)果出示圖,輸入數(shù)字進(jìn)行游戲的開(kāi)始或者退出圖4-1如圖4-2為人機(jī)對(duì)弈中,玩家自己選擇是玩家先下棋或者電腦先下棋圖4-2如圖4-3為人人對(duì)弈過(guò)程,輸入玩家的姓名圖4-3圖4-4為人人對(duì)弈中,假設(shè)輸入玩家zhangbei和jinwubing,在對(duì)弈之后,zhangbei五子相連,輸出“zhangbei獲勝,游戲結(jié)束”可繼續(xù)進(jìn)行游戲。圖4-4如圖4-5為人機(jī)對(duì)弈中,最后玩家五子相連,輸出了“玩家獲勝,游戲結(jié)束”,可繼續(xù)進(jìn)行游戲。圖4-5在運(yùn)行該程序時(shí),在人人對(duì)弈中,當(dāng)涉及到1*1時(shí),需要6個(gè)子才能算獲勝,這是本程序的一個(gè)缺陷。另外,在本程序中涉及到許多函數(shù)都沒(méi)學(xué)過(guò),對(duì)這次的設(shè)計(jì)是一個(gè)很大的挑戰(zhàn),但在同學(xué)老師的幫助下最終克服了許多困難。第五章課程設(shè)計(jì)心得體會(huì)在本次課程設(shè)計(jì)中,不僅讓我認(rèn)識(shí)到自己學(xué)習(xí)上的缺乏,也通過(guò)請(qǐng)教其他同學(xué)和老師學(xué)會(huì)了修改并運(yùn)行程序,還讓自己復(fù)習(xí)了編程的知識(shí),對(duì)遇到的眾多問(wèn)題,通過(guò)思考,耐心動(dòng)手解決問(wèn)題,在課程設(shè)計(jì)期間我也學(xué)到了課本中很多學(xué)不到的知識(shí),明白了只有通過(guò)自己不斷的動(dòng)手實(shí)踐才能找出缺乏、找出問(wèn)題和提高自己能力,發(fā)現(xiàn)課程設(shè)計(jì)是我學(xué)習(xí)和掌握專(zhuān)業(yè)知識(shí)的好方法,讓自己思維變得活潑,也會(huì)看懂,學(xué)明白程序問(wèn)題,本次受益匪淺。最后,感謝王俊艷老師教我們《數(shù)據(jù)結(jié)構(gòu)》這門(mén)課程,交給我很多程序設(shè)計(jì)的思想和知識(shí)。這次課程設(shè)計(jì)最要感謝老師和同學(xué)為我提供了這么多珍貴的意見(jiàn)并對(duì)我的報(bào)告做了很多的批示,給我講解了很多我不懂得知識(shí)及應(yīng)用方法,為我更好更快的完成報(bào)告付出了辛勤和汗水。附錄1:參考文獻(xiàn)1〕嚴(yán)蔚敏吳偉民《數(shù)據(jù)結(jié)構(gòu)》北京清華大學(xué)出版社2010年2〕蘇仕華魏韋巍王敬生劉燕君《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)〔第二版〕》北京機(jī)械工業(yè)出版社2010年。3〕譚浩強(qiáng)《C程序設(shè)計(jì)〔第二版〕》北京清華大學(xué)出版社1999年4〕譚浩強(qiáng)《C++程序設(shè)計(jì)》北京清華大學(xué)出版社2009年5〕丁展《Visual

C++游戲開(kāi)發(fā)技術(shù)與實(shí)例》北京人民郵電出版社2005年附錄2:程序清單#include<iostream>#include<memory.h>#include<string>usingnamespacestd;constintN=20;//定義棋盤(pán)規(guī)模intpace=0;//統(tǒng)計(jì)步數(shù)constcharchess[2]={'X','O'};//定義數(shù)組顯示棋子顏色intlastI=0;intmaxI=9,maxJ=9;intlastJ=0;boolSystemError=0;voidinitchess(char*A,intN)//該函數(shù),初始化棋盤(pán){inti,j;for(i=0;i<N;i++){for(j=0;j<N;j++){A[i*N+j]='.';}}return;}voidprintchess(char*A,intN)//該函數(shù),打印棋盤(pán){inti,j;for(i=0;i<N;i++){if(i<10)cout<<""<<i;elsecout<<i;}cout<<N<<endl;for(i=0;i<N;i++){if(i<9)cout<<""<<i+1<<"";elsecout<<i+1<<"";for(j=0;j<N;j++){cout<<A[i*N+j];cout<<"";}cout<<endl;}return;}voidplayer(char*A,intN,intcolor)//該函數(shù)為玩家落子{inti,j;while(1){if(color==0)cout<<"請(qǐng)黑色方輸入落子坐標(biāo),格式為xy"<<endl;elsecout<<"請(qǐng)白色方輸入落子坐標(biāo),格式為xy"<<endl;cout<<"輸入00退出游戲"<<endl;cin>>j>>i;if(j==0&&i==0){if(color==0)cout<<"黑色方放棄,白子獲勝了,祝賀您!"<<endl;elsecout<<"白色方放棄,黑子獲勝了,祝賀您!"<<endl;SystemError=1;return;}i--;j--;if(i<0||i>20||j<0||j>20)cout<<"請(qǐng)您輸入1--20的數(shù)"<<endl;elseif(A[i*N+j]!='.')cout<<"已有棋子,請(qǐng)您重下"<<endl;elsebreak;}A[i*N+j]=chess[color];lastI=i;lastJ=j;pace++;return;}voidcomputeValue(intcolor,char*A){inti=0,j=0,maxmax=0,mark[400];for(i=0;i<N;i++){for(j=0;j<N;j++)mark[i*N+j]=0;}//初始分?jǐn)?shù)為0charI;charU;if(color==0){I='X';U='O';}else{I='O';U='X';}for(i=1;i<N;i++){for(j=1;j<N;j++){if(A[i*N+j]=='.'){if((A[(i-1)*N+j]==I)||(A[(i+1)*N+j]==I)||(A[i*N+(j+1)]==I)||(A[i*N+(j-1)]==I)){mark[i*N+j]+=9;}//旁邊有己方的棋if((A[(i-1)*N+j]==U)||(A[(i+1)*N+j]==U)||(A[i*N+(j+1)]==U)||(A[i*N+(j-1)]==U)){mark[i*N+j]+=10;}//旁邊有對(duì)方的棋if((A[(i-1)*N+j]==I&&A[(i-2)*N+j]==I)||(A[i*N+(j-1)]==I&&A[i*N+(j-2)]==I)||(A[i*N+(j+1)]==I&&A[i*N+(j+2)]==I)||(A[(i+1)*N+j]==I&&A[(i+2)*N+j]==I)||(A[(i-1)*N+(j+1)]==I&&A[(i-2)*N+(j+2)]==I)||(A[(i+1)*N+(j+1)]==I&&A[(i+2)*N+(j+2)]==I)||(A[(i-1)*N+(j-1)]==I&&A[(i-2)*N+(j-2)]==I)||(A[(i+1)*N+(j-1)]==I&&A[(i+2)*N+(j-2)]==I)){mark[i*N+j]+=70;}//己方##if((A[(i-1)*N+j]==U&&A[(i-2)*N+j]==U)||(A[i*N+(j-1)]==U&&A[i*N+(j-2)]==U)||(A[i*N+(j+1)]==U&&A[i*N+(j+2)]==U)||(A[(i+1)*N+j]==U&&A[(i+2)*N+j]==U)||(A[i-1*N+j+1]==U&&A[i-2*N+j+2]==U)||(A[i+1*N+j+1]==U&&A[i+2*N+j+2]==U)||(A[i-1*N+j-1]==U&&A[i-2*N+j-2]==U)||(A[i+1*N+j-1]==U&&A[i+2*N+j-2]==U)){mark[i*N+j]+=50;}//對(duì)方00if((A[i-1*N+j]==I&&A[i+1*N+j])||(A[i*N+j-1]==I&&A[i*N+j+1]==I)||(A[i-1*N+j-1]==I&&A[i+1*N+j+1]==I)||(A[i-1*N+j+1]==I&&A[i+1*N+j-1]==I)){mark[i*N+j]+=75;}//己方##if((A[i-1*N+j]==U&&A[i+1*N+j]==U)||(A[i*N+j-1]==U&&A[i*N+j+1]==U)||(A[i-1*N+j-1]==U&&A[i+1*N+j+1]==U)||(A[i-1*N+j+1]==U&&A[i+1*N+j-1]==U)){mark[i*N+j]+=55;}//對(duì)方00if((A[(i-3)*N+j]==I&&A[(i-2)*N+j]==I&&A[(i-1)*N+j]==I)||(A[(i+1)*N+j]==I&&A[(i+2)*N+j]==I&&A[(i+3)*N+j]==I)||(A[i*N+(j-3)]==I&&A[i*N+(j-2)]==I&&A[i*N+(j-1)]==I)||(A[i*N+(j+1)]==I&&A[i*N+(j+2)]==I&&A[i*N+(j+3)]==I)||(A[(i-3)*N+(j-3)]==I&&A[(i-2)*N+(j-2)]==I&&A[(i-1)*N+(j-1)]==I)||(A[(i+3)*N+(j+3)]==I&&A[(i+2)*N+(j+2)]==I&&A[(i+1)*N+(j+1)]==I)||(A[(i-3)*N+(j+3)]==I&&A[(i-2)*N+(j+2)]==I&&A[(i-1)*N+(j+1)]==I)||(A[(i+3)*N+(j-3)]==I&&A[(i+2)*N+(j-2)]==I&&A[(i+1)*N+(j-1)]==I)){mark[i*N+j]+=100;}//己方###if((A[(i-3)*N+j]==U&&A[(i-2)*N+j]==U&&A[(i-1)*N+j]==U)||(A[(i+1)*N+j]==U&&A[(i+2)*N+j]==U&&A[(i+3)*N+j]==0)||(A[i*N+(j-3)]==U&&A[i*N+(j-2)]==U&&A[i*N+(j-1)]==U)||(A[i*N+(j+1)]==U&&A[i*N+(j+2)]==U&&A[i*N+(j+3)]==U)||(A[(i-3)*N+(j-3)]==U&&A[(i-2)*N+(j-2)]==U&&A[(i-1)*N+(j-1)]==U)||(A[(i+3)*N+(j+3)]==U&&A[(i+2)*N+(j+2)]==U&&A[(i+1)*N+(j+1)]==U)||(A[(i-3)*N+(j+3)]==U&&A[(i-2)*N+(j+2)]==U&&A[(i-1)*N+(j+1)]==U)||(A[(i+3)*N+(j-3)]==U&&A[(i+2)*N+(j-2)]==U&&A[(i+1)*N+(j-1)]==U)){mark[i*N+j]+=200;}//對(duì)方000if((A[(i+1)*N+j]==I&&A[(i-2)*N+j]==I&&A[(i-1)*N+j]==I)||(A[(i+1)*N+j]==I&&A[(i+2)*N+j]==I&&A[(i-1)*N+j]==I)||(A[i*N+(j+1)]==I&&A[i*N+(j-2)]==U&&A[i*N+(j-1)]==I)||(A[i*N+(j+1)]==I&&A[i*N+(j+2)]==U&&A[i*N+(j-1)]==I)||(A[(i+1)*N+(j+1)]==I&&A[(i-2)*N+(j-2)]==I&&A[(i-1)*N+(j-1)]==I)||(A[(i-1)*N+(j-1)]==I&&A[(i+2)*N+(j+2)]==I&&A[(i+1)*N+(j+1)]==I)||(A[(i+1)*N+(j-1)]==I&&A[(i-2)*N+(j+2)]==I&&A[(i-1)*N+(j+1)]==I)||(A[(i-1)*N+(j+1)]==I&&A[(i+2)*N+(j-2)]==I&&A[(i+1)*N+(j-1)]==I)){mark[i*N+j]+=300;}//己方###if((A[(i+1)*N+j]==U&&A[(i-2)*N+j]==U&&A[(i-1)*N+j]==U)||(A[(i+1)*N+j]==U&&A[(i+2)*N+j]==U&&A[(i-1)*N+j]==U)||(A[i*N+(j+1)]==U&&A[i*N+(j-2)]==U&&A[i*N+(j-1)]==U)||(A[i*N+(j+1)]==U&&A[i*N+(j+2)]==U&&A[i*N+(j-1)]==U)||(A[(i+1)*N+(j+1)]==U&&A[(i-2)*N+(j-2)]==U&&A[(i-1)*N+(j-1)]==U)||(A[(i-1)*N+(j-1)]==U&&A[(i+2)*N+(j+2)]==U&&A[(i+1)*N+(j+1)]==U)||(A[(i+1)*N+(j-1)]==U&&A[(i-2)*N+(j+2)]==U&&A[(i-1)*N+(j+1)]==U)||(A[(i-1)*N+(j+1)]==U&&A[(i+2)*N+(j-2)]==U&&A[(i+1)*N+(j-1)]==U)){mark[i*N+j]+=400;}//對(duì)方000if((A[(i-4)*N+j]==I&&A[(i-3)*N+j]==I&&A[(i-2)*N+j]==I&&A[(i-1)*N+j]==I)||(A[(i+1)*N+j]==I&&A[(i+2)*N+j]==I&&A[(i+3)*N+j]==I&&A[(i+4)*N+j]==I)||(A[i*N+(j-4)]==I&&A[i*N+(j-3)]==I&&A[i*N+(j-2)]==I&&A[i*N+(j-1)]==I)||(A[i*N+(j+1)]==I&&A[i*N+(j+2)]==I&&A[i*N+(j+3)]==I&&A[i*N+(j+4)]==I)||(A[(i-4)*N+(j-4)]==I&&A[(i-3)*N+(j-3)]==I&&A[(i-2)*N+(j-2)]==I&&A[(i-1)*N+(j-1)]==I)||(A[(i+4)*N+(j+4)]==I&&A[(i+3)*N+(j+3)]==I&&A[(i+2)*N+(j+2)]==I&&A[(i+1)*N+(j+1)]==I)||(A[(i-4)*N+(j+4)]==I&&A[(i-3)*N+(j+3)]==I&&A[(i-2)*N+(j+2)]==I&&A[(i-1)*N+(j+1)]==I)||(A[(i+4)*N+(j-4)]==I&&A[(i+3)*N+(j-3)]==I&&A[(i+2)*N+(j-2)]==I&&A[(i+1)*N+(j-1)]==I)){mark[i*N+j]+=1000;}//己方####if((A[(i-4)*N+j]==U&&A[(i-3)*N+j]==U&&A[(i-2)*N+j]==U&&A[(i-1)*N+j]==U)||(A[(i+1)*N+j]==U&&A[(i+2)*N+j]==U&&A[(i+3)*N+j]==U&&A[(i+4)*N+j]==U)||(A[i*N+(j-4)]==U&&A[i*N+(j-3)]==U&&A[i*N+(j-2)]==U&&A[i*N+(j-1)]==U)||(A[i*N+(j+1)]==U&&A[i*N+(j+2)]==U&&A[i*N+(j+3)]==U&&A[i*N+(j+4)]==U)||(A[(i-4)*N+(j-4)]==U&&A[(i-3)*N+(j-3)]==U&&A[(i-2)*N+(j-2)]==U&&A[(i-1)*N+(j-1)]==U)||(A[(i+4)*N+(j+4)]==U&&A[(i+3)*N+(j+3)]==U&&A[(i+2)*N+(j+2)]==U&&A[(i+1)*N+(j+1)]==U)||(A[(i-4)*N+(j+4)]==U&&A[(i-3)*N+(j+3)]==U&&A[(i-2)*N+(j+2)]==U&&A[(i-1)*N+(j+1)]==U)||(A[(i+4)*N+(j-4)]==U&&A[(i+3)*N+(j-3)]==U&&A[(i+2)*N+(j-2)]==U&&A[(i+1)*N+(j-1)]==U)){mark[i*N+j]+=900;}//對(duì)方0000if(mark[i*N+j]>maxmax){maxmax=mark[i*N+j];maxI=i;maxJ=j;}}}}}voidcomputer(char*A,intN,intcolor)//值評(píng)估函數(shù){computeValue(color,A);A[maxI*N+maxJ]=chess[color];lastI=maxI;lastJ=maxJ;}boolcheck(char*A,intN)//該函數(shù),用于判斷是否連成五子{inti,j;intnum=0;for(i=lastI-1,j=lastJ;i>0;i--){if(A[i*N+j]==A[lastI*N+lastJ])num++;elsebreak;}for(i=lastI+1,j=lastJ;i<20;i++){if(A[i*N+j]==A[lastI*N+lastJ])num++;elsebreak;}if(num>=4)return1;num=0;for(i=lastI,j=lastJ-1;j>0;j--){if(A[i*N+j]==A[lastI*N+lastJ])num++;elsebreak;}for(i=lastI,j=lastJ+1;j<20;j++){if(A[i*N+j]==A[lastI*N+lastJ])num++;elsebreak;}if(num>=4)return1;num=0;for(i=lastI-1,j=lastJ+1;i>0&&j<20;i--,j++){if(A[i*N+j]==A[lastI*N+lastJ])num++;elsebreak;}for(i=lastI+1,j=lastJ-1;i<20&&j>0;i++,j--){if(A[i*N+j]==A[lastI*N+lastJ])num++;elsebreak;}if(num>=4)return1;num=0;for(i=lastI-1,j=lastJ-1;i>0&&j>0;i--,j--){if(A[i*N+j]==A[lastI*N+lastJ])num++;elsebreak;}for(i=lastI+1,j=lastJ+1;i<20&&j<20;i++,j++){if(A[i*N+j]==A[lastI*N+lastJ])num++;elsebreak;}if(num>=4)return1;elsereturn0;}voidPlay(char*A,intN,intinput)//游戲函數(shù){if(input==2){cout<<"請(qǐng)玩家1輸入姓名:"<<endl;stringname1="player1";cin>>name1;cout<<"請(qǐng)玩家2輸入姓名:"<<endl;stringname2="player2";cin>>name2;while(1){player(A,N,0);if(SystemError)return;system("cls");printchess(A,N);if(check(A,N)){cout<<name1<<"獲勝,游戲結(jié)束"<<endl;break;}if(pace==361){

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論