版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 南京理工大學(xué)VC++課程設(shè)計(jì)報告</p><p> 課 程:VC++課程設(shè)計(jì) </p><p> 系 別:計(jì)算機(jī)科學(xué)與工程學(xué)院</p><p><b> 班 級: </b></p><p><b> 學(xué) 號:</b></p>
2、<p><b> 姓 名:</b></p><p> 選題1名稱: 對抗游戲</p><p> 選題1難易級別:B級</p><p><b> 自報成績:80</b></p><p> 起止時間:2012年9月15號到2012年10月19號</p><
3、p><b> 指導(dǎo)教師: 張宏</b></p><p> 日期: 2012 年10 月 19日</p><p><b> 對抗游戲</b></p><p><b> 一 課題目標(biāo)</b></p><p> 1.1 程序功能簡介 一個對抗游
4、戲,根據(jù)隨機(jī)產(chǎn)生的數(shù)字決定雙方的輸贏。</p><p> 1.2 課程設(shè)計(jì)要求</p><p> (1)當(dāng)雙方進(jìn)行對抗時,游戲者可據(jù)自身的牌點(diǎn)決定是否繼續(xù)下注,例如拿到A,把握增大,則在計(jì)算機(jī)的牌點(diǎn)出來之前加大賭注,但不超過5點(diǎn)。</p><p> ?。?)將對方牌點(diǎn)的比較擴(kuò)大為兩張牌點(diǎn)之和,若出現(xiàn)一組對子,則對子牌點(diǎn)大于任何單牌,若雙方均為對子,則比較牌點(diǎn)之和
5、。</p><p> 1.3 評定難易級別:B級</p><p><b> 二 具體實(shí)現(xiàn)</b></p><p> 2.1 程序總體方案</p><p><b> 2.1.1開發(fā)平臺</b></p><p> 操作系統(tǒng):Windows 7</p>
6、<p> 開發(fā)工具:VC++6.0</p><p> 2.1.2程序結(jié)構(gòu)或流程圖</p><p> 2.2 所做改進(jìn) </p><p> 2.2.1改進(jìn)一 </p><p> 2.2.1.1 改進(jìn)方案</p><p> 該程序只允許在玩家牌好的情況下加注,當(dāng)玩家選擇不加注時,通過添加一些
7、函數(shù),計(jì)算機(jī)選擇是否加注(當(dāng)計(jì)算機(jī)第一張牌為1-5時,計(jì)算機(jī)選擇退出,則該局游戲結(jié)束;當(dāng)計(jì)算機(jī)的第一張牌為6-10時,計(jì)算機(jī)加注為1,繼續(xù)游戲;當(dāng)計(jì)算機(jī)的第一張牌為“J”“Q”“K”“A”中的一張時,計(jì)算機(jī)加注為2,繼續(xù)游戲)。</p><p> 2.2.1.2 具體實(shí)現(xiàn)</p><p> int War::Judge(int&y)</p><p>&l
8、t;b> {</b></p><p> if(comp<=10)</p><p><b> {</b></p><p> switch(comp)</p><p><b> {</b></p><p><b> case 1:&l
9、t;/b></p><p><b> case 2:</b></p><p><b> case 3:</b></p><p><b> case 4:</b></p><p><b> case 5:</b></p><
10、;p> cout<<"電腦也選擇退出\n";y=0;cout<<'\n';break;</p><p><b> case 6:</b></p><p><b> case 7:</b></p><p><b> case 8:</
11、b></p><p><b> case 9:</b></p><p><b> case 10:</b></p><p> cout<<"加注金額:"<<1;y=1;cout<<'\n';</p><p><
12、;b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"加注金額:"<<2;y=2;cou
13、t<<'\n';</p><p><b> }</b></p><p><b> return y;</b></p><p><b> }</b></p><p><b> 2.2.2改進(jìn)二</b></p>
14、<p> 2.2.2.1 改進(jìn)方案</p><p> 自己制定比較規(guī)則,先判斷是否是對子,對子最大(若都為對子,則比較和大的為大),再判斷是否是順子(都為順子,則判斷和大的為大),最后判斷和值大小。</p><p> 2.2.2.2 具體實(shí)現(xiàn)</p><p> void Compare(War&A,War&B,int&d,
15、int y) // 判斷牌面的大小,同時通過d返回輸或贏的分?jǐn)?shù)</p><p><b> {</b></p><p> cout<<"######統(tǒng)計(jì)######\n";</p><p><b> {</b></p><p> int i,j,m,n,p,q
16、,s,w;</p><p> i=A.PLAYER(),j=B.PLAYER(),m=A.COMP(),n=B.COMP();</p><p><b> p=i-j;</b></p><p><b> q=m-n;</b></p><p><b> s=i+j;</b>
17、</p><p><b> w=m+n;</b></p><p> if(i==j&&m!=n)</p><p> {cout<<"恭喜你^^,玩家是對子!\n";d=y+1;}</p><p> else if(i!=j&&m==n)</p&
18、gt;<p> {cout<<"悲劇了,電腦是對子!\n";d=-y;}</p><p> else if(i==j&&m==n)</p><p> {if(s>w){cout<<"恭喜你^^,玩家的對子大!\n";d=y+1;}</p><p> else
19、if(s<w){cout<<"悲劇了,電腦的對子大!\n";d=-y;}</p><p> else{cout<<"雙方勢均力敵!\n";d=0;}</p><p><b> }</b></p><p><b> else if{</b><
20、/p><p> if((p==1||p==-1)&&(w!=1&&w!=-1))</p><p> {cout<<"恭喜你^^,玩家的牌是順子!\n";d=y+1;}</p><p> else if((p!=1&&p!=-1)&&(w==1||w==-1))</
21、p><p> {cout<<"悲劇了,電腦的牌是順子!\n";d=-y;}</p><p> else if((p==1||p==-1)&&(w==1&&w==-1)){</p><p> if(s>w){cout<<"恭喜你^^,玩家的順子大!\n";d=y+1
22、;}</p><p> else if(s<w){cout<<"悲劇了,電腦的順子大!\n";d=-y;}</p><p> else{cout<<"雙方勢均力敵!\n";d=0;}}}</p><p><b> else {</b></p><p
23、> if(s>w){cout<<"恭喜你^^,玩家的牌大!\n";d=y+1;}</p><p> else if(s<w){cout<<"悲劇了,電腦的牌大!\n";d=-y;}</p><p> else{cout<<"雙方勢均力敵!\n";d=0;}</p&g
24、t;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 2.2.3改進(jìn)三</b></p><p> 2.2.3 改進(jìn)方案</p><
25、p> 該程序的原始界面太單調(diào),通過增加一些函數(shù),使得界面能包括該游戲的名稱、級別、指導(dǎo)老師的名稱、設(shè)計(jì)者的名稱、學(xué)號等。</p><p> 2.2.3 具體實(shí)現(xiàn)</p><p><b> 首先定義函數(shù)</b></p><p> void Center_Text(char ShellText[80]) //將函數(shù)參數(shù)(字符串
26、)在屏幕上居中顯示</p><p><b> {</b></p><p> int length;</p><p> int center;</p><p> length= strlen(ShellText); //取得欲顯示字符串的大小</p><p> center = (80
27、 - length)/2; //整個屏幕的列數(shù)為80,取得字符串在該行的其始位置</p><p> for(;center!=0;center--) //在字符串前輸出空格</p><p><b> {</b></p><p> cputs(" ");</p><p><b&
28、gt; }</b></p><p> cputs(ShellText);</p><p><b> }</b></p><p> 再將下列代碼放在主函數(shù)中</p><p> Center_Text("C++課程設(shè)計(jì)報告");</p><p> cout&
29、lt;<endl;cout<<endl;</p><p> Center_Text("撲克牌游戲");</p><p> cout<<endl<<"\n";cout<<endl;</p><p> Center_Text("指導(dǎo)老師:張宏");&l
30、t;/p><p> cout<<endl<<"\n";cout<<endl;</p><p> Center_Text("設(shè)計(jì)者:周磊");</p><p> cout<<endl<<"\n";cout<<endl; </p&g
31、t;<p> Center_Text("學(xué)號:1106840211");</p><p> cout<<endl<<"\n";cout<<endl;</p><p> Center_Text("時間:2012-10-01");</p><p> co
32、ut<<endl<<"\n";cout<<endl;</p><p><b> 三 調(diào)試報告</b></p><p> 3.1調(diào)試時的界面顯示情況。</p><p><b> (1):初始界面</b></p><p> ?。?):玩家選擇
33、加注時,電腦的默認(rèn)加注為1</p><p> (3):玩家不選擇加注時,電腦的第一張牌為1-5時,電腦也選擇退出</p><p> ?。?):玩家不選擇加注時,電腦的第一張牌為6-10時,電腦的加注為1</p><p> ?。?):玩家不選擇加注時,電腦的第一張牌為J/Q/K/A時,電腦的加注 為2</p><p> ?。?):玩家選擇退出
34、時,界面顯示情況</p><p><b> 3.2調(diào)試報告:</b></p><p><b> 四 總體小結(jié)</b></p><p> 問題1:如何自由地下賭注,并在計(jì)算機(jī)內(nèi)保存?</p><p> 解決辦法: 參看書上有關(guān)類,構(gòu)造函數(shù),和運(yùn)算符重載函數(shù)的內(nèi)容。并向同學(xué)請教。</p&g
35、t;<p> 問題2: 如何編寫主函數(shù)?</p><p> 解決辦法:根據(jù)課程設(shè)計(jì)要求,多上機(jī)調(diào)試,并向同學(xué)請教。直到程序正常運(yùn)行。</p><p> 問題3:如何判斷玩家和計(jì)算機(jī)玩的大?。?lt;/p><p><b> 解決辦法:方法一:</b></p><p> void Compare(War&
36、amp;A,War&B,int&d,int y) // 判斷牌面的大小,同時通過d返回輸或贏的分?jǐn)?shù)</p><p><b> {</b></p><p> cout<<"######統(tǒng)計(jì)######\n";</p><p><b> {</b></p>
37、<p> int i,j,m,n;</p><p> i=A.PLAYER(),j=B.PLAYER(),m=A.COMP(),n=B.COMP();</p><p> if(i==j&&m!=n)</p><p> {cout<<"恭喜你^^,玩家是對子!\n";d=y+1;}</p>
38、<p> else if(i!=j&&m==n)</p><p> {cout<<"悲劇了,電腦是對子!\n";d=-y;}</p><p><b> else {</b></p><p> if(i+j>m+n)</p><p> {cout&
39、lt;<"恭喜你^^,玩家的牌大!\n";d=y+1;}</p><p> else if(i+j<m+n)</p><p> {cout<<"悲劇了,電腦的牌大!\n";d=-y;}</p><p> else {cout<<"雙方勢均力敵!\n";d=0;}&l
40、t;/p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 方法二:</b></p><p> void Compare(War&A,
41、War&B,int&d,int y) // 判斷牌面的大小,同時通過d返回輸或贏的分?jǐn)?shù)</p><p><b> {</b></p><p> cout<<"######統(tǒng)計(jì)######\n";</p><p><b> switch(y)</b></p>
42、<p><b> {case 0:</b></p><p><b> {</b></p><p> if(A.PLAYER()>A.COMP()){cout<<"恭喜你^^,玩家的牌大!\n";d=1;}</p><p> else if(A.PLAYER()==
43、A.COMP())cout<<"雙方勢均力敵!\n";</p><p> else {cout<<"555,電腦的牌大!\n";d=-1;}</p><p><b> break;</b></p><p><b> }</b></p>&l
44、t;p><b> default:</b></p><p><b> {</b></p><p> int i,j,m,n;</p><p> i=A.PLAYER()==B.PLAYER();</p><p> j=A.COMP()==B.COMP();</p>&l
45、t;p> m=(A.PLAYER()+B.PLAYER())>(A.COMP()+B.COMP());</p><p> n=(A.PLAYER()+B.PLAYER())<(A.COMP()+B.COMP());</p><p><b> if(i&&j)</b></p><p> {if(A.PL
46、AYER()>A.COMP()){cout<<"恭喜你^^,玩家的對子大!\n";d=y+1;}</p><p> else if(A.PLAYER()<A.COMP()){cout<<"555,電腦的對子大!\n";d=-y-1;}</p><p> else cout<<"雙方勢均力敵
47、!\n";}</p><p> else if(i==1&&j==0)</p><p> {cout<<"恭喜你^^,玩家是對子!\n";d=y+1;}</p><p> else if(j==1&&i==0)</p><p> {cout<<&qu
48、ot;555,電腦是對子!\n";d=-y-1;}</p><p><b> else </b></p><p><b> {</b></p><p><b> if(m)</b></p><p> {cout<<"恭喜你^^,玩家的牌大
49、!\n";d=y+1;}</p><p> else if(n)</p><p> {cout<<"555,電腦的牌大!\n";d=-y-1;}</p><p> else {cout<<"雙方勢均力敵!\n";d=0;}</p><p><b> }
50、</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 心得體會:</b></p><p> 開始進(jìn)行設(shè)計(jì)時,總覺得
51、無從下手,感覺這是一個不可能完成的任務(wù)。后來在同學(xué)的建議下,將這學(xué)期C++所學(xué)的c++知識仔細(xì)的看了幾遍,再開始看C++課程設(shè)計(jì)書。鑒于對抗游戲和撲克牌游戲接近生活,對它們的設(shè)計(jì)要求理解比較透徹,所以選擇了它們。首先,先發(fā)了五天的時間看設(shè)計(jì)要求和源代碼,然后才進(jìn)行編寫,經(jīng)過對所編程序的不斷調(diào)試和改寫以及與他人編寫的進(jìn)行對比,最后終于使程序能正常運(yùn)行了。為了更好的進(jìn)行更改,我把所編的程序打印下來,仔細(xì)的查看每個函數(shù),用筆進(jìn)行修改,然后再到
52、程序上修改調(diào)試。當(dāng)然,在整個實(shí)驗(yàn)過程中,不斷遇到各種問題,在同學(xué)的幫助下和自己的努力下,不斷的解決問題,一次次的不斷嘗試,不斷調(diào)節(jié),使解決問題的能力有了提高。并對程序的編寫有了一定的了解,對將來的學(xué)習(xí)方向有了進(jìn)一步的認(rèn)識。</p><p> 程序不足之處:沒有進(jìn)行撲克牌的創(chuàng)建、洗牌、分發(fā)等功能;沒有進(jìn)行牌面花色的比較。沒有設(shè)計(jì)對對碰等牌點(diǎn)規(guī)則。</p><p> 五 分工介紹
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- vc++課程設(shè)計(jì)報告----對抗游戲
- vc++課程設(shè)計(jì)實(shí)驗(yàn)報告---對抗游戲
- vc++課程設(shè)計(jì)報告
- vc++軟件課程設(shè)計(jì)報告
- vc++課設(shè)課程設(shè)計(jì)報告
- mfc課程設(shè)計(jì)———利用vc++程序編寫掃雷游戲
- vc++課程設(shè)計(jì)報告---球員管理系統(tǒng)
- vc++課程設(shè)計(jì)報告---橫向繪制余弦曲線
- vc++俄羅斯方塊課程設(shè)計(jì)報告
- vc++庫函數(shù)課程設(shè)計(jì)
- vc++課程設(shè)計(jì)-- 餐飲管理系統(tǒng)
- vc++課程設(shè)計(jì)--工資管理
- vc++網(wǎng)絡(luò)聊天軟件課程設(shè)計(jì)
- vc++課程設(shè)計(jì)--工資管理
- vc++課程設(shè)計(jì)報告--圖書館管理系統(tǒng)
- 漢諾塔課程設(shè)計(jì)--基于vc++的漢諾塔游戲設(shè)計(jì)
- VC++課程設(shè)計(jì)--工資管理.doc
- vc++數(shù)據(jù)庫課程設(shè)計(jì)報告---外賣訂餐平臺
- vc++課程設(shè)計(jì)報告 paint board 簡易畫圖板
- vc++課程設(shè)計(jì)報告-小型超市商品管理系統(tǒng)
評論
0/150
提交評論