《面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))》報(bào)告解析_第1頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))》報(bào)告解析_第2頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))》報(bào)告解析_第3頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))》報(bào)告解析_第4頁(yè)
《面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))》報(bào)告解析_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上福建農(nóng)林大學(xué)計(jì)算機(jī)與信息學(xué)院計(jì)算機(jī)類課程設(shè)計(jì)報(bào)告課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))課題名稱: 猜數(shù)字游戲 姓 名:學(xué) 號(hào):專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù)年 級(jí):2012級(jí)指導(dǎo)教師:職 稱:講師2013年11月專心-專注-專業(yè)面向?qū)ο蟪绦蛟O(shè)計(jì)(課程設(shè)計(jì))成績(jī)?cè)u(píng)定表評(píng)分項(xiàng)目分值得分程序(系統(tǒng))原創(chuàng)性15程序功能25代碼質(zhì)量(健壯性和可擴(kuò)展性)20核心代碼和功能模塊注釋10設(shè)計(jì)報(bào)告課題來(lái)源&任務(wù)描述5系統(tǒng)設(shè)計(jì)10代碼編寫(xiě)與實(shí)現(xiàn)結(jié)果說(shuō)明10團(tuán)隊(duì)合作能力分工協(xié)作&聯(lián)合研發(fā)5成績(jī)總計(jì) 指導(dǎo)老師簽字:目 錄1. 課題來(lái)源該作品為原創(chuàng)。課題靈感是能否做一個(gè)小游戲,尋找了

2、很多小游戲比如俄羅斯方塊等,發(fā)現(xiàn)其太復(fù)雜以目前的水平無(wú)法完成,于是就選擇了一個(gè)比較簡(jiǎn)單的猜數(shù)字游戲,編寫(xiě)益智類的游戲可以讓我們?nèi)粘I钪凶约菏褂脕?lái)達(dá)到增加樂(lè)趣的作用。猜數(shù)字游戲的原游戲規(guī)則:通常由兩個(gè)人玩,一方出數(shù)字,一方猜。出數(shù)字的人要想好一個(gè)沒(méi)有重復(fù)數(shù)字的4位數(shù),不能讓猜的人知道。猜的人就可以開(kāi)始猜。每猜一個(gè)數(shù)字,出數(shù)者就要根據(jù)這個(gè)數(shù)字給出幾A幾B,其中A前面的數(shù)字表示位置正確的數(shù)的個(gè)數(shù),而B(niǎo)前的數(shù)字表示數(shù)字正確而位置不對(duì)的數(shù)的個(gè)數(shù)。如正確答案為 5234,而猜的人猜 5346,則是 1A2B,其中有一個(gè)5的位置對(duì)了,記為1A,而3和4這兩個(gè)數(shù)字對(duì)了,而位置沒(méi)對(duì),因此記為 2B,合起來(lái)就是

3、 1A2B。接著猜的人再根據(jù)出題者的幾A幾B繼續(xù)猜,直到猜中(即 4A0B)為止。原游戲規(guī)則是兩個(gè)人玩,于是我們想到了將規(guī)則改為人機(jī)對(duì)戰(zhàn),電腦出題玩家來(lái)猜。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:int-n3:int-n4:int+setNum():void+count():void+getA():int+getB():int+setA(int a):voidscore-s1:int

4、-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():int+getnum3():int+getnum4():int程序有三個(gè)類,其中randNumber類用來(lái)產(chǎn)生隨機(jī)數(shù),contrast類用來(lái)做對(duì)比并得出猜數(shù)字的結(jié)果,score類用

5、來(lái)讀取文件內(nèi)容并統(tǒng)計(jì)分?jǐn)?shù),主函數(shù)進(jìn)行循環(huán)輸入猜數(shù)字,并將結(jié)果輸入文件。讀取文件信息程序的功能結(jié)構(gòu)圖:猜數(shù)字隨機(jī)數(shù)的產(chǎn)生輸入所猜測(cè)的數(shù)據(jù)判斷正誤,給出提示計(jì)算積分更新文件信息2.2. 核心功能模塊與類設(shè)計(jì)采用表格的形式,按照類在課題中的作用,列出核心類的功能定義和主要函數(shù)接口。randNumber類實(shí)現(xiàn)答案所需的隨機(jī)數(shù)的產(chǎn)生randNum():void/制造隨機(jī)數(shù)getnum1():int/獲取隨機(jī)數(shù)的第一位getnum2():int/獲取隨機(jī)數(shù)的第二位getnum3():int/獲取隨機(jī)數(shù)的第三位getnum4():int/獲取隨機(jī)數(shù)的第四位contrast類核心類,實(shí)現(xiàn)猜數(shù)字游戲主要玩法的設(shè)

