成都工業(yè)學(xué)院-拱豬游戲?qū)V軋?bào)告-陳光超(附源代碼)_第1頁(yè)
成都工業(yè)學(xué)院-拱豬游戲?qū)V軋?bào)告-陳光超(附源代碼)_第2頁(yè)
成都工業(yè)學(xué)院-拱豬游戲?qū)V軋?bào)告-陳光超(附源代碼)_第3頁(yè)
成都工業(yè)學(xué)院-拱豬游戲?qū)V軋?bào)告-陳光超(附源代碼)_第4頁(yè)
成都工業(yè)學(xué)院-拱豬游戲?qū)V軋?bào)告-陳光超(附源代碼)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(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)介

成都工業(yè)學(xué)院課程設(shè)計(jì)報(bào)告課程名稱C++面向?qū)ο笤O(shè)計(jì)課題名稱 拱豬游戲?qū)I(yè)軟件工程〔2〕班班級(jí)1506032班班號(hào)150603236學(xué)號(hào)1501511668姓名陳光超指導(dǎo)教師楊明廣2016年6月26日目錄25325目錄..............................................................1一題目要求............................................................................................................-2-1.1問(wèn)題描述求................................................................................................-2-1.2設(shè)計(jì)要求....................................................................................................-2-1.3顯示要求....................................................................................................-2-1.4擴(kuò)展的要求................................................................................................-2-二詳細(xì)設(shè)計(jì)............................................................................................................-3-三游戲功能............................................................................................................-3-四特色功能...........................................................................................................-3-五設(shè)計(jì)總結(jié)...........................................................................................................-3-六開(kāi)發(fā)進(jìn)度...........................................................................................................-4-八源代碼...............................................................................................................-7-專周報(bào)告,程序源代碼,拱豬游戲電腦版,成都工業(yè)學(xué)院計(jì)算機(jī)工程學(xué)院軟件工程

題目要求1.問(wèn)題描述:設(shè)計(jì)一個(gè)“拱豬”游戲2.設(shè)計(jì)要求1、用面向?qū)ο蟮乃枷刖帉懗绦驅(qū)崿F(xiàn)以上功能,并調(diào)試通過(guò)。2、編寫實(shí)驗(yàn)報(bào)告。3、程序顯示要求-------------------------------------------------------------------- EAST SOUTH WEST NORTHBIGER--------------------------------------------------------------------1 S3 S9 SJ SA SA2 D5 D3 D10 D9 D103 ……13 H9 H8 HQ H8 HQ--------------------------------------------------------------------SCORE -50 -100 -20 -303.顯示要求:顯示內(nèi)容包括:〔1〕初始化52張牌的結(jié)果〔2〕洗牌的結(jié)果〔3〕發(fā)牌的結(jié)果〔4〕每輪出牌的過(guò)程和結(jié)果〔5〕計(jì)分的結(jié)果4.擴(kuò)展的要求1、使用文件——建立一個(gè)英雄榜2、使用運(yùn)算符重載

