![高級程序設計五子棋_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5c99b460-6046-41df-bd92-21aa18aa993b/5c99b460-6046-41df-bd92-21aa18aa993b1.gif)
![高級程序設計五子棋_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5c99b460-6046-41df-bd92-21aa18aa993b/5c99b460-6046-41df-bd92-21aa18aa993b2.gif)
![高級程序設計五子棋_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5c99b460-6046-41df-bd92-21aa18aa993b/5c99b460-6046-41df-bd92-21aa18aa993b3.gif)
![高級程序設計五子棋_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5c99b460-6046-41df-bd92-21aa18aa993b/5c99b460-6046-41df-bd92-21aa18aa993b4.gif)
![高級程序設計五子棋_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/1/5c99b460-6046-41df-bd92-21aa18aa993b/5c99b460-6046-41df-bd92-21aa18aa993b5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 高級程序設計 設計報告題目: 五子棋小游戲 院系:專業(yè): 組長: 學號: 組員1: 學號: 組員2: 學號: 組員3: 學號: 組員4: 學號: 指導教師: 康元元 高級程序設計 設計報告一、選題目的和意義:社會的飛速進步要求我們的下一代必須掌握三種語言:即母語,外語,計算機語言。 學會與計算機打交道是現(xiàn)代各行各業(yè)必備的基本技能。而青少年時代是學習計算機的最好時機,他們記憶力強,反應快。青少年時代學習的知識記是最較牢固的。 實踐證明:從小學習計算機程序設計知識與方法可以在智力上特別是科學創(chuàng)新能力與邏輯思維能力有明顯的提高。1. 程序設計的目標是用某種計算機高級算法語言編
2、寫程序實現(xiàn)特定的算法的功能。這一工作要具有強烈的創(chuàng)造意識,為實現(xiàn)預想的功能要不斷地設想多種方案;同時又需要具有十分嚴謹?shù)倪壿嬐评?,才能成功地編寫出高效、出色的程序。因此程序設計是獲得創(chuàng)造性修養(yǎng)與獲得正確思維方法的極好的科目。是進行智力開發(fā),培養(yǎng)良好學習方法的學科,特別是為理科的學習打下了一個良好的基礎2. 由于計算機程序設計與數(shù)學是緊密相互聯(lián)系而相輔相成的。它對數(shù)學的學習有著極大的促進作用。許多數(shù)學問題必須要用計算機才能最終解決問題,反之計算機的編程常常要借助數(shù)學的思想與方法才能出色完成任務。計算機的出現(xiàn)也打破了利用數(shù)學解決問題的常規(guī),降低了數(shù)學方法的難度,提高了精度與速度。事實上現(xiàn)在的數(shù)學正
3、在逐步地與計算機連成一體(學生的數(shù)學素養(yǎng)包含了計算機的編程能力)。3. 程序設計是學習其他學科的基礎,不論是文科還是理科,特別是學習理科學科,計算機是一種必不可少的工具,有許多物理、化學、生物上的問題都要求助于計算機才能獲得確切的解答,實際上機器人,動畫制作等技術也要用到程序設計方法。4. 程序設計是青少年參加數(shù)學建?;顒拥闹匾ぞ?,數(shù)學建模是一種利用數(shù)學方法與計算機程序設計解決各種問題(包括數(shù)、理、化、社會、人文、經(jīng)濟等問題)的科學活動。目前正在世界各國推廣開展這一活動。這是一種培養(yǎng)青少年面向社會科學實踐的創(chuàng)造性活動。學生姓名任務分工學生姓名任務分工學生姓名任務分工編程序調試找選題查資料寫報
4、告二、主要研究內容: 隨著IT技術的發(fā)展,很多日常生活中的游戲都被搬到了計算機里供大家娛樂,尤其是博弈類的棋類游戲,如中國的象棋,圍棋,五子棋等,今年來人們對人工智能技術的研究成果使得斯算計在這些博弈游戲中能戰(zhàn)勝很多玩家。其次,五子棋作為一個棋類競技運動,在民間十分流行,為了熟悉五子棋規(guī)則及技巧,以及研究簡單的人工智能,決定用Java開發(fā)五子棋游戲。主要完成人機對戰(zhàn)的功能。在人機對弈中通過深度搜索和估值模塊來提高電腦旗手的智能。分析估值模塊中的影響精準性的幾個要素,以及提出一些提高精準性的辦法,以及對它們搜索的節(jié)點數(shù)進行比較,在這些算法的基礎山分析一些提高電腦AI方案,如遞歸算法、電
5、腦學習等。算法的研究有助于理解程序結構,增強邏輯思維能力,在其他人工智能方面也有很大的參考作用。近來隨著計算機的快速發(fā)展,各種各樣的電腦游戲層出不窮,使得我們能有更多的娛樂項目,而棋類游戲能起到鍛煉人的思維和修身養(yǎng)性的作用,而且棋類游戲水平頗高,大有與人腦分庭抗禮之勢。 本文結合五子棋這個游戲的特點,將闡述單機版五子棋算法設計,突出人工智能在博弈方面的應用,旨在試驗人工智能里的一些搜索算法,最終確定人工智能在未來各學科里的重要應用性,人工智能是一門正在速度發(fā)展的新興的綜合性很強的邊緣科學,它的中心任務是如何使計算機去做那些過去只能靠人的智力才能做的工作,而選五子棋游戲的開
6、發(fā)則是利用計算機來實現(xiàn)它的人工智能,從而培養(yǎng)我們從事軟件開發(fā)方面的能力. 三、設計的方法及步驟:方法: (1)在一個15*15的棋盤上,進行五子棋的對戰(zhàn),不同的是這一次要求由程序代替你戰(zhàn)斗。 (2)根據(jù)系統(tǒng)提供的對戰(zhàn)信息,通過計算給出合理的下一步落子的位置。 (3)輸入、輸出數(shù)據(jù)格式 輸入格式的第一行為一個整數(shù)N,表示當前已下的子數(shù),此后N行,每行一個落子的位置(第一個落子為黑子、第二個落子為白子、依次類推),位置由x,y表示(分別為落子的行坐標、列坐標,取值范圍為014) 輸出格式為一坐標x,
7、y,表示經(jīng)過計算得出的下一落子位置。(注意,不必標明落黑子還是白子,因為落黑子還是白子從當前已下的子數(shù)即可判斷) 例如(輸入數(shù)據(jù))4)設計時的注意事項 落子必須在棋盤有效范圍內,已經(jīng)落子的位置不能落子。 程序對先手黑棋或后手白棋均能計算正確的落子。 步驟:1、查找有關電話薄管理系統(tǒng)的相關資料;2、學習電話薄管理系統(tǒng)的相關資料,復習C語言;3、開始進行編程;4、上機進行調試;5、進行多次調試,處理出現(xiàn)的各種問題,整理實驗的步驟、數(shù)據(jù)、內容、寫實驗報告。6、整體過程中,用到了printheader(),printdata(),等函數(shù)從而設計完成了這個五子棋系統(tǒng)。四、實驗設計:/*/#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) /判斷勝負的函數(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ù) ,主要進行人落子工作 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<<"請輸入您要下的棋子 行列 用空格隔開:" 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<<"請輸入您要下的棋子" 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<<"輸入錯誤,請重新輸入:"<<endl; system ("title 游戲結束,謝謝使用!"); system ("color 03"); cout<<"游戲結束,謝謝使用"<<endl; system("pause
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 執(zhí)行案件代理合同(2篇)
- 八年級上冊道德與法治第二單元 遵守社會規(guī)則 復習聽課評課記錄
- 冀教版歷史九年級上冊第2課《古代印度文明》聽課評課記錄
- 新版(修訂版)北師大版小學五年級數(shù)學下冊聽評課記錄精寫
- 蘇科版數(shù)學八年級上冊4.3《實數(shù)》聽評課記錄2
- 湘教版數(shù)學七年級上冊《2.5整式的加法和減法(1)》聽評課記錄5
- 蘇教版數(shù)學九年級上冊聽評課記錄《2-1圓(2)》
- 蘇科版數(shù)學八年級上冊《4.2 立方根》聽評課記錄
- 華師大版歷史九年級上冊第6課《古希臘羅馬文化》聽課評課記錄
- 人民版道德與法治七年級上冊5.1《心中有他人》聽課評課記錄
- 《如何做一名好教師》課件
- 礦井主要災害事故防治應急避災知識培訓課件
- 不老莓行業(yè)分析
- STARCCM基礎培訓教程
- 2016-2023年婁底職業(yè)技術學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 貴陽市2024年高三年級適應性考試(一)一模英語試卷(含答案)
- 地理標志專題通用課件
- 全國大學高考百科匯編之《哈爾濱工業(yè)大學》簡介
- 《小英雄雨來》讀書分享會
- 學校安全教育教你如何遠離危險
- 【人教版】九年級化學上冊全冊單元測試卷【1-7單元合集】
評論
0/150
提交評論