6、計(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):voidsetS3(int b3):void/更改排行榜2.3. 任務(wù)分工與工作量說(shuō)明成員名字任務(wù)分工工作量(%)韓澤宇(1) 程序的初期設(shè)計(jì)制作(2) 對(duì)積分統(tǒng)計(jì)顯示錯(cuò)誤的BUG進(jìn)

7、行修復(fù),對(duì)循環(huán)的條件進(jìn)行改變。(3) 增加了文件保存功能,記錄最高分并保存至文件(4) 程序BUG測(cè)試及調(diào)試40%陳智杰(1)增加了變量對(duì)猜數(shù)字的次數(shù)進(jìn)行限制,使得游戲更有挑戰(zhàn)性(2)增加了在猜對(duì)數(shù)字時(shí)的(Y/N)退出功能,并能在退出時(shí)統(tǒng)計(jì)分?jǐn)?shù)(3)程序BUG測(cè)試及調(diào)試30%鐘揚(yáng)(1)程序的外觀界面設(shè)計(jì)(2)增加了對(duì)輸入數(shù)字的限制,限定輸入的數(shù)字每位必須各不相同,加強(qiáng)了程序健壯性(3)增加了積分統(tǒng)計(jì)(4)程序BUG測(cè)試及調(diào)試30%3. 程序(系統(tǒng))詳細(xì)設(shè)計(jì)按照程序(系統(tǒng))的總體結(jié)構(gòu),詳細(xì)介紹程序中各個(gè)類和函數(shù)的設(shè)計(jì)思想和實(shí)現(xiàn)方法,并以圖的方式說(shuō)明程序的流程圖。randNumber類實(shí)現(xiàn)答案所需

8、的隨機(jī)數(shù)的產(chǎn)生contrast類為核心類,繼承至randNumber類,實(shí)現(xiàn)猜數(shù)字游戲主要玩法的設(shè)計(jì)開(kāi)始讀取并顯示排行榜記錄產(chǎn)生隨機(jī)數(shù)字輸入所猜的數(shù)字與生成的隨機(jī)數(shù)完全相同?輸出猜數(shù)字的提示(?A?B)NY猜數(shù)字的機(jī)會(huì)減少一次輸出“你猜對(duì)了”次數(shù)耗盡?N計(jì)算并打印積分YY是否繼續(xù)?N游戲結(jié)束統(tǒng)計(jì)總分,判斷是否上榜更新排行榜4. 程序(系統(tǒng))實(shí)現(xiàn)與測(cè)試(1) 給出典型的程序(系統(tǒng))執(zhí)行結(jié)果圖。開(kāi)始界面:猜數(shù)字界面:猜對(duì)時(shí)的顯示界面:破紀(jì)錄時(shí)的顯示界面:更新后的排行榜:(2) 程序(系統(tǒng))實(shí)現(xiàn)的功能隨機(jī)數(shù)字的產(chǎn)生:產(chǎn)生四個(gè)隨機(jī)數(shù)字分別代表四位數(shù)的四個(gè)位數(shù)字正誤判斷:給出既猜對(duì)位置也猜對(duì)的數(shù)字的個(gè)數(shù)

9、以及猜對(duì)但是位置不對(duì)的數(shù)字的位置。積分計(jì)算:猜錯(cuò)按0分算,一次就猜對(duì)100分,兩次猜對(duì)90分,三次80分以此類推,最后一次猜對(duì)得20分。記錄成績(jī)的功能:給出排行榜記錄前三名的成績(jī),保存在score.txt文件中。(3) 根據(jù)課題的特性,列出帶有詳細(xì)注釋的核心功能模塊或類代碼;源程序代碼:隨機(jī)數(shù):class randNumberint num1;int num2;int num3;int num4;int ran()srand( (unsigned)time( NULL ) );for(int i=0;i<10;i+)return (rand()%10);/返回0-9的一個(gè)隨機(jī)數(shù)publi

