




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 高級(jí)程序設(shè)計(jì) 設(shè)計(jì)報(bào)告題目: 五子棋小游戲 院系:專業(yè): 組長(zhǎng): 學(xué)號(hào): 組員1: 學(xué)號(hào): 組員2: 學(xué)號(hào): 組員3: 學(xué)號(hào): 組員4: 學(xué)號(hào): 指導(dǎo)教師: 康元元 高級(jí)程序設(shè)計(jì) 設(shè)計(jì)報(bào)告一、選題目的和意義:社會(huì)的飛速進(jìn)步要求我們的下一代必須掌握三種語(yǔ)言:即母語(yǔ),外語(yǔ),計(jì)算機(jī)語(yǔ)言。 學(xué)會(huì)與計(jì)算機(jī)打交道是現(xiàn)代各行各業(yè)必備的基本技能。而青少年時(shí)代是學(xué)習(xí)計(jì)算機(jī)的最好時(shí)機(jī),他們記憶力強(qiáng),反應(yīng)快。青少年時(shí)代學(xué)習(xí)的知識(shí)記是最較牢固的。 實(shí)踐證明:從小學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)知識(shí)與方法可以在智力上特別是科學(xué)創(chuàng)新能力與邏輯思維能力有明顯的提高。1. 程序設(shè)計(jì)的目標(biāo)是用某種計(jì)算機(jī)高級(jí)算法語(yǔ)言編
2、寫程序?qū)崿F(xiàn)特定的算法的功能。這一工作要具有強(qiáng)烈的創(chuàng)造意識(shí),為實(shí)現(xiàn)預(yù)想的功能要不斷地設(shè)想多種方案;同時(shí)又需要具有十分嚴(yán)謹(jǐn)?shù)倪壿嬐评恚拍艹晒Φ鼐帉懗龈咝А⒊錾某绦?。因此程序設(shè)計(jì)是獲得創(chuàng)造性修養(yǎng)與獲得正確思維方法的極好的科目。是進(jìn)行智力開(kāi)發(fā),培養(yǎng)良好學(xué)習(xí)方法的學(xué)科,特別是為理科的學(xué)習(xí)打下了一個(gè)良好的基礎(chǔ)2. 由于計(jì)算機(jī)程序設(shè)計(jì)與數(shù)學(xué)是緊密相互聯(lián)系而相輔相成的。它對(duì)數(shù)學(xué)的學(xué)習(xí)有著極大的促進(jìn)作用。許多數(shù)學(xué)問(wèn)題必須要用計(jì)算機(jī)才能最終解決問(wèn)題,反之計(jì)算機(jī)的編程常常要借助數(shù)學(xué)的思想與方法才能出色完成任務(wù)。計(jì)算機(jī)的出現(xiàn)也打破了利用數(shù)學(xué)解決問(wèn)題的常規(guī),降低了數(shù)學(xué)方法的難度,提高了精度與速度。事實(shí)上現(xiàn)在的數(shù)學(xué)正
3、在逐步地與計(jì)算機(jī)連成一體(學(xué)生的數(shù)學(xué)素養(yǎng)包含了計(jì)算機(jī)的編程能力)。3. 程序設(shè)計(jì)是學(xué)習(xí)其他學(xué)科的基礎(chǔ),不論是文科還是理科,特別是學(xué)習(xí)理科學(xué)科,計(jì)算機(jī)是一種必不可少的工具,有許多物理、化學(xué)、生物上的問(wèn)題都要求助于計(jì)算機(jī)才能獲得確切的解答,實(shí)際上機(jī)器人,動(dòng)畫制作等技術(shù)也要用到程序設(shè)計(jì)方法。4. 程序設(shè)計(jì)是青少年參加數(shù)學(xué)建?;顒?dòng)的重要工具,數(shù)學(xué)建模是一種利用數(shù)學(xué)方法與計(jì)算機(jī)程序設(shè)計(jì)解決各種問(wèn)題(包括數(shù)、理、化、社會(huì)、人文、經(jīng)濟(jì)等問(wèn)題)的科學(xué)活動(dòng)。目前正在世界各國(guó)推廣開(kāi)展這一活動(dòng)。這是一種培養(yǎng)青少年面向社會(huì)科學(xué)實(shí)踐的創(chuàng)造性活動(dòng)。學(xué)生姓名任務(wù)分工學(xué)生姓名任務(wù)分工學(xué)生姓名任務(wù)分工編程序調(diào)試找選題查資料寫報(bào)
4、告二、主要研究?jī)?nèi)容: 隨著IT技術(shù)的發(fā)展,很多日常生活中的游戲都被搬到了計(jì)算機(jī)里供大家?jiàn)蕵?lè),尤其是博弈類的棋類游戲,如中國(guó)的象棋,圍棋,五子棋等,今年來(lái)人們對(duì)人工智能技術(shù)的研究成果使得斯算計(jì)在這些博弈游戲中能戰(zhàn)勝很多玩家。其次,五子棋作為一個(gè)棋類競(jìng)技運(yùn)動(dòng),在民間十分流行,為了熟悉五子棋規(guī)則及技巧,以及研究簡(jiǎn)單的人工智能,決定用Java開(kāi)發(fā)五子棋游戲。主要完成人機(jī)對(duì)戰(zhàn)的功能。在人機(jī)對(duì)弈中通過(guò)深度搜索和估值模塊來(lái)提高電腦旗手的智能。分析估值模塊中的影響精準(zhǔn)性的幾個(gè)要素,以及提出一些提高精準(zhǔn)性的辦法,以及對(duì)它們搜索的節(jié)點(diǎn)數(shù)進(jìn)行比較,在這些算法的基礎(chǔ)山分析一些提高電腦AI方案,如遞歸算法、電
5、腦學(xué)習(xí)等。算法的研究有助于理解程序結(jié)構(gòu),增強(qiáng)邏輯思維能力,在其他人工智能方面也有很大的參考作用。近來(lái)隨著計(jì)算機(jī)的快速發(fā)展,各種各樣的電腦游戲?qū)映霾桓F,使得我們能有更多的娛樂(lè)項(xiàng)目,而棋類游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲水平頗高,大有與人腦分庭抗禮之勢(shì)。 本文結(jié)合五子棋這個(gè)游戲的特點(diǎn),將闡述單機(jī)版五子棋算法設(shè)計(jì),突出人工智能在博弈方面的應(yīng)用,旨在試驗(yàn)人工智能里的一些搜索算法,最終確定人工智能在未來(lái)各學(xué)科里的重要應(yīng)用性,人工智能是一門正在速度發(fā)展的新興的綜合性很強(qiáng)的邊緣科學(xué),它的中心任務(wù)是如何使計(jì)算機(jī)去做那些過(guò)去只能靠人的智力才能做的工作,而選五子棋游戲的開(kāi)
6、發(fā)則是利用計(jì)算機(jī)來(lái)實(shí)現(xiàn)它的人工智能,從而培養(yǎng)我們從事軟件開(kāi)發(fā)方面的能力. 三、設(shè)計(jì)的方法及步驟:方法: (1)在一個(gè)15*15的棋盤上,進(jìn)行五子棋的對(duì)戰(zhàn),不同的是這一次要求由程序代替你戰(zhàn)斗。 (2)根據(jù)系統(tǒng)提供的對(duì)戰(zhàn)信息,通過(guò)計(jì)算給出合理的下一步落子的位置。 (3)輸入、輸出數(shù)據(jù)格式 輸入格式的第一行為一個(gè)整數(shù)N,表示當(dāng)前已下的子數(shù),此后N行,每行一個(gè)落子的位置(第一個(gè)落子為黑子、第二個(gè)落子為白子、依次類推),位置由x,y表示(分別為落子的行坐標(biāo)、列坐標(biāo),取值范圍為014) 輸出格式為一坐標(biāo)x,
7、y,表示經(jīng)過(guò)計(jì)算得出的下一落子位置。(注意,不必標(biāo)明落黑子還是白子,因?yàn)槁浜谧舆€是白子從當(dāng)前已下的子數(shù)即可判斷) 例如(輸入數(shù)據(jù))4)設(shè)計(jì)時(shí)的注意事項(xiàng) 落子必須在棋盤有效范圍內(nèi),已經(jīng)落子的位置不能落子。 程序?qū)ο仁趾谄寤蚝笫职灼寰苡?jì)算正確的落子。 步驟:1、查找有關(guān)電話薄管理系統(tǒng)的相關(guān)資料;2、學(xué)習(xí)電話薄管理系統(tǒng)的相關(guān)資料,復(fù)習(xí)C語(yǔ)言;3、開(kāi)始進(jìn)行編程;4、上機(jī)進(jìn)行調(diào)試;5、進(jìn)行多次調(diào)試,處理出現(xiàn)的各種問(wèn)題,整理實(shí)驗(yàn)的步驟、數(shù)據(jù)、內(nèi)容、寫實(shí)驗(yàn)報(bào)告。6、整體過(guò)程中,用到了printheader(),printdata(),等函數(shù)從而設(shè)計(jì)完成了這個(gè)五子棋系統(tǒng)。四、實(shí)驗(yàn)設(shè)計(jì):/*/#in
8、clude<iostream>#include<cstdlib> using namespace std;const char outstr114="","","","","","","","","","",""int com1515,luozi1515;int c,d;void jushi() /這是判斷落子重要性的函數(shù) int x,y,i,m,n,l
9、ianzi1=0,lianzi2=0,life=0; memset(com,0,sizeof(com); for(x=0;x<=14;x+) for(y=0;y<=14;y+) if(luozixy=0) for(m=-1;m<=1;m+) for(n=-1;n<=1;n+) if(m!=0 | n!=0) for(i=1;i<=4;i+) if( x+i*m>=0 && x+i*m<=14 && y+i*n>=0 && y+i*n<=14 && luozix+i*my+i*n
10、=1 ) lianzi1+; else if(luozix+i*my+i*n=0) life+; break; else break; for(i=-1;i>=-4;i-) if( x+i*m>=0 && x+i*m<=14 && y+i*n>=0 && y+i*n<=14 && luozix+i*my+i*n=1 ) lianzi1+; else if(luozix+i*my+i*n=0) life+; break; else break; if(lianzi1=1) comxy+=1; else
11、if(lianzi1=2) if(life=1) comxy+=5; else if(life=2) comxy+=10; else if(lianzi1=3) if(life=1) comxy+=20; else if(life=2) comxy+=100; else if(lianzi1=4) comxy+=500; life=0; for(i=1;i<=4;i+) if( x+i*m>=0 && x+i*m<=14 && y+i*n>=0 && y+i*n<=14 && luozix+i*my+
12、i*n=2 ) lianzi2+; else if(luozix+i*my+i*n=0) life+; break; else break; for(i=-1;i>=-4;i-) if( x+i*m>=0 && x+i*m<=14 && y+i*n>=0 && y+i*n<=14 && luozix+i*my+i*n=2 ) lianzi2+; else if(luozix+i*my+i*n=0) life+; break; else break; if(lianzi2=1) comxy+=2; el
13、se if(lianzi2=2) if(life=1) comxy+=8; else if(life=2) comxy+=30; else if(lianzi2=3) if(life=1) comxy+=50; else if(life=2) comxy+=200; else if(lianzi2=4) comxy+=1000; lianzi1=0; lianzi2=0; life=0; void computer(int a1515) /這是電腦落子的函數(shù) int i,j,max=0; jushi(); for(i=0;i<=14;i+) for(j=0;j<=14;j+) if
14、(comij>max) max=comij; c=i; d=j; acd=10; luozicd=2;int panduan(int x,int y,int sum) /判斷勝負(fù)的函數(shù) int m,n,i,lianzi=0; for(m=-1;m<=1;m+) for(n=-1;n<=1;n+) if(m!=0 | n!=0) for(i=1;i<=4;i+) if( x+i*m>=0 && x+i*m<=14 && y+i*n>=0 && y+i*n<=14 && luozix+i
15、*my+i*n=sum ) lianzi+; else break; for(i=-1;i>=-4;i-) if( x+i*m>=0 && x+i*m<=14 && y+i*n>=0 && y+i*n<=14 && luozix+i*my+i*n=sum ) lianzi+; else break; if(lianzi>=4) return 1; else lianzi=0; return 0; int main() /主函數(shù) ,主要進(jìn)行人落子工作 system ("color 2f&
16、quot;); system ("mode con cols=50 lines=25"); system ("title 五子棋!"); int a1515=0,1,1,1,1,1,1,1,1,1,1,1,1,1,2, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4
17、,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,5, 6,7,7,7,7,7,7,7,7,7,7,7,7,7,8; int x,y,i,j; memset(luozi,0,sizeof(l
18、uozi); cout<<" 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4"<<endl; for(i=0;i<=14;i+) if(i!=0) cout<<endl; cout<<i%10; for(j=0;j<=14;j+) cout<<outstraij; cout<<endl; cout<<"更多程序登陸 或聯(lián)系QQ:742332134n" cout<<"請(qǐng)輸入您要下的棋子 行列 用空格隔開(kāi):" whil
19、e(cin>>x>>y) if(luozixy=0 && x>=0 && x<=14 && y>=0 && y<=14) axy=9; luozixy=1; if(panduan(x,y,1)=0) system ("cls"); computer(a); if(panduan(c,d,2)=0) cout<<" 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4"<<endl; for(i=0;i<=14
20、;i+) if(i!=0) cout<<endl; cout<<i%10; for(j=0;j<=14;j+) cout<<outstraij; cout<<endl; cout<<"您的棋子落在"<<x<<"行"<<" "<<y<<"列"<<endl; cout<<"電腦的棋子落在"<<c<<"行"&l
21、t;<" "<<d<<"列"<<endl; cout<<"請(qǐng)輸入您要下的棋子" else cout<<" 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4"<<endl; for(i=0;i<=14;i+) if(i!=0) cout<<endl; cout<<i%10; for(j=0;j<=14;j+) cout<<outstraij; cout<<endl; co
22、ut<<"電腦的棋子落在"<<c<<"行"<<" "<<d<<"列"<<endl; cout<<"電腦獲勝!"<<endl; break; else system ("cls"); /清屏 cout<<" 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4"<<endl; for(i=0;i<=14;i+) if
23、(i!=0) cout<<endl; cout<<i%10; for(j=0;j<=14;j+) cout<<outstraij; cout<<endl; cout<<"您獲勝啦!"<<endl; break; else cout<<"輸入錯(cuò)誤,請(qǐng)重新輸入:"<<endl; system ("title 游戲結(jié)束,謝謝使用!"); system ("color 03"); cout<<"游戲結(jié)束,謝謝使用"<<endl; system("pause
溫馨提示
- 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)貿(mào)英文合同范例
- 2025年玉樹(shù)貨車上崗證理論模擬考試題庫(kù)
- 中信銀行抵押合同范本
- 代為追償服務(wù)合同范本
- 綿陽(yáng)水下安裝拆除施工方案
- 倉(cāng)庫(kù)保管合同范本
- 修路建房合同范本
- 書籍稿件出版合同范本
- 農(nóng)村宅基地分割合同范本
- 勘查委托合同范本
- 2025年度個(gè)人住房買賣合同(帶家居家具)
- 生產(chǎn)車間布局優(yōu)化與現(xiàn)場(chǎng)改善的策略研究
- 外研版(三起)小學(xué)英語(yǔ)三年級(jí)下冊(cè)Unit 1 Animal friends Get ready start up 課件
- (新版)廣電全媒體運(yùn)營(yíng)師資格認(rèn)證考試復(fù)習(xí)題庫(kù)(含答案)
- 保安員資格考試復(fù)習(xí)題庫(kù)及答案(800題)
- 《公路建設(shè)項(xiàng)目文件管理規(guī)程》
- 2024年法律職業(yè)資格考試(試卷一)客觀題試卷與參考答案
- 春節(jié)文化研究手冊(cè)
- 2016-2023年婁底職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 安全生產(chǎn)重大事故隱患排查報(bào)告表
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)教案(完整版)教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論