詳細(xì)設(shè)計(jì)主函數(shù)一般設(shè)計(jì)得比擬簡(jiǎn)單,只提供輸入,處理和輸出局部的函數(shù)調(diào)用,其中各功能模塊用菜單方式選擇.其他界面UI函數(shù)和主函數(shù)類似。流程圖:顯示一系列功能模塊N輸入n,判斷n是否是0-6Y根據(jù)n的值調(diào)用各功能模塊函數(shù)游戲功能1.顯示初始化牌的結(jié)果2.開(kāi)始游戲,去除已有的游戲數(shù)據(jù)3.繼續(xù)游戲,讀取已有的游戲數(shù)據(jù)4.查看英雄榜,根據(jù)喂肥次數(shù)排行5.人機(jī)對(duì)戰(zhàn),玩家自己選擇出的牌6.游戲說(shuō)明,介紹游戲玩法特色功能1.兩種出牌算法,最簡(jiǎn)單出牌算法,智能出牌算法2.文件儲(chǔ)存游戲數(shù)據(jù),退出游戲,仍然可以讀取上次的數(shù)據(jù)3.繼續(xù)游戲,讀取上次的游戲數(shù)據(jù)4.人機(jī)對(duì)戰(zhàn),玩家自己選擇想要出的牌,并且系統(tǒng)會(huì)判斷是否符合游戲出牌規(guī)那么。設(shè)計(jì)總結(jié)1.完成專周設(shè)計(jì)的所有要求。2.界面有詳細(xì)的計(jì)分顯示。3.用戶輸入判斷,并提示用戶輸入是否錯(cuò)誤。4.程序抗干擾性強(qiáng),不會(huì)出現(xiàn)死循環(huán),崩潰等情況。5.操作流程人性化,提示用戶操作,自由返回游戲主界面。

游戲開(kāi)發(fā)進(jìn)度滿足專周程序設(shè)計(jì)要求,程序抗干擾性強(qiáng)。程序版本1-12根底功能開(kāi)發(fā)。程序版本13-17修復(fù)BUG,界面UI調(diào)節(jié)。程序版本18-22擴(kuò)展功能開(kāi)發(fā)。程序版本23-34修復(fù)BUG,細(xì)節(jié)調(diào)整。程序版本35-36增加人機(jī)對(duì)戰(zhàn)功能。//*************************************************************///**12解決第二局出牌錯(cuò)誤,初始化handnum//**13優(yōu)化出牌規(guī)那么//**14添加計(jì)分模塊//**15精簡(jiǎn)程序代碼和出牌規(guī)那么//**16優(yōu)化計(jì)分統(tǒng)計(jì)//**17重寫查找牌的函數(shù)game.seek();//*************************************************************///**18程序擴(kuò)展功能開(kāi)發(fā)(繼續(xù)游戲 英雄榜)//**19修復(fù)數(shù)據(jù)傳遞出現(xiàn)問(wèn)題int*ifile(int*)//**20完成模塊:繼續(xù)游戲//**21優(yōu)化算法,精簡(jiǎn)代碼//**22完成模塊:英雄榜//*************************************************************///**23開(kāi)始修復(fù)BUG//**24界面顯示調(diào)整//**25修復(fù)重大BUG//**26修復(fù)英雄榜//**27程序優(yōu)化,精簡(jiǎn)代碼//**28界面顯示調(diào)整,抗輸入干擾intoption();//**29提高程序可移植性,變量調(diào)整,注釋調(diào)整,改變對(duì)象數(shù)組初始化的方式//**30修復(fù)計(jì)分系統(tǒng),添加游戲速度調(diào)整功能//**31添加系統(tǒng)出牌函數(shù)②//**32優(yōu)化英雄榜//**33優(yōu)化計(jì)分系統(tǒng)//**34優(yōu)化顯示和操作流程//*************************************************************///**35開(kāi)發(fā)人機(jī)對(duì)戰(zhàn)功能//**36增加游戲說(shuō)明//*************************************************************/