10、c:void randNum()cout<<"正在產(chǎn)生隨機(jī)數(shù)."<<endl;/大概因?yàn)樗惴ǖ膯?wèn)題產(chǎn)生隨機(jī)數(shù)這個(gè)過(guò)程比較慢所以做個(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(num3=num1|num3=num2);donum4=ran();while(num4=num1|num4=num2|num4=num3);/產(chǎn)生四個(gè)不同的隨機(jī)數(shù)int getnum

11、1()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: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

12、、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()|n3=getnum4()B+;if(n4=getnum2()|n4=getnum3()|n4=getnum1()B+;/統(tǒng)計(jì)猜中但位置錯(cuò)誤數(shù)字的個(gè)數(shù)(B)int getA()return

13、 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)s2=b2;void setS3(int b3)s3=b3;/用于最后修改積分排名score()s1=0;s2=0;s3=0;FILE *fp;fp=fopen("score.t

14、xt","r");/打開(kāi)文件if(!fp)cout<<"當(dāng)前暫無(wú)積分排名"<<endl;elsecout<<"積分排行榜:"<<endl;fscanf(fp,"%d",&s1);cout<<" 第一名:"<<s1<<endl;/讀取第一個(gè)數(shù)字存入變量s1fscanf(fp,"%d",&s2);cout<<" 第二名:"<<s

15、2<<endl;/讀取第二個(gè)數(shù)字存入變量s2fscanf(fp,"%d",&s3);cout<<" 第三名:"<<s3<<endl;/讀取第三個(gè)數(shù)字存入變量s3cout<<endl;fclose(fp);主函數(shù):void main()score score;/從文件讀取并輸出上次成績(jī)contrast number;int s=0;/用于統(tǒng)計(jì)總分donumber.randNum();int n1,n2,n3,n4;int k=9;/用于統(tǒng)計(jì)剩余次數(shù)docout<<"請(qǐng)

16、輸入您所猜的四位數(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<<"請(qǐng)重新輸入正確格式的數(shù)字"<<endl;scanf("%1d%1d%1d%1d",&n1,&n2,&n3,&n4);/若輸入格式錯(cuò)誤重新輸入number.setNum(n1,n2,

17、n3,n4);number.count();cout<<endl;cout<<number.getA()<<"A"<<number.getB()<<"B"<<endl;/輸出結(jié)果(幾A幾B)k-;/剩余次數(shù)減1if(number.getA()=4)cout<<"你猜對(duì)了"<<endl;cout<<"你的本輪得分為"<<(20+10*k)<<"分"<<en

18、dl;/統(tǒng)計(jì)本輪得分s+=(20+10*k);/統(tǒng)計(jì)總分cout<<"你的總分為"<<s<<"分n"<<endl;/統(tǒng)計(jì)總分char yn;cout<<"請(qǐng)輸入Y(繼續(xù))或N(退出)"<<endl;docin>>yn;if(yn='N'|yn='n')number.setA(-1);while(yn!='Y'&&yn!='y'&&yn!='N'

19、;&&yn!='n');/當(dāng)輸入格式正確時(shí)退出循環(huán)if(number.getA()!=4&&number.getA()!=-1)cout<<"你還有"<<k<<"次機(jī)會(huì)"<<endl;cout<<endl;while(number.getA()!=4&&k!=0&&number.getA()!=-1);/次數(shù)用完或者猜對(duì)時(shí)選擇N退出循環(huán)if(number.getA()!=4&&number.getA(

20、)!=-1)cout<<"機(jī)會(huì)用完了,游戲結(jié)束"<<endl;cout<<"正確的數(shù)字為"<<number.getnum1()<<number.getnum2()<<number.getnum3()<<number.getnum4()<<endl;cout<<"你的本輪得分為0分"<<endl;while(number.getA()=4);/當(dāng)猜對(duì)時(shí)循環(huán)結(jié)束cout<<endl;cout<<"你的最終得分為"<<s<<"分"<<endl;if(s>score.getS3()&&s<score.getS2()score.setS3(s);/當(dāng)成績(jī)介于第二名和第三名時(shí)替換第三名成績(jī)if(s>score.getS2()&&s<score.getS1()score.setS3(score.getS2();score.setS2(s);/當(dāng)成績(jī)介于第一名和第二名時(shí)修改二、三名成績(jī)if(s>

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論