![自己做的c課程設(shè)計(jì)象棋_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/488e9ddf-ba9c-49d7-91af-a12ae1df8e64/488e9ddf-ba9c-49d7-91af-a12ae1df8e641.gif)
![自己做的c課程設(shè)計(jì)象棋_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/488e9ddf-ba9c-49d7-91af-a12ae1df8e64/488e9ddf-ba9c-49d7-91af-a12ae1df8e642.gif)
![自己做的c課程設(shè)計(jì)象棋_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/488e9ddf-ba9c-49d7-91af-a12ae1df8e64/488e9ddf-ba9c-49d7-91af-a12ae1df8e643.gif)
![自己做的c課程設(shè)計(jì)象棋_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/488e9ddf-ba9c-49d7-91af-a12ae1df8e64/488e9ddf-ba9c-49d7-91af-a12ae1df8e644.gif)
![自己做的c課程設(shè)計(jì)象棋_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/29/488e9ddf-ba9c-49d7-91af-a12ae1df8e64/488e9ddf-ba9c-49d7-91af-a12ae1df8e645.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)類課程設(shè)計(jì)報(bào)告課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)課程設(shè)計(jì)題目:中國(guó)象棋姓 名:系:計(jì)算機(jī)系專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)年 級(jí):學(xué) 號(hào):061150083指導(dǎo)教師:職 稱:2008年 12 月 23 日福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)類課程設(shè)計(jì)報(bào)告結(jié)果評(píng)定評(píng)語:評(píng)分項(xiàng)目分值得分課程設(shè)計(jì)報(bào)告符合規(guī)范10分類圖、用例圖、系統(tǒng)框圖合理30分主要技術(shù)線路正確30分設(shè)計(jì)報(bào)告條理清晰、重點(diǎn)突出20分有一定創(chuàng)新性、難易程度10分成績(jī):指導(dǎo)教師簽字:任務(wù)下達(dá)日期:11月17日評(píng)定日期:目 錄1.設(shè)計(jì)目的42.設(shè)計(jì)要求43.設(shè)計(jì)方案44.設(shè)計(jì)內(nèi)容6 4.1 運(yùn)行程序進(jìn)入歡迎界面.6 4.2 按
2、enter鍵進(jìn)入游戲棋盤64.3 按“y”鍵進(jìn)入走棋的狀態(tài)9 4.3.1例如:當(dāng)要顯示兵的時(shí)候.10 4.3.2例如:要移動(dòng)炮的時(shí)候.11 4.3.3例如:要移動(dòng)車的時(shí)候.124.3.4例如:要移動(dòng)馬的時(shí)候144.3.5例如:要移動(dòng)相的時(shí)候.154.3.6例如:要移動(dòng)仕的時(shí)候.164.3.7例如:要移動(dòng)帥的時(shí)候.17 4.4判斷棋子的走法是否正確.18 4.5如果對(duì)自己所下的棋子后悔的話還可以悔棋.19 4.6可以統(tǒng)計(jì)雙方的各自的勝負(fù)和和棋的情況.215.總結(jié).22參考文獻(xiàn)231.設(shè)計(jì)目的(1)通過課程設(shè)計(jì)的綜合訓(xùn)練,培養(yǎng)學(xué)生實(shí)際分析問題、編程和動(dòng)手能力(2)初步了解c+程序的結(jié)構(gòu)和編程方法。
3、(3)掌握聲明類的方法,類和類的成員的概念以及定義對(duì)象的方法。(4)掌握對(duì)象的指針及其使用的方法。2.設(shè)計(jì)要求(1)程序結(jié)構(gòu)分明,條理清晰。(2)設(shè)計(jì)的中國(guó)象棋棋子走法必須符合規(guī)范。(3)能夠判斷棋子的走法是否正確。(4)能夠?qū)崿F(xiàn)悔棋、求和、認(rèn)輸。(5)在結(jié)束玩之前能夠統(tǒng)計(jì)雙方的勝數(shù)和和棋的次數(shù)。3.設(shè)計(jì)方案一、用例圖二、類圖4.設(shè)計(jì)內(nèi)容4.1 運(yùn)行程序進(jìn)入歡迎界面,實(shí)現(xiàn)代碼為:void cchess:welcome()cout<<"歡迎使用中國(guó)象棋!請(qǐng)最大化窗口。"<<endl;cout<<"觀棋不語真君子,"<
4、;<endl<<"舉手無悔大丈夫!"<<endl;cin.get();進(jìn)入的界面如圖所示:4.2 按enter鍵進(jìn)入游戲棋盤,實(shí)現(xiàn)代碼如下:void cchess:printchess(int i,int j)switch(boardij) /通過讀取數(shù)組中的內(nèi)容來顯示棋子;case 0:cout<<"| |"break;case 1:cout<<"|紅帥|"break;case 2:cout<<"|黑將|"break;case 3:cout<
5、<"|紅仕|"break;case 4:cout<<"|黑士|"break;case 5:cout<<"|紅相|"break;case 6:cout<<"|黑象|"break;case 7:cout<<"|紅馬|"break;case 8:cout<<"|黑馬|"break;case 9:cout<<"|紅車|"break;case 10:cout<<"|黑
6、車|"break;case 11:cout<<"|紅炮|"break;case 12:cout<<"|黑炮|"break;case 13:cout<<"|紅兵|"break;case 14:cout<<"|黑卒|"break;void cchess:initialboard()for(int i=0;i<10;i+) for(int j=0;j<9;j+) boardij=0; /初始化,全部置零board04=1;board94=2;board
7、03=board05=3;board93=board95=4;board02=board06=5;board92=board96=6;board01=board07=7;board91=board97=8;board00=board08=9;board90=board98=10;board21=board27=11;board71=board77=12;board30=board32=board34=board36=board38=13;board60=board62=board64=board66=board68=14;head=0;turn=0;printboard();void cche
8、ss:printboard()system("cls");cout<<"-"cout<<endl;for(int i=0;i<59;i+) cout<<"-"cout<<endl;for(i=0;i<10;i+) cout<<"-"<<i<<"-" for(int j=0;j<9;j+) printchess(i,j); cout<<endl; for(j=0;j<59;j+)
9、 cout<<"-" cout<<endl; if(i=4) cout<<" 楚 河 漢 界" cout<<endl; for(j=0;j<59;j+) cout<<"-" cout<<endl; 4.3 按“y”鍵進(jìn)入走棋的狀態(tài)。顯示的畫面如下:輸入要走的的是第幾行和第幾列,選定要的的棋子,顯示的畫面如下:4.3.1例如:當(dāng)要顯示兵的時(shí)候,輸入第三行和第0列。作用的代碼如下:int cchess:c13judge(int x1,int y1,int x2,
10、int y2)if(x2-x1)=1&&y1=y2)|(x2=x1&&x2>4&&abs(y2-y1)=1) /不得后退,過河前不得橫移; return 1;return 0;兵不能往后退,在過河之前只能往前走不能左右移動(dòng),當(dāng)過河之后就可以左右移動(dòng)。當(dāng)選中兵之后要移動(dòng)到哪個(gè)位置就輸入要移動(dòng)到的行和列。顯示的畫面如下:4.3.2例如:要移動(dòng)炮的時(shí)候,輸入當(dāng)前跑所在的位置,運(yùn)行炮的代碼如下:int cchess:c11judge(int x1,int y1,int x2,int y2)if(!boardx2y2&&c9judge
11、(x1,y1,x2,y2) /炮在不吃子的情況下等同于車 return 1;if(boardx2y2) /目標(biāo)有子 int i,f=0; if(x1=x2) for(i=min(y1,y2)+1;i<max(y1,y2);i+) /在路線上有且僅有一個(gè)子 if(boardx1i) f+; if(f=1) return 1; return 0; if(y1=y2) for(i=min(x1,x2)+1;i<max(x1,x2);i+) /在路線上有且僅有一個(gè)子 if(boardiy1) f+; if(f=1) return 1; return 0; return 0;當(dāng)炮要橫移或豎移
12、時(shí),前面沒有棋子的時(shí)候,移動(dòng)的情況跟車一樣,當(dāng)有一個(gè)棋子的時(shí)候就可以把對(duì)方的棋子吃掉。顯示的畫面如下:4.3.3例如:要移動(dòng)車的時(shí)候,輸入當(dāng)前跑所在的位置,運(yùn)行車的代碼如下:int cchess:c9judge(int x1,int y1,int x2,int y2) int i;if(x1=x2) /如果是走橫線 for(i=min(y1,y2)+1;i<max(y1,y2);i+) /判斷移動(dòng)路線上有沒有別的棋子 if(boardx1i) return 0; return 1;if(y1=y2) /如果是走豎線 for(i=min(x1,x2)+1;i<max(x1,x2);i
13、+) /判斷移動(dòng)路線上有沒有別的棋子 if(boardiy1) return 0; return 1;return 0;當(dāng)車的前面沒有棋子的時(shí)候且有隔空的話,車可以吃掉對(duì)方的任何的東西,移動(dòng)的時(shí)候如果橫豎沒有棋子的話就可以,可以自由移動(dòng)任意空格。出現(xiàn)的畫面如下:4.3.4例如:要移動(dòng)馬的時(shí)候,輸入當(dāng)前馬所在的位置,運(yùn)行炮馬的代碼如下:int cchess:c7judge(int x1,int y1,int x2,int y2)if(abs(x2-x1)+abs(y2-y1)!=3) /看馬是不是走“日”字型 return 0;if(x2-x1=2&&!boardx1+1y1)
14、/四種羈絆馬走的情況 return 1;if(x1-x2=2&&!boardx1-1y1) return 1;if(y2-y1=2&&!boardx1y1+1) return 1;if(y1-y2=2&&!boardx1y1+1) return 1;return 0;看馬走的是不是“日”字型,而且走的時(shí)候看“馬腳”有沒有被絆倒。顯示的畫面如下:4.3.5例如:要移動(dòng)相的時(shí)候,輸入當(dāng)前相所在的位置,運(yùn)行相的代碼如下:int cchess:c6judge(int x1,int y1,int x2,int y2)if(x2<4) return 0
15、;if(x2-x1=2&&y2-y1=2&&!boardx1+1y1+1) /相走的是不是"田"字型 return 1;if(x1-x2=2&&y2-y1=2&&!boardx1-1y1+1) return 1;if(x2-x1=2&&y1-y2=2&&!boardx1+1y1-1) return 1;if(x1-x2=2&&y1-y2=2&&!boardx1-1y1-1) return 1;return 0;看相走的是不是“田”字型,且看在“田”
16、字中間有沒有棋子,如果有棋子的話就不能相就不能走。畫面如下:4.3.6例如:要移動(dòng)仕的時(shí)候,輸入當(dāng)前仕所在的位置,運(yùn)行仕的代碼如下:int cchess:c3judge(int x1,int y1,int x2,int y2)if(x2<0|x2>2|y2<3|y2>5|abs(x2-x1)!=1|abs(y2-y1)!=1) /判斷是否在規(guī)定位置 return 0;return 1;看仕是不是走圖像中的斜線路線。運(yùn)行畫面如下:4.3.7例如:要移動(dòng)帥的時(shí)候,輸入當(dāng)前帥所在的位置,運(yùn)行帥的代碼如下:int cchess:c1judge(int x1,int y1,int
17、 x2,int y2)if(y2=y1&&boardx2y2=2) for(int i=x1+1;i<x2;i+) /判斷是否屬于照將情況 if(boardiy2!=0) return 0; return 1;if(x2<0|x2>2|y2<3|y2>5|abs(x2-x1)+abs(y2-y1)!=1) /判斷是否紅帥在九宮之內(nèi) return 0;return 1;看帥是不是在圖像中按“田”字型上橫豎上移動(dòng),出現(xiàn)的畫面如下:4.4判斷棋子的走法是否正確,判斷的代碼如下:int cchess:judge(int x1,int y1,int x2,i
18、nt y2) /根據(jù)要移動(dòng)的子的類型來決定進(jìn)入的分支switch(boardx1y1)case 1:if(c1judge(x1,y1,x2,y2)return 1; return 0;case 2:if(c2judge(x1,y1,x2,y2)return 1; return 0;case 3:if(c3judge(x1,y1,x2,y2)return 1; return 0;case 4:if(c4judge(x1,y1,x2,y2)return 1; return 0;case 5:if(c5judge(x1,y1,x2,y2)return 1; return 0;case 6:if(c6
19、judge(x1,y1,x2,y2)return 1; return 0;case 7:case 8:if(c7judge(x1,y1,x2,y2)return 1; return 0;case 9:case 10:if(c9judge(x1,y1,x2,y2)return 1; return 0;case 11:case 12:if(c11judge(x1,y1,x2,y2)return 1; return 0;case 13:if(c13judge(x1,y1,x2,y2)return 1; return 0;case 14:if(c14judge(x1,y1,x2,y2)return 1
20、; return 0;return 0;如果有出錯(cuò)的話會(huì)的到本系統(tǒng)的提示如下:4.5如果對(duì)自己所下的棋子后悔的話還可以悔棋,悔棋的代碼如下:void cchess:redo() /悔棋node *p;if(turn<2) cout<<"才第一回合,不能悔棋!"<<endl;else for(int i=0;i<2;i+) boardhead->x1head->y1=head->z1; boardhead->x2head->y2=head->z2; p=head; head=head->next;
21、delete p; turn+; printboard(); cout<<"悔棋成功!"<<endl;當(dāng)玩家玩過玩過一輪后,后悔的玩家經(jīng)過對(duì)手的同意后可以悔棋,假設(shè)原來的畫面如下:悔棋后的畫面如下圖所示:4.6可以統(tǒng)計(jì)雙方的各自的勝負(fù)和和棋的情況,顯示的代碼如下:void cchess:result(int i) /雙方勝率情況printboard();switch(i)case 1:cout<<"黑方獲勝!"<<endl;b_win+;break;case 2:cout<<"紅方獲勝
22、!"<<endl;r_win+;break;case 0:cout<<"雙方平局!"<<endl;draws+;break;顯示的畫面如下:5.總結(jié) 通過這次的c+課程設(shè)計(jì)我對(duì)于c+有了更深的認(rèn)識(shí),注意養(yǎng)成良好的習(xí)慣,代碼的縮進(jìn)編排,變量的命名規(guī)則要始終保持一致。大家都知道如何排除代碼中錯(cuò)誤,卻往往忽視了對(duì)注釋的排錯(cuò)。注釋是程序的一個(gè)重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經(jīng)清楚地表達(dá)了你的思想,就不必再加注釋了,如果注釋和代碼不一致,那就更加糟糕。 通過這次的課程設(shè)計(jì)我了解到對(duì)編程人員來說,耐心是非常重
23、要的,有了耐心才能做一名好的編程人員。參考文獻(xiàn)1譚浩強(qiáng).c+面向?qū)ο蟪绦蛟O(shè)計(jì).北京:清華大學(xué)出版社,2008.2.2 d.s.malik.c+基礎(chǔ)教程:北京:清華大學(xué)出版社,2006.4.附錄:#include<iostream.h>#include<stdlib.h>struct nodeint x1,y1,z1,x2,y2,z2;node *next;class cchessnode *head;int board109; /用二維數(shù)組構(gòu)建鍵盤int r_win,b_win,draws,turn;public:cchess()r_win=0;b_win=0;draw
24、s=0;head=0;turn=0;void printchess(int,int); /顯示棋子void welcome(); /歡迎信息void result(int); /輸出勝負(fù)void initialboard(); /棋盤初始化void printboard(); /輸出棋盤void printinfo();void add(int,int,int,int); /在鏈?zhǔn)自黾庸?jié)點(diǎn)void redo(); /悔棋,刪除頭兩個(gè)節(jié)點(diǎn)void delchain();void printplayer(int); /顯示玩家int max(int,int); /返回最大值int min(int,
25、int); /返回最小值int inxy(int&,int&); /輸入x和yint inyn();int other(int); int fun();int askagain();int inturn();int play(int);int askother();int lose_r();int lose_b();int judge(int,int,int,int); /瀏覽走子判定int c1judge(int,int,int,int); /判斷紅帥走法是否正確int c2judge(int,int,int,int); /黑帥走法是否正確int c3judge(int,in
26、t,int,int); /紅仕int c4judge(int,int,int,int); /黑士int c5judge(int,int,int,int); /紅相int c6judge(int,int,int,int); /黑相int c7judge(int,int,int,int); /馬int c9judge(int,int,int,int); /車int c11judge(int,int,int,int); /炮int c13judge(int,int,int,int);/紅兵int c14judge(int,int,int,int);/黑卒;int cchess:max(int a,i
27、nt b)return a>b?a:b;int cchess:min(int a,int b)return a<b?a:b;int cchess:c1judge(int x1,int y1,int x2,int y2)if(y2=y1&&boardx2y2=2) for(int i=x1+1;i<x2;i+) /判斷是否屬于照將情況 if(boardiy2!=0) return 0; return 1;if(x2<0|x2>2|y2<3|y2>5|abs(x2-x1)+abs(y2-y1)!=1) /判斷是否紅帥在九宮之內(nèi) return
28、 0;return 1;int cchess:c2judge(int x1,int y1,int x2,int y2)if(y2=y1&&boardx2y2=1) for(int i=x2+1;i<x1;i+) /判斷是否屬于照將情況 if(boardiy2!=0) return 0; return 1;if(x2>9|x2<7|y2<3|y2>5|abs(x2-x1)+abs(y2-y1)!=1) /判斷是否黑帥在九宮之內(nèi) return 0;return 1;int cchess:c3judge(int x1,int y1,int x2,int
29、y2)if(x2<0|x2>2|y2<3|y2>5|abs(x2-x1)!=1|abs(y2-y1)!=1) /判斷是否在規(guī)定位置 return 0;return 1;int cchess:c4judge(int x1,int y1,int x2,int y2)if(x2>9|x2<7|y2<3|y2>5|abs(x2-x1)!=1|abs(y2-y1)!=1) /判斷是否在規(guī)定位置 return 0;return 1;int cchess:c5judge(int x1,int y1,int x2,int y2)if(x2>5) /判斷是否
30、有過界 return 0;if(x2-x1=2&&y2-y1=2&&!boardx1+1y1+1) /相走的是不是"田"字型 return 1;if(x1-x2=2&&y2-y1=2&&!boardx1-1y1+1) return 1;if(x2-x1=2&&y1-y2=2&&!boardx1+1y1-1) return 1;if(x1-x2=2&&y1-y2=2&&!boardx1-1y1-1) return 1;return 0;int cch
31、ess:c6judge(int x1,int y1,int x2,int y2)if(x2<4) return 0;if(x2-x1=2&&y2-y1=2&&!boardx1+1y1+1) /相走的是不是"田"字型 return 1;if(x1-x2=2&&y2-y1=2&&!boardx1-1y1+1) return 1;if(x2-x1=2&&y1-y2=2&&!boardx1+1y1-1) return 1;if(x1-x2=2&&y1-y2=2&am
32、p;&!boardx1-1y1-1) return 1;return 0;int cchess:c7judge(int x1,int y1,int x2,int y2)if(abs(x2-x1)+abs(y2-y1)!=3) /看馬是不是走“日”字型 return 0;if(x2-x1=2&&!boardx1+1y1) /四種羈絆馬走的情況 return 1;if(x1-x2=2&&!boardx1-1y1) return 1;if(y2-y1=2&&!boardx1y1+1) return 1;if(y1-y2=2&&!
33、boardx1y1+1) return 1;return 0;int cchess:c9judge(int x1,int y1,int x2,int y2) int i;if(x1=x2) /如果是走橫線 for(i=min(y1,y2)+1;i<max(y1,y2);i+) /判斷移動(dòng)路線上有沒有別的棋子 if(boardx1i) return 0; return 1;if(y1=y2) /如果是走豎線 for(i=min(x1,x2)+1;i<max(x1,x2);i+) /判斷移動(dòng)路線上有沒有別的棋子 if(boardiy1) return 0; return 1;retur
34、n 0;int cchess:c11judge(int x1,int y1,int x2,int y2)if(!boardx2y2&&c9judge(x1,y1,x2,y2) /炮在不吃子的情況下等同于車 return 1;if(boardx2y2) /目標(biāo)有子 int i,f=0; if(x1=x2) for(i=min(y1,y2)+1;i<max(y1,y2);i+) /在路線上有且僅有一個(gè)子 if(boardx1i) f+; if(f=1) return 1; return 0; if(y1=y2) for(i=min(x1,x2)+1;i<max(x1,x
35、2);i+) /在路線上有且僅有一個(gè)子 if(boardiy1) f+; if(f=1) return 1; return 0; return 0;int cchess:c13judge(int x1,int y1,int x2,int y2)if(x2-x1)=1&&y1=y2)|(x2=x1&&x2>4&&abs(y2-y1)=1) /不得后退,過河前不得橫移; return 1;return 0;int cchess:c14judge(int x1,int y1,int x2,int y2)if(x1-x2)=1&&y
36、1=y2)|(x2=x1&&x2<5&&abs(y2-y1)=1) /不得后退,過河前不得橫移; return 1;return 0;void cchess:printchess(int i,int j)switch(boardij) /通過讀取數(shù)組中的內(nèi)容來顯示棋子;case 0:cout<<"| |"break;case 1:cout<<"|紅帥|"break;case 2:cout<<"|黑將|"break;case 3:cout<<"
37、;|紅仕|"break;case 4:cout<<"|黑士|"break;case 5:cout<<"|紅相|"break;case 6:cout<<"|黑象|"break;case 7:cout<<"|紅馬|"break;case 8:cout<<"|黑馬|"break;case 9:cout<<"|紅車|"break;case 10:cout<<"|黑車|"b
38、reak;case 11:cout<<"|紅炮|"break;case 12:cout<<"|黑炮|"break;case 13:cout<<"|紅兵|"break;case 14:cout<<"|黑卒|"break;void cchess:initialboard()for(int i=0;i<10;i+) for(int j=0;j<9;j+) boardij=0; /初始化,全部置零board04=1;board94=2;board03=board0
39、5=3;board93=board95=4;board02=board06=5;board92=board96=6;board01=board07=7;board91=board97=8;board00=board08=9;board90=board98=10;board21=board27=11;board71=board77=12;board30=board32=board34=board36=board38=13;board60=board62=board64=board66=board68=14;head=0;turn=0;printboard();void cchess:printb
40、oard()system("cls");cout<<"-"cout<<endl;for(int i=0;i<59;i+) cout<<"-"cout<<endl;for(i=0;i<10;i+) cout<<"-"<<i<<"-" for(int j=0;j<9;j+) printchess(i,j); cout<<endl; for(j=0;j<59;j+) cout<
41、<"-" cout<<endl; if(i=4) cout<<" 楚 河 漢 界" cout<<endl; for(j=0;j<59;j+) cout<<"-" cout<<endl; int cchess:play(int i)int x1,x2,y1,y2;printplayer(i);cout<<"行棋。"<<endl;while(1) if(other(i) /如果玩家要悔棋、求和等等 return 1; cou
42、t<<"請(qǐng)選擇移動(dòng)的棋子。" if(inxy(x1,y1)|!boardx1y1|(boardx1y1-i)%2) /位置出格,位置無子,選子不符 printboard(); cout<<"棋子選錯(cuò)。請(qǐng)重做。"<<endl; continue; cout<<"選擇"printchess(x1,y1);cout<<",移動(dòng)到哪?"<<endl; if(inxy(x2,y2)|boardx2y2&&(boardx2y2-i)%2=0
43、) /位置出格,位置有子且是自己的子 printboard(); cout<<"位置選錯(cuò)。請(qǐng)重做。"<<endl; continue; if(judge(x1,y1,x2,y2) /判斷這一步是否合法 add(x1,y1,x2,y2); /存入棧中 boardx2y2=boardx1y1; /棋子移到目的位置 boardx1y1=0; /原來的位置置空 turn+; /回合數(shù)增加 return 0; printboard(); cout<<"這步不合規(guī)則。請(qǐng)重做。"<<endl;int cchess:los
44、e_r() /在九宮中看帥是否存在for(int i=0;i<3;i+) for(int j=3;j<6;j+) if(boardij=1) return 0;result(1);return 1;int cchess:lose_b() /在九宮中看將是否存在for(int i=7;i<10;i+) for(int j=3;j<6;j+) if(boardij=2) return 0;result(2);return 1;void cchess:printinfo() cout<<"紅方勝了"<<r_win<<&q
45、uot;局。黑方勝了"<<b_win<<"局。"cout<<"雙方平局"<<draws<<"局。"<<endl;void cchess:welcome()cout<<"歡迎使用中國(guó)象棋!請(qǐng)最大化窗口。"<<endl;cout<<"觀棋不語真君子,"<<endl<<"舉手無悔大丈夫!"<<endl;cin.get();void
46、 cchess:result(int i) /雙方勝率情況printboard();switch(i)case 1:cout<<"黑方獲勝!"<<endl;b_win+;break;case 2:cout<<"紅方獲勝!"<<endl;r_win+;break;case 0:cout<<"雙方平局!"<<endl;draws+;break;int cchess:askother() /看是否要在來一局cout<<"請(qǐng)問對(duì)方是否同意?(y/n)
47、"if(inyn() return 1;return 0;int cchess:inturn() while(1) if(play(1) return 0; printboard(); if(lose_b() return 0; if(play(2) return 0; printboard(); if(lose_r() return 0;int cchess:askagain()delchain();printinfo();cout<<"您是否要再來一局?(y/n)"if(inyn() return 0;cout<<"謝謝使用本
48、程序!"<<endl;cout<<"版權(quán)所有 061150083陳魁"<<endl;return 1;int cchess:fun()int i;char str76;while(1) cin>>i; if(cin.rdstate() cin.clear(); cin.getline(str,76); cout<<"請(qǐng)重新輸入一個(gè)整數(shù)。" else return i;int cchess:inyn() / 判斷是否要再來一局char n;while(1) cin>>n; i
49、f(n='y'|n='y') return 1; if(n='n'|n='n') return 0; cout<<"請(qǐng)輸入明確答復(fù)(y/n)。"void cchess:add(int x1,int y1,int x2,int y2) node *p;p=new node;p->x1=x1;p->y1=y1;p->z1=boardx1y1;p->x2=x2;p->y2=y2;p->z2=boardx2y2;p->next=head;head=p;void cchess:redo() /悔棋node *p;if(turn<2) cout<<"才第一回合,不能悔棋!"<<endl;else for(int i=0;i<2;i+) boardhead->x1head->y1=head->z1; boardhead->x2head->y2=head->z2; p=head; head=he
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 岸坡拋石工程施工方案
- 環(huán)保技術(shù)引領(lǐng)未來環(huán)境科學(xué)與城市發(fā)展
- 中小學(xué)生欺凌專項(xiàng)治理行動(dòng)方案
- 現(xiàn)代通信技術(shù)在教育領(lǐng)域的應(yīng)用
- 2024年四年級(jí)英語上冊(cè) Module 5 Unit 2 Can Sam play football說課稿 外研版(三起)001
- 2024八年級(jí)英語下冊(cè) Unit 2 Plant a PlantLesson 7 Planting Trees說課稿(新版)冀教版
- 2024新教材高中政治 第二單元 經(jīng)濟(jì)發(fā)展與社會(huì)進(jìn)步 第四課 我國(guó)的個(gè)人收入分配與社會(huì)保障 4.1《我國(guó)的個(gè)人收入分配》說課稿 部編版必修2
- Module4 Unit1 Mum bought a new T-shirt for me(說課稿)-2024-2025學(xué)年外研版(三起)英語五年級(jí)上冊(cè)
- 《6 蛋殼與薄殼結(jié)構(gòu)》(說課稿)-2023-2024學(xué)年五年級(jí)下冊(cè)科學(xué)蘇教版
- 2025北京市勞務(wù)分包合同范本問題范本
- Jane-Eyre簡(jiǎn)愛英文課件
- (小學(xué))人教版一年級(jí)下冊(cè)數(shù)學(xué)《認(rèn)識(shí)鐘表》課件
- 2022年?duì)I口市大學(xué)生??紝U锌荚囌骖}及答案
- API520-安全閥計(jì)算PART1(中文版)
- 醫(yī)院信息科考核內(nèi)容標(biāo)準(zhǔn)細(xì)則
- 商務(wù)提成辦法
- 《統(tǒng)計(jì)學(xué)》完整袁衛(wèi)-賈俊平課件
- FZ/T 25001-1992工業(yè)用毛氈
- 電商部售后客服績(jī)效考核表
- 小提琴協(xié)奏曲《梁?!纷V
- 人教版高中化學(xué)必修一第一章《物質(zhì)及其變化》教學(xué)課件
評(píng)論
0/150
提交評(píng)論