版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)類課程設(shè)計(jì)報(bào)告課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))課題名稱: 猜數(shù)字游戲 姓 名:學(xué) 號:專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)年 級:2012級指導(dǎo)教師:職 稱:講師2013年11月面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))成績評定表評分項(xiàng)目分值得分程序(系統(tǒng))原創(chuàng)性15程序功能25代碼質(zhì)量(健壯性和可擴(kuò)展性)20核心代碼和功能模塊注釋10設(shè)計(jì)報(bào)告課題來源&任務(wù)描述5系統(tǒng)設(shè)計(jì)10代碼編寫與實(shí)現(xiàn)結(jié)果說明10團(tuán)隊(duì)合作能力分工協(xié)作&聯(lián)合研發(fā)5成績總計(jì) 指導(dǎo)老師簽字:目 錄1. 課題來源12. 任務(wù)描述12.1. 課題的總體結(jié)構(gòu)12.2. 核心功能模塊與類設(shè)計(jì)22.3. 任務(wù)
2、分工與工作量說明33. 程序(系統(tǒng))詳細(xì)設(shè)計(jì)34. 程序(系統(tǒng))實(shí)現(xiàn)與測試55. 分析與討論116. 結(jié)束語12- II -1. 課題來源該作品為原創(chuàng)。課題靈感是能否做一個(gè)小游戲,尋找了很多小游戲比如俄羅斯方塊等,發(fā)現(xiàn)其太復(fù)雜以目前的水平無法完成,于是就選擇了一個(gè)比較簡單的猜數(shù)字游戲,編寫益智類的游戲可以讓我們?nèi)粘I钪凶约菏褂脕磉_(dá)到增加樂趣的作用。猜數(shù)字游戲的原游戲規(guī)則:通常由兩個(gè)人玩,一方出數(shù)字,一方猜。出數(shù)字的人要想好一個(gè)沒有重復(fù)數(shù)字的4位數(shù),不能讓猜的人知道。猜的人就可以開始猜。每猜一個(gè)數(shù)字,出數(shù)者就要根據(jù)這個(gè)數(shù)字給出幾A幾B,其中A前面的數(shù)字表示位置正確的數(shù)的個(gè)數(shù),而B前的數(shù)字表示數(shù)
3、字正確而位置不對的數(shù)的個(gè)數(shù)。如正確答案為 5234,而猜的人猜 5346,則是 1A2B,其中有一個(gè)5的位置對了,記為1A,而3和4這兩個(gè)數(shù)字對了,而位置沒對,因此記為 2B,合起來就是 1A2B。接著猜的人再根據(jù)出題者的幾A幾B繼續(xù)猜,直到猜中(即 4A0B)為止。原游戲規(guī)則是兩個(gè)人玩,于是我們想到了將規(guī)則改為人機(jī)對戰(zhàn),電腦出題玩家來猜。2. 任務(wù)描述猜數(shù)字游戲:產(chǎn)生隨機(jī)數(shù),統(tǒng)計(jì)完全猜中的數(shù)字的個(gè)數(shù)以及統(tǒng)計(jì)猜中但位置錯(cuò)誤數(shù)字的個(gè)數(shù),并給出提示。最后計(jì)算積分。此程序體現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的繼承性和封裝性。2.1. 課題的總體結(jié)構(gòu)contrast-A:int-B:int-n1:int-n2:in
4、t-n3:int-n4:int+setNum():void+count():void+getA():int+getB():int+setA(int a):voidscore-s1:int-s2:int-s3:int+score():+getS1():int+getS2():int+getS3():int+setS1(int b1):void+setS2(int b2):void+setS3(int b3):void類層次結(jié)構(gòu)圖:randNumber-num2:int-num3:int-num4:int-ran():int+randNum():void+getnum1():int+getnum2
5、():int+getnum3():int+getnum4():int程序有三個(gè)類,其中randNumber類用來產(chǎn)生隨機(jī)數(shù),contrast類用來做對比并得出猜數(shù)字的結(jié)果,score類用來讀取文件內(nèi)容并統(tǒng)計(jì)分?jǐn)?shù),主函數(shù)進(jìn)行循環(huán)輸入猜數(shù)字,并將結(jié)果輸入文件。讀取文件信息程序的功能結(jié)構(gòu)圖:猜數(shù)字隨機(jī)數(shù)的產(chǎn)生輸入所猜測的數(shù)據(jù)判斷正誤,給出提示計(jì)算積分更新文件信息2.2. 核心功能模塊與類設(shè)計(jì)采用表格的形式,按照類在課題中的作用,列出核心類的功能定義和主要函數(shù)接口。randNumber類實(shí)現(xiàn)答案所需的隨機(jī)數(shù)的產(chǎn)生randNum():void/制造隨機(jī)數(shù)getnum1():int/獲取隨機(jī)數(shù)的第一位ge
6、tnum2():int/獲取隨機(jī)數(shù)的第二位getnum3():int/獲取隨機(jī)數(shù)的第三位getnum4():int/獲取隨機(jī)數(shù)的第四位contrast類核心類,實(shí)現(xiàn)猜數(shù)字游戲主要玩法的設(shè)計(jì)setNum():void/用于設(shè)置用戶輸入的數(shù)據(jù)count():void/統(tǒng)計(jì)幾A幾BgetA():int/獲取A的值getB():int/獲取B的值setA(int a):void/設(shè)置A的值score類用于顯示和統(tǒng)計(jì)分?jǐn)?shù)score():/從文件獲取排行榜數(shù)據(jù)并顯示getS1():intgetS2():intgetS3():int/獲取排行榜積分setS1(int b1):voidsetS2(int b2
7、):voidsetS3(int b3):void/更改排行榜2.3. 任務(wù)分工與工作量說明成員名字任務(wù)分工工作量(%)韓澤宇(1) 程序的初期設(shè)計(jì)制作(2) 對積分統(tǒng)計(jì)顯示錯(cuò)誤的BUG進(jìn)行修復(fù),對循環(huán)的條件進(jìn)行改變。(3) 增加了文件保存功能,記錄最高分并保存至文件(4) 程序BUG測試及調(diào)試40%陳智杰(1)增加了變量對猜數(shù)字的次數(shù)進(jìn)行限制,使得游戲更有挑戰(zhàn)性(2)增加了在猜對數(shù)字時(shí)的(Y/N)退出功能,并能在退出時(shí)統(tǒng)計(jì)分?jǐn)?shù)(3)程序BUG測試及調(diào)試30%鐘揚(yáng)(1)程序的外觀界面設(shè)計(jì)(2)增加了對輸入數(shù)字的限制,限定輸入的數(shù)字每位必須各不相同,加強(qiáng)了程序健壯性(3)增加了積分統(tǒng)計(jì)(4)程序B
8、UG測試及調(diào)試30%3. 程序(系統(tǒng))詳細(xì)設(shè)計(jì)按照程序(系統(tǒng))的總體結(jié)構(gòu),詳細(xì)介紹程序中各個(gè)類和函數(shù)的設(shè)計(jì)思想和實(shí)現(xiàn)方法,并以圖的方式說明程序的流程圖。randNumber類實(shí)現(xiàn)答案所需的隨機(jī)數(shù)的產(chǎn)生contrast類為核心類,繼承至randNumber類,實(shí)現(xiàn)猜數(shù)字游戲主要玩法的設(shè)計(jì)開始讀取并顯示排行榜記錄產(chǎn)生隨機(jī)數(shù)字輸入所猜的數(shù)字與生成的隨機(jī)數(shù)完全相同?輸出猜數(shù)字的提示(?A?B)NY猜數(shù)字的機(jī)會減少一次輸出“你猜對了”次數(shù)耗盡?N計(jì)算并打印積分YY是否繼續(xù)?N游戲結(jié)束統(tǒng)計(jì)總分,判斷是否上榜更新排行榜4. 程序(系統(tǒng))實(shí)現(xiàn)與測試(1) 給出典型的程序(系統(tǒng))執(zhí)行結(jié)果圖。開始界面:猜數(shù)字界面
9、:猜對時(shí)的顯示界面:破紀(jì)錄時(shí)的顯示界面:更新后的排行榜:(2) 程序(系統(tǒng))實(shí)現(xiàn)的功能隨機(jī)數(shù)字的產(chǎn)生:產(chǎn)生四個(gè)隨機(jī)數(shù)字分別代表四位數(shù)的四個(gè)位數(shù)字正誤判斷:給出既猜對位置也猜對的數(shù)字的個(gè)數(shù)以及猜對但是位置不對的數(shù)字的位置。積分計(jì)算:猜錯(cuò)按0分算,一次就猜對100分,兩次猜對90分,三次80分以此類推,最后一次猜對得20分。記錄成績的功能:給出排行榜記錄前三名的成績,保存在score.txt文件中。(3) 根據(jù)課題的特性,列出帶有詳細(xì)注釋的核心功能模塊或類代碼;源程序代碼:隨機(jī)數(shù):class randNumberint num1;int num2;int num3;int num4;int ran
10、()srand( (unsigned)time( NULL ) );for(int i=0;i<10;i+)return (rand()%10);/返回0-9的一個(gè)隨機(jī)數(shù)public:void randNum()cout<<"正在產(chǎn)生隨機(jī)數(shù)."<<endl;/大概因?yàn)樗惴ǖ膯栴}產(chǎn)生隨機(jī)數(shù)這個(gè)過程比較慢所以做個(gè)提示num1=-1;num2=-1;num3=-1;num4=-1;/清除上次的隨機(jī)數(shù)記錄,使得下次產(chǎn)生隨機(jī)數(shù)與上次不沖突num1=ran();donum2=ran();while(num2=num1);donum3=ran();while
11、(num3=num1|num3=num2);donum4=ran();while(num4=num1|num4=num2|num4=num3);/產(chǎn)生四個(gè)不同的隨機(jī)數(shù)int getnum1()return num1;int getnum2()return num2;int getnum3()return num3;int getnum4()return num4;/獲取隨機(jī)數(shù)的方法用于比較:class contrast:public randNumberint A;int B;/用于記錄結(jié)果(幾A幾B)int n1;int n2;int n3;int n4;/(用于記錄輸入的數(shù)字)public
12、:void setNum(int a1,int a2,int a3,int a4)n1=a1;n2=a2;n3=a3;n4=a4;void count()A=0;B=0;/每一次都重置A、Bif(n1=getnum1()A+;if(n2=getnum2()A+;if(n3=getnum3()A+;if(n4=getnum4()A+;/統(tǒng)計(jì)完全猜中的數(shù)字的個(gè)數(shù)(A)if(n1=getnum2()|n1=getnum3()|n1=getnum4()B+;if(n2=getnum1()|n2=getnum3()|n2=getnum4()B+;if(n3=getnum2()|n3=getnum1()|
13、n3=getnum4()B+;if(n4=getnum2()|n4=getnum3()|n4=getnum1()B+;/統(tǒng)計(jì)猜中但位置錯(cuò)誤數(shù)字的個(gè)數(shù)(B)int getA()return A;int getB()return B;void setA(int a)A=a;class scoreint s1;int s2;int s3;/用于記錄前三名積分public:int getS1()return s1;int getS2()return s2;int getS3()return s3;/用于獲取積分的方法void setS1(int b1)s1=b1;void setS2(int b2)s
14、2=b2;void setS3(int b3)s3=b3;/用于最后修改積分排名score()s1=0;s2=0;s3=0;FILE *fp;fp=fopen("score.txt","r");/打開文件if(!fp)cout<<"當(dāng)前暫無積分排名"<<endl;elsecout<<"積分排行榜:"<<endl;fscanf(fp,"%d",&s1);cout<<" 第一名:"<<s1<&l
15、t;endl;/讀取第一個(gè)數(shù)字存入變量s1fscanf(fp,"%d",&s2);cout<<" 第二名:"<<s2<<endl;/讀取第二個(gè)數(shù)字存入變量s2fscanf(fp,"%d",&s3);cout<<" 第三名:"<<s3<<endl;/讀取第三個(gè)數(shù)字存入變量s3cout<<endl;fclose(fp);主函數(shù):void main()score score;/從文件讀取并輸出上次成績contrast nu
16、mber;int s=0;/用于統(tǒng)計(jì)總分donumber.randNum();int n1,n2,n3,n4;int k=9;/用于統(tǒng)計(jì)剩余次數(shù)docout<<"請輸入您所猜的四位數(shù)字"<<endl;scanf("%1d%1d%1d%1d",&n1,&n2,&n3,&n4);/輸入數(shù)字while(n1=n2|n1=n3|n1=n4|n2=n3|n2=n4|n3=n4)/當(dāng)輸入的數(shù)字中含有相同的數(shù)字cout<<"請重新輸入正確格式的數(shù)字"<<endl;sca
17、nf("%1d%1d%1d%1d",&n1,&n2,&n3,&n4);/若輸入格式錯(cuò)誤重新輸入number.setNum(n1,n2,n3,n4);number.count();cout<<endl;cout<<number.getA()<<"A"<<number.getB()<<"B"<<endl;/輸出結(jié)果(幾A幾B)k-;/剩余次數(shù)減1if(number.getA()=4)cout<<"你猜對了"
18、;<<endl;cout<<"你的本輪得分為"<<(20+10*k)<<"分"<<endl;/統(tǒng)計(jì)本輪得分s+=(20+10*k);/統(tǒng)計(jì)總分cout<<"你的總分為"<<s<<"分n"<<endl;/統(tǒng)計(jì)總分char yn;cout<<"請輸入Y(繼續(xù))或N(退出)"<<endl;docin>>yn;if(yn='N'|yn='
19、n')number.setA(-1);while(yn!='Y'&&yn!='y'&&yn!='N'&&yn!='n');/當(dāng)輸入格式正確時(shí)退出循環(huán)if(number.getA()!=4&&number.getA()!=-1)cout<<"你還有"<<k<<"次機(jī)會"<<endl;cout<<endl;while(number.getA()!=4&&am
20、p;k!=0&&number.getA()!=-1);/次數(shù)用完或者猜對時(shí)選擇N退出循環(huán)if(number.getA()!=4&&number.getA()!=-1)cout<<"機(jī)會用完了,游戲結(jié)束"<<endl;cout<<"正確的數(shù)字為"<<number.getnum1()<<number.getnum2()<<number.getnum3()<<number.getnum4()<<endl;cout<<&qu
21、ot;你的本輪得分為0分"<<endl;while(number.getA()=4);/當(dāng)猜對時(shí)循環(huán)結(jié)束cout<<endl;cout<<"你的最終得分為"<<s<<"分"<<endl;if(s>score.getS3()&&s<score.getS2()score.setS3(s);/當(dāng)成績介于第二名和第三名時(shí)替換第三名成績if(s>score.getS2()&&s<score.getS1()score.setS3(score.getS2();score.setS2(s);/當(dāng)成績介于第一名和第二名時(shí)修改二、三名成績if(
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新科版選修化學(xué)下冊月考試卷含答案
- 2025年冀教新版九年級地理下冊月考試卷含答案
- 2025年粵教滬科版選修4地理上冊月考試卷含答案
- 2025年度銀行網(wǎng)點(diǎn)門禁安全系統(tǒng)安裝與維護(hù)服務(wù)合同4篇
- 2025年滬科版選擇性必修1歷史下冊月考試卷含答案
- 2025年外研版七年級生物上冊階段測試試卷
- 2025年度嬰幼兒奶粉消費(fèi)者滿意度調(diào)查與分析合同4篇
- 二零二五年度農(nóng)業(yè)土地租賃合同農(nóng)業(yè)可持續(xù)發(fā)展戰(zhàn)略4篇
- 二零二五版馬戲團(tuán)演出服裝與化妝服務(wù)合同3篇
- 二零二五年度出國定居寵物安置與照料合同2篇
- 小學(xué)網(wǎng)管的工作總結(jié)
- 2024年銀行考試-興業(yè)銀行筆試參考題庫含答案
- 泵站運(yùn)行管理現(xiàn)狀改善措施
- 2024屆武漢市部分學(xué)校中考一模數(shù)學(xué)試題含解析
- SYT 0447-2014《 埋地鋼制管道環(huán)氧煤瀝青防腐層技術(shù)標(biāo)準(zhǔn)》
- 第19章 一次函數(shù) 單元整體教學(xué)設(shè)計(jì) 【 學(xué)情分析指導(dǎo) 】 人教版八年級數(shù)學(xué)下冊
- 浙教版七年級下冊科學(xué)全冊課件
- 弧度制及弧度制與角度制的換算
- 瓦楞紙箱計(jì)算公式測量方法
- DB32-T 4004-2021水質(zhì) 17種全氟化合物的測定 高效液相色譜串聯(lián)質(zhì)譜法-(高清現(xiàn)行)
- DB15T 2724-2022 羊糞污收集處理技術(shù)規(guī)范
評論
0/150
提交評論