《程序设计-21点扑克牌游戏》由会员分享,可在线阅读,更多相关《程序设计-21点扑克牌游戏(15页珍藏版)》请在金锄头文库上搜索。
1、课 程 设 计课程名称: 程 序 设 计 课题名称: 21点扑克牌游戏班 级: 计算机学院12-2BJ班 完毕人: 曹开明() 指引教师: 李宛珊 湖南理工学院计算机学院 12 月19日一、设计目的 面向对象程序设计课程设计是计算机科学与技术专业和软件工程专业集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。其目的在于加深对面向对象程序设计中基本理论和基本知识的理解,培养学生的实践能力,增进理论与实践的结合。通过课程设计,让学生可以纯熟运用C+进行面向对象编程,建立对象模型,减少软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。二、
2、系统的功能分析必须涉及:系统的功能需求,可以画出功能模块图程序的N-流程图如下图所示:初始化随机种子 显示游戏规则While (chchoice) Yy nN 判断chchoice Do.while 你的选择是明智的显示游戏规 个 则 三、系统的程序设计与实现系统的运营环境:isual C+ 6.0(完整绿色版)开发环境:C+系统的具体设计:类cas CCar该程序只需要一种CCard类,其中有如下环节:lass CCard rivat:nt mPip; (一共有5张牌)Int mNumer; (牌的张数)nt mDolla; (一共有多少钱)It mable; (赌注)Int mWi; (赢
3、得局数)ntmLose; (输的局数)IntmDraw; (平的局数)Pblic:Cad(); (构造函数初始化)Voi FstplayTo();(第一次出两张牌)Int GetNumbr(); (返回牌的数目)IntGtPi(); (显示牌的总点数)Vid DislaPp();(一次显示牌的点数)oid isayPip(int);(除第一张牌,一次显示牌的点数)oiTrnpla();(出第一张牌)Vo i();(赢了多少钱)Void Lose();(输了)Vira();(平了)Int SetGamble(nt);(设立赌注)In Gtey();(返回钱数)Vo DplayInfo();(打印
4、必要信息)It GetCurrentCad();(返回目前牌)四、系统的运营成果与分析重要是开始运营的界面: 当赌注下多了:玩完游戏:附录:系统的源程序#cud#include#incuecieuing naespae td;classCCardiae:ntnPi5;n nNmbe;intnolla;innGamble;int nWin;int nose;int raw;ubic:Card();vod Fistlaywo();int GeNmbr();int Gtip();void slaP();void Dsplayip(n);void unPlay();vid Win();voi ose(
5、);void Draw();in SGmbl(int);int GeMoey();oiDisplayno();int Geturentard();;CCard:Crd()Nmer=0;Dolar=100;or(it =0;5;+)aPii=0;nGale=0;Win=nLose=Daw=0;inCCar::etMone(void) returnDllar;vodCad:DislaInfo()cout您一共玩了Win+nLose+nDaw局, 赢了nWn局, 输了nLose局,平局Daw次。;ct你的赌本合计有 $nllar。n;int CCad:SetGamble(it gabl) if(no
6、ar-mle0)retu -1;f(gmble0)f(nDoar-200)return -1;amble=20;elsenGmblemble;ollr-=naml;reurn 0;void CCrd:irstlayT() naPip=rand()%131;naip1rand()%3+1; nNumbr;n CCard:GtrrentCrd() return naPinNumber-1;intCCard:Getmber() reurn nNber;int ard::GetPp()iip=0;fr(int i=;i0)nPip+=10;elsenPp+=naPi;run ni;void CCard
7、:DilayP() for(in =;nNume;i+)counaPip;outend;vo CCad:TurnPly() nNumber+;napnNume1=rand()1+1;void CCad::in() cout赢家牌面:;DisplayPip();cou牌面点数: GePip()dl;nDollr=nDola+2*nGmble;nWi+;cou赌本:$nDlar 赢了nWin次 输了nLoe次平局Drw次endl;cutendl2)cout暴了!n;eecout牌面点数:GePip()en;cout赌本:nllar 赢了in次 输了nLoe次平局nDr次ndl;cutnlend;v
8、oiCard:Draw() nDraw+;nDollr+=nGmbe;cu)cout暴了!n;escout牌面点数: GetPi()edl;ou赌本:$nDollar 赢了nWi次 输了nLse次平局nw次endl;oendlndl;voidCard:DisplyPip(int n) cout*t;or(int i=1;iNmbr;i+)cutnaPipit;oendl;oid DplayRe(void)ct欢迎进入曹开明的21点游戏世界!n;ctt游戏规则:n;ot1.玩家最多可以要5张牌;n;coutt2.如果牌点的总数超过1点则暴点,自动判输;n;coutt3.赢家可得双倍赌注;;cou
9、tt4.计算机方在牌点不小于等于16时不再要牌。n;cout祝您好运!;outendledl;void Judge(Card &u,Crd &layr)cu21&plyerGetp()1)|pu.GtPi()=pler.GPp()) coun平局!n;cout计算机数据:t;u.ispaPp();cout牌面点数:cpu.GetPip()nd;coutn您的数据:t;plaer.Daw();ou21)|(plyr.tPip()cpuetPip()&plyr.GtPip()=1)cotn恭喜您,您赢了!;out计算机数据:t;cpuDisplayi();cout牌面点数:cu.GetPp()endl;coutn您的数据:t;layer.in();couel;lse outn很遗憾,您输了!n;cut计算机数据:t;cu.DsplayPp();cot牌面点数:u.GetPi()edl;coutn您的数据:t;player.oe();otndl;oid Payr(CCard &cu,CCd &plaer) chr Cice;intblC=1,blPler=1;pu.FirstPlaT();plar.rstPlayw();dout您的牌点为:;playrDisplip();cout计算机的牌点为:t