七.游戲運(yùn)行截圖①主界面,抗干擾輸入②打牌截圖,詳細(xì)的計(jì)分顯示③英雄榜,按照喂肥次數(shù)排行④人機(jī)對(duì)戰(zhàn),詳細(xì)操作提示八.拱豬游戲源代碼,版本36#源碼下載,#include<iostream>#include<fstream>#include<string>#include<stdlib.h>#include<ctime>#include<iomanip>usingnamespacestd;classCard;classGame;classPlayer;intask(); //是否執(zhí)行操作判斷,Y/y確認(rèn)〔返回值1〕,其它鍵取消操作〔返回值0〕。intoption(int,int); //判斷用戶輸入voidindex(); //游戲開(kāi)始界面voidlook(); //查看洗牌結(jié)果voiddsceen(); //清屏函數(shù)voidreadme(); //游戲說(shuō)明voidwait(intk=1); //等待輸入函數(shù),用于調(diào)整游戲速度voidstartGame(int*start=NULL,intman=0); //游戲開(kāi)始函數(shù)//********************************///** 程序擴(kuò)展功能//**繼續(xù)游戲 英雄榜//********************************/voidcontiGame(); voidlist();voidofile(int*num); //儲(chǔ)存玩家數(shù)據(jù)int*ifile(int*num); //讀取玩家數(shù)據(jù)voidmanWar(); //人機(jī)對(duì)戰(zhàn)功能classCard //******************定義撲克牌類*******************{public: Card(){face=0;suit=0;} intface; intsuit; intvalue(); //牌的分值 voidprint(); //輸出一張牌 voidsetCard(intf,ints){face=f;suit=s;}};intCard::value() //牌的分值 { intnum=0; if(suit==2) //紅心 { switch(face) { case2: case3: case4:num=0;break; case5: case6: case7: case8: case9: case10:num=-10;break; case11:num=-20;break; case12:num=-30;break; case13:num=-40;break; case14:num=-50;break; } } if(suit==1&&face==12) { num=-100; } if(suit==3&&face==11) { num=100; } returnnum;}voidCard::print() //輸出一張牌{ switch(suit) { case1:cout<<"S";break; //黑桃 case2:cout<<"H";break; //紅心 case3:cout<<"D";break; //方塊 case4:cout<<"C";break; //草花 } switch(face) { case2: case3: case4: case5: case6: case7: case8: case9:cout<<""<<face;break; case10:cout<<face;break; case11:cout<<""<<"J";break; case12:cout<<""<<"Q";break; case13:cout<<""<<"K";break; case14:cout<<""<<"A";break; }}classPlayer //*******************定義玩家類*******************{public: Player(){} Player(stringn):name(n){fats=0;totals=0;handnum=13;} voidprint(); intscore(intn=0); //玩家此局得分 inttotal(intn=0); //玩家的總分 intfat(intn=0); //玩家喂肥次數(shù) CardallCard[13]; voidget(Card*); //獲取牌 stringname; Cardsendx(Card*,int,int); //*****默認(rèn)出牌函數(shù)①********* Cardsend2(Card*,int,int); //*****系統(tǒng)出牌函數(shù)②********* Cardsendman(Card*,int,int);//*人工出牌函數(shù) CardsendCard; //當(dāng)前所要出的這張牌 Card*pcard(Card*card=NULL); //玩家贏得的牌 intcardnum; //玩家贏得的牌數(shù) Cardhand[13]; //手中剩余的牌 private: intscores; //玩家此局得分 inttotals; //玩家的總分 intfats; //玩家喂肥次數(shù)inthandnum; //手中剩余牌的數(shù)量,打完牌會(huì)導(dǎo)致值為零,每次發(fā)牌后,賦值13 Cardsendn(intn); Cardpcards[52]; //玩家贏得的牌};intPlayer::total(intn) //玩家的總分{ totals+=n; returntotals;}intPlayer::score(intn) //玩家此局得分{ scores+=n; returnscores;}intPlayer::fat(intn) //玩家喂肥次數(shù){ fats+=n; returnfats;}voidPlayer::print() //輸出玩家的所有的牌 { inti; for(i=0;i<handnum;i++) { allCard[i].print(); cout<<""; } cout<<endl;}voidPlayer::get(Card*card) //玩家獲取牌{ handnum=13; scores=0; cardnum=0; for(inti=0;i<13;i++) hand[i]=allCard[i]=card[i];}CardPlayer::sendn(intn) //出第n張牌{ sendCard=hand[--n]; for(;n<handnum-1;n++) hand[n]=hand[n+1]; handnum--; returnsendCard;}Card*Player::pcard(Card*card) //玩家贏得的牌 { if(card) for(inti=0;i<4;i++) { pcards[cardnum]=card[i]; cardnum++; } returnpcards;}CardPlayer::sendx(Card*card,intitem,ints3) //*****玩家出牌函數(shù)①*********{ //參數(shù)依次為上家的牌色,是否首家,當(dāng)前輪次,當(dāng)前局?jǐn)?shù) inti,k=0; if(s3==2) //第一輪出S3,已確定的此玩家有S3 for(i=0;i<handnum;i++) if((hand[i].face==3)&&(hand[i].suit==1)) returnsendn(i+1); if(item!=0) //不是首家出牌 for(i=0;i<handnum;i++) if(card[0].suit==hand[i].suit) returnsendn(i+1); returnsendn(1);}CardPlayer::send2(Card*card,intitem,ints3) //*****玩家出牌函數(shù)②*********{ //參數(shù)依次為首家的牌色,是否首家,是否需出S3 inti,m=0,k=0,n=0,tempnum,max[13]; Cardtempcard,mcard[13]; if(s3==2) //第一輪出S3,已確定首家有S3 for(i=0;i<handnum;i++) if((hand[i].face==3)&&(hand[i].suit==1)) returnsendn(i+1); if(item==0) //是首家出牌,那么出第一張 returnsendn(1); //************************************不是首家出牌*********************/ for(i=0;i<handnum;i++) //找出所有與首家相同牌色的牌 if(hand[i].suit==card[0].suit) { max[m]=i; mcard[m++]=hand[i]; } if(m==0) //無(wú)相同的牌色 { for(i=0;i<handnum;i++) //找出所有紅心的牌 if(hand[i].suit==2) { max[m]=i; mcard[m++]=hand[i]; } } if(m==0) //無(wú)紅心的牌色 { for(i=0;i<handnum;i++) //找出所有牌 { max[m]=i; mcard[m++]=hand[i]; } for(i=0;i<m;i++) //找出最大的牌 for(intj=i;j<m;j++) if(mcard[i].face<mcard[j].face) { tempcard=mcard[i]; tempnum=max[i]; mcard[i]=mcard[j]; max[i]=max[j]; mcard[j]=tempcard; max[j]=tempnum; } returnsendn(max[0]+1); } else { for(i=0;i<m;i++) //找出最小的紅心牌 for(intj=i;j<m;j++) if(mcard[i].face>mcard[j].face) { tempcard=mcard[i]; tempnum=max[i]; mcard[i]=mcard[j]; max[i]=max[j]; mcard[j]=tempcard; max[j]=tempnum; } returnsendn(max[0]+1); } }CardPlayer::sendman(Card*card,intitem,ints3) //人機(jī)對(duì)戰(zhàn),人工出牌函數(shù){ inti,k,m=0,op=0,num[52]; Cardmcard[52]; cout<<"|選項(xiàng)"; for(i=0;i<handnum;i++) { cout<<"|"<<setw(3)<<i+1; } cout<<"|"<<endl; cout<<"|我的牌"; for(i=0;i<handnum;i++) { cout<<"|"; hand[i].print(); } cout<<"|"<<endl; if(s3==2) //第一輪出S3,已確定的此玩家有S3 { cout<<"第一局,且有S3,請(qǐng)出S3"; for(i=0;i<handnum;i++) if((hand[i].face==3)&&(hand[i].suit==1)) k=i+1; while(1) { if(k==option(1,handnum)) return sendn(k); else cout<<"出牌錯(cuò)誤!"; } } if(item==0) //首家出牌 { cout<<"首家出牌"; return sendn(option(1,handnum)); } if(item!=0) //不是首家出牌 { cout<<"不是首家出牌,"; for(i=0;i<handnum;i++) //找出所有與首家相同牌色的牌 if(hand[i].suit==card[0].suit) { num[m]=i; mcard[m++]=hand[i]; } if(m>0) //有相同的牌色 { cout<<"有相同的牌色,"; while(1) { op=option(1,handnum); for(i=0;i<m;i++) { if((num[i]+1)==op) return sendn(op); } if(m==i) cout<<"出牌錯(cuò)誤!"; } } else //無(wú)相同的牌色 { cout<<"無(wú)相同的牌色,"; return sendn(option(1,handnum)); } } cout<<"算法錯(cuò)誤"; return sendn(1);}classGame //********************定義游戲類********************{public: Game(); intH_all; //是否有所有紅心 intC_10; //是否有C10 intscore(Card*); //計(jì)分系統(tǒng),參數(shù)〔首家,牌色〕 voidprint(); //輸出所有牌 voidshuffle(); //洗牌 Card*deal(intn); //發(fā)牌給玩家 intseek(Card*card,intface,intsuit,intnum); //查找牌函數(shù) intmax(Player*player,intsuitk); //得出誰(shuí)是最大玩家 intTscore(Card*card,intcardnum); //計(jì)分系統(tǒng),每局計(jì)分 private: CardallCard[52]; };Game::Game() //初始化牌{ intk=0; for(inti=1;i<=4;i++) for(intj=2;j<=14;j++) allCard[k++].setCard(j,i);}intGame::score(Card*card) //計(jì)分系統(tǒng),每輪計(jì)分{ return(card->value())+((card+1)->value())+((card+2)->value())+((card+3)->value());}intGame::Tscore(Card*card,intcardnum) //計(jì)分系統(tǒng),每局計(jì)分{ inti,sum=0; for(i=0;i<cardnum;i++) sum+=card[i].value(); for(i=0;i<13;i++) //判斷是否得到全部紅心 if(!seek(card,i,2,cardnum)) H_all=0; //贏得的牌中無(wú)此張紅心 if(H_all==1) if(sum<0) sum=-sum; if(C_10=seek(card,10,4,cardnum)) //判斷是否得到草花10,C10 sum*=2; returnsum;}voidGame::shuffle() //洗牌{ srand(time(0)); for(inti=0;i<52;i++) { intk=rand()%52; Cardtemp=allCard[i]; allCard[i]=allCard[k]; allCard[k]=temp; }}Card*Game::deal(intn) //發(fā)牌給玩家{ return&allCard[13*(n-1)];}voidGame::print() //輸出所有牌 { for(inti=0;i<52;i++) { allCard[i].print(); cout<<""; if((i+1)%13==0) cout<<endl; }}intGame::seek(Card*card,intface,intsuit,intnum) //查找牌函數(shù){ //判斷玩家誰(shuí)有這張牌 for(inti=0;i<num;i++) if((card[i].face==face)&&(card[i].suit==suit)) return1; return0;}intGame::max(Player*player,intsuitk) //得出誰(shuí)是最大玩家 { inti,m=0,n=0,num[4]; for(i=0;i<4;i++) //過(guò)濾掉與首家不同色的玩家 if(player[i].sendCard.suit==suitk) num[n++]=i; Playertemp=player[num[0]]; for(i=0;i<n;i++) { if(player[num[i]].sendCard.face>temp.sendCard.face) temp=player[num[m=i]]; } returnnum[m];}intmain() //*************************主函數(shù)************************/{ while(1) { dsceen(); index(); switch(option(0,6)) { case1:look();break; case2:startGame();break; case3:contiGame();break; case4:list();break; case5:manWar();break; case6:readme();break; case0:exit(0); } } return0;}voidindex() //游戲開(kāi)始界面{ cout<<"**************************************************"<<endl; cout<<"******當(dāng)前游戲:拱豬******"<<endl; cout<<"**************************************************"<<endl; cout<<"****1,查看初始化牌****"<<endl; cout<<"****2,開(kāi)始新的游戲****"<<endl; cout<<"****3,讀取游戲數(shù)據(jù)****"<<endl; cout<<"****4,查看英雄榜****"<<endl; cout<<"****5,人機(jī)對(duì)戰(zhàn)****"<<endl; cout<<"****6,游戲說(shuō)明****"<<endl; cout<<"****0,退出游戲****"<<endl; cout<<"**************************************************"<<endl;}intask() //是否執(zhí)行操作判斷,Y/y確認(rèn)〔返回值1〕,其它鍵取消操作〔返回值0〕。{ charch; cin.sync(); cout<<"(操作確認(rèn):請(qǐng)輸入Y/y確認(rèn),任意鍵取消操作)"; ch=getchar(); if(ch=='Y'||ch=='y') return1; return0;}intoption(inta,intb) //判斷用戶輸入{ intop=-1; while(op<a||op>b) { cout<<"請(qǐng)輸入選擇項(xiàng):"; cin.clear(); cin.sync(); cin>>op; if(op<a||op>b) { cout<<"輸入錯(cuò)誤!"; continue; } break; } returnop;}voidlook(){ cout<<"初始化牌的結(jié)果:"<<endl; Gamegame; game.print(); wait(0);}voidwait(intk) //等待輸入函數(shù){ cin.clear(); cin.sync(); switch(k) { case0: getchar(); break; //正常速度級(jí)別,等待輸入 case1: cout<<endl; break; //直接顯示每局結(jié)果 default: cout<<endl; }}voiddsceen() //清屏函數(shù){#ifdef_WIN32 system("cls"); #else system("clear"); cout<<"當(dāng)前系統(tǒng)可能是Linux內(nèi)核,如果是安卓系統(tǒng),請(qǐng)橫屏。"<<endl;#endif cout<<"系統(tǒng)提示:玩家1〔Man〕采用智能算法/人工出牌,其他玩家采用菜鳥算法。"<<endl;}voidstartGame(int*start,intman) //*********************游戲開(kāi)始函數(shù)**********************{ Gamegame; Cardtemp; CardgameCard[4]; inti=0; //循環(huán)參數(shù) intendi=0; //是否有玩家被喂肥 intgamen=0; //儲(chǔ)存游戲局?jǐn)?shù) intgamek=0; //儲(chǔ)存此局誰(shuí)先出牌 intgamenext=0; //儲(chǔ)存下一局先出牌 int suitk=0; //儲(chǔ)存牌色 intC_10=-1; //儲(chǔ)存誰(shuí)贏得草花 intH_all=-1; //儲(chǔ)存誰(shuí)贏得所有紅心 Playerplayer[4]={ Player("Man"), Player("WEST"), Player("SOUTH"), Player("NORTH"), }; if(start) //讀取儲(chǔ)存的玩家數(shù)據(jù) { cout<<"玩家數(shù)據(jù):喂肥次數(shù)總分"<<endl; for(inti=0;i<4;i++) { player[i].fat(start[i]); player[i].total(start[i+4]); cout<<setw(6)<<player[i].name<<":"<<setw(8)<<player[i].fat()<<setw(10)<<player[i].total()<<endl; } cout<<"按任意鍵繼續(xù)游戲"; wait(0); } dsceen(); while(++gamen)//進(jìn)入游戲 { game.shuffle(); //洗牌 for(i=0;i<4;i++) player[i].get(game.deal(i+1)); //發(fā)牌給玩家 if(gamen==1) //如果是第一局游戲,找出手中有S3的玩家 { for(i=0;i<4;i++) if(game.seek(player[i].hand,3,1,13)) gamek=i; } else { gamek=gamenext; for(i=0;i<4;i++) if(game.seek(player[i].hand,12,1,13)) gamenext=i; //得出手中有SQ的玩家 } cout<<"*****************************************************************************"<<endl; //輸出發(fā)牌結(jié)果 cout<<"**|———————————————————————————————————|***"<<endl; cout<<"**|————||當(dāng)前第"<<setw(2)<<gamen<<"局||最先出牌玩家:"<<setw(5)<<player[gamek].name<<"||發(fā)牌結(jié)果:||————"<<endl; for(i=0;i<4;i++) //輸出發(fā)牌結(jié)果 { cout<<"**|"<<setw(6)<<player[i].name<<"|"; player[i].print(); } if(man==0) { cout<<"**|—————————————————————————————————————"<<endl; //開(kāi)始輸出打牌結(jié)果 cout<<"**|玩家|"<<"Man|"<<"WEST|"<<"SOUTH|"<<"NORTH|"<<"-BIGER-|"<<"數(shù)據(jù)統(tǒng)計(jì)"<<endl; } for(intturn=1;turn<=13;turn++) { cout<<setiosflags(ios::left); //所有數(shù)字靠左顯示 if(man==0) { cout<<"**|第"<<setw(3)<<turn<<"輪"; for(intitem=0;item<4;item++) //玩家此輪出牌數(shù)據(jù)處理 { switch((gamek+item)%4) { //此處設(shè)置玩家算法,sendx系統(tǒng)默認(rèn)菜鳥算法,send2為智能算法 case0:gameCard[item]=player[0].send2(gameCard,item,gamen+item);break; case1:gameCard[item]=player[1].sendx(gameCard,item,gamen+item);break; case2:gameCard[item]=player[2].sendx(gameCard,item,gamen+item);break; case3:gameCard[item]=player[3].sendx(gameCard,item,gamen+item);break; } } } else { cout<<"——|第"<<setw(3)<<turn<<"輪————————————————"<<endl; for(intitem=0;item<4;item++) //玩家此輪出牌數(shù)據(jù)處理 { switch((gamek+item)%4) { //此處設(shè)置玩家算法,sendman為人工出牌,send2為智能算法 case0:gameCard[item]=player[0].sendman(gameCard,item,gamen+turn+item);//人工出牌 cout<<setw(6)<<player[0].name<<":";player[0].sendCard.print();wait(0);break; case1:gameCard[item]=player[1].sendx(gameCard,item,gamen+turn+item); cout<<setw(6)<<player[1].name<<":";player[1].sendCard.print();wait(0);break; case2:gameCard[item]=player[2].sendx(gameCard,item,gamen+turn+item); cout<<setw(6)<<player[2].name<<":";player[2].sendCard.print();wait(0);break; case3:gameCard[item]=player[3].sendx(gameCard,item,gamen+turn+item); cout<<setw(6)<<player[3].name<<":";player[3].sendCard.print();wait(0);break; } } } gamek=game.max(player,gameCard[0].suit); //得出牌點(diǎn)最大的玩家 player[gamek].pcard(gameCard); //把牌儲(chǔ)存給最大的玩家 if(man==0) { for(i=0;i<4;i++) //顯示此輪所出的牌 { cout<<"|"; player[i].sendCard.print(); cout<<""; } cout<<"|"; player[gamek].sendCard.print(); cout<<"|玩家"<<gamek%4+1<<"得分:"<<game.score(gameCard); wait(); } else { cout<<"最大玩家"<<player[gamek].name<<"得分:"<<game.score(gameCard); wait(0); } } // ************************************* 此局結(jié)束,開(kāi)始計(jì)分 *************************// for(i=0;i<4;i++) { player[i].score(game.Tscore(player[i].pcard(),player[i].cardnum)); player[i].total(player[i].score()); if(game.H_all==1) H_all=i; //得出贏得全部紅心的玩家 if(game.seek(player[i].pcard(),10,4,player[i].cardnum)) C_10=i; //得出手中有C10的玩家 } cout<<"**|—————————————————————————————————————"<<endl; cout<<"**|玩家|"<<"Man|"<<"WEST|"<<"SOUTH|"<<"NORTH|"<<" 數(shù)據(jù)統(tǒng)計(jì)"<<endl; cout<<"**|總共得分|"; cout<<showpos; //對(duì)正數(shù)顯示“+”號(hào) cout<<setw(5)<<player[0].score()<<"|"<<setw(5)<<player[1].score()<<"|"<<setw(5)<<player[2].score()<<"|"<<setw(5)<<player[3].score()<<"|"; cout<<"備注:玩家"<<player[C_10].name<<"分?jǐn)?shù)加倍"<<endl; cout<<"**|玩家總分|"; cout<<setw(6)<<player[0].total()<<"|"<<setw(6)<<player[1].total()<<"|"<<setw(6)<<player[2].total()<<"|"<<setw(6)<<player[3].total()<<"|"; if(0<=H_all&&H_all<=3) cout<<"備注:玩家"<<player[H_all].name<<"分?jǐn)?shù)為正"<<endl; else cout<<"備注:無(wú)玩家獲得所有紅心"<<endl; cout.unsetf(ios::showpos); cout.unsetf(ios::left); cout<<"**|———————————————————————————————————|***"<<endl; cout<<"*****************************************************************************"<<endl; // ************************************* 此局計(jì)分完成 *************************// for(i=0;i<4;i++) //用于判斷是否有玩家總分為零 if(player[i].total()<=-1000) endi=1; intnum[8]; //儲(chǔ)存玩家數(shù)據(jù) for(i=0;i<4;i++) { if(endi) num[i+4]=0; else num[i+4]=player[i].total(); if(player[i].total()<=-1000) num[i]=player[i].fat(1); else num[i]=player[i].fat(0); } ofile(num); //儲(chǔ)存玩家數(shù)據(jù) if(endi==0) //無(wú)玩家總分小于-1000 { cout<<"此局結(jié)束,是否退出游戲?"<<endl<<""; if(ask()) break; } else while(gamek!=1000) { cout<<endl; cout<<"|—————————————————————————————|"<<endl; cout<<"|游戲結(jié)束|"<<endl; for(i=0;i<4;i++) { if(player[i].total()<=-1000) cout<<"|"<<setw(5)<<player[i].name<<"喂肥啦|"<<endl; } cout<<"|玩家得分超過(guò)-1000分|"<<endl; cout<<"|所有玩家總分已初始化為零|"<<endl; cout<<"|請(qǐng)輸入1000返回游戲主界面|"<<endl; cout<<"|—————————————————————————————|"<<endl; wait(); cin>>gamek; } if(gamek==1000) break; cout<<endl; }}/********************************//** 程序擴(kuò)展功能/**繼續(xù)游戲 英雄榜/********************************/voidcontiGame(){ intnum[8]; if(ifile(num)) startGame(num); else { cout<<"無(wú)玩家數(shù)據(jù),直接進(jìn)入游戲。"; wait(0); startGame(); }}voidlist(){ inti,j,temp1,temp2; intnum[8],py[8],player[8]; if(ifile(player)) { for(i=0;i<8;i++) { py[i]=player[i]; num[i]=i; } for(i=0;i<4;i++) for(j=i;j<4;j++) { if(py[i]<py[j]) { temp1=py[i]; temp2=num[i]; py[i]=py[j]; num[i]=num[j]; py[j]=temp1; num[j]=temp2; } } cout<<">>>>>>拱豬游戲英雄榜<<<<<<"<<endl; cout<<"玩家|喂肥次數(shù)|當(dāng)前總分"<<endl; for(i=0;i<4;i++) { switch(num[i]) { case0:cout<<"Man|"<<player[num[i]]<<"|"<<showpos<<player[num[i]+4]<<endl; cout.unsetf(ios::showpos);break; case1:cout<<"WEST|"<<player[num[i]]<<"|"<<showpos<<player[num[i]+4]<<endl; cout.unsetf(ios::showpos);break; case2:c

溫馨提示

  • 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)論