C++课程设计.docx
- 文档编号:25234215
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:19
- 大小:133.81KB
C++课程设计.docx
《C++课程设计.docx》由会员分享,可在线阅读,更多相关《C++课程设计.docx(19页珍藏版)》请在冰豆网上搜索。
C++课程设计
福建农林大学计算机与信息学院
计算机类
课程设计报告
课程名称:
面向对象程序设计课程设计
课程设计题目:
21点扑克牌游戏
姓名:
张文绮
系:
计算机科学与技术
专业:
计算机科学与技术
年级:
2009级
学号:
091150022
指导教师:
刘雄恩
职称:
讲师
2011年1月8日
福建农林大学计算机与信息学院计算机类
课程设计结果评定
评语:
评分项目
分值
得分
①课程设计报告符合规范
10
②类层次结构图和用例图合理
30
③主要技术路线正确
30
④设计报告条理清晰,重点突出
20
⑤有一定的创新性,难易程度
10
成绩:
指导教师签字:
任务下达日期:
2010年12月1日
评定日期:
目录
1课程设计的目的………………………………………………………………1
2课程设计的要求………………………………………………………………1
3课程设计内容……………………………………………………………………1
3.1程序总体设计…………………………………………………………………2
3.2程序运行情况…………………………………………………………………3
3.3程序功能展示…………………………………………………………………3
4总结…………………………………………………………………………………5
参考文献……………………………………………………………………………6
源代码………………………………………………………………………………6
21点扑克牌游戏
1、课程设计目的
1)复习、巩固C++语言的基础知识,进一步加深对C++语言的理解和掌握;
2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力;
3)培养我们在项目开发中团队合作精神、创新意识及能力。
2、课程设计要求
1)掌握使用一种面向对象程序设计语言如BorlandC++或VisualC++等;
2)设计要实用,编程简练,可用,功能全面;
3)说明书、流程图要清楚;
4)通过课程设计,要求学生在指导教师的指导下,独立完成实习课题的全部内容,包括:
a)通过调查研究和上机实习,收集和调查有关技术资料;
b)掌握设计课题的基本步骤和方法;
c)根据课题的要求进行上机实验调试;
5)上交课程设计内容。
3、课程设计内容
3.1程序总体设计方案
类层次结构用例图:
3.2程序运行情况
1)程序编译成功后,即可进入系统主菜单界面;
2)简述游戏规则,提示是否开始游戏;
3)开始游戏,下注,要牌;
4)展示游戏情况;
5)离开游戏。
3.3程序功能展示
进入系统主菜单:
选择y进入游戏:
下注,输入50:
输入y继续要牌:
输入n,显示上次玩的各种数据:
选择y继续游戏,下注赌注超过赌本,要求重新输入:
再玩两局之后,输入n离开游戏:
4、总结
此次《21点扑克牌游戏》的课程设计过程中反复修改了,多次调试和运行,目的是为了来得到尽量好的效果。
设计过程中参照了一些关于牌的类的一些代码,但是还有许多不足之处,只能实现简单的游戏,与真正的21点扑克牌游戏比起来还有很大的差距。
经过这次课程设计的多次修正,多次调试和运行,又在一定程度上加深了对面向对象课程所学知识的理解,在发现问题解决问题的同时也深刻意识到自身对C++课程设计的掌握仍旧有很多的不足之处。
希望能通过这次课程设计,对自己在C++语言程序的学习上有更大的帮助,有助于提高对它的深刻理解。
这次课程设计,当中遇到了很多的问题,有一些知识都已经不太清楚了,但是通过浏览一些关于牌的类的代码的资料,又重新的温习了类和对象、继承、多态和虚函数以及模板的内容。
在这次设计中也使我们的同学关系更进一步了,我跟周战同学互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。
在此要感谢我的指导老师——刘雄恩老师,感谢刘老师给我们这样的机会锻炼。
在整个课程设计过程中我懂得了许多东西,也培养了我独立设计的能力,树立了对自己学习能力的信心,相信会对今后的学习、工作和生活有非常重要的影响,而且大大提高了动手的能力,使我充分体会到了在创造过程中的成功和喜悦。
参考文献
[1]马石安、魏文平.面向对象程序设计教程.北京:
清华大学出版社,2007.
[2]谭浩强.C程序设计(第三版).北京:
清华大学出版社,2007.
源代码:
#include
#include
#include
usingnamespacestd;
classCCard
{
private:
intnaPip[5];//一共五张牌
intnNumber;//发了多少张牌
intnDollar;//赌本
intnGamble;//赌注
intnWin;//赢局数
intnLose;//输局数
intnDraw;//平局数
public:
CCard();//构造函数
voidFirstPlayTwo();//最初的两张牌
intGetNumber();//返回牌张
intGetPip();//返回点数
voidDisplayPip();//依次全部显示牌面的点数
voidDisplayPip(int);//除了第一张牌,依次显示全部牌面点数(针对计算机牌的显示)
voidTurnPlay();//出一张牌。
voidWin();//赢了计算赌注
voidLose();//输了
voidDraw();//平局
intSetGamble(int);//设置赌本,赌本不够返回-1
intGetMoney();//返回钱数
voidDisplayInfo();//打印必要的信息
intGetCurrentCard();//返回当前的牌点
};
CCard:
:
CCard()//构造函数,初始化
{
nNumber=0;
nDollar=100;//初始赌注为100美元
for(inti=0;i<5;i++)
naPip[i]=0;
nGamble=0;
nWin=nLose=nDraw=0;
}
intCCard:
:
GetMoney(void)
{
returnnDollar;
}
voidCCard:
:
DisplayInfo()//打印必要的信息
{
cout<<"您一共玩了"< "< cout<<"您的赌本共计有$"< "< } intCCard: : SetGamble(intgamble) { if(nDollar-gamble<0) { return-1; } if(gamble<0) { if(nDollar-20<0) return-1; nGamble=20; } else nGamble=gamble; nDollar-=nGamble; return0; } voidCCard: : FirstPlayTwo()//最初两张牌 { naPip[0]=rand()%13+1; naPip[1]=rand()%13+1; nNumber=2; } intCCard: : GetCurrentCard() {returnnaPip[nNumber-1];} intCCard: : GetNumber() { returnnNumber; } intCCard: : GetPip() { intnPip=0; for(inti=0;i { if(naPip[i]>=10) nPip+=10; else nPip+=naPip[i]; } returnnPip; } voidCCard: : DisplayPip() { for(inti=0;i cout< cout< } voidCCard: : TurnPlay() { nNumber++; naPip[nNumber-1]=rand()%13+1; } voidCCard: : Win() { cout<<"赢家牌面: "; DisplayPip(); cout<<"牌面点数: "< nDollar=nDollar+2*nGamble; nWin++; cout<<"赌本: $"< cout< cout< } voidCCard: : Lose() { nLose++; cout<<"输家的牌面: "; DisplayPip(); if(GetPip()>21) cout<<"暴了! "< else cout<<"牌面点数: "< cout<<"赌本: $"< cout< } voidCCard: : Draw() { nDraw++; nDollar+=nGamble; cout<<"平局牌面: "; DisplayPip(); if(GetPip()>21) cout<<"暴了! "< else cout<<"牌面点数: "< cout<<"赌本: $"< cout< } voidCCard: : DisplayPip(intn) { cout<<"[*]"<<'\t'; for(inti=1;i cout< cout< } voidDisplayRule(void) { cout<<"\t欢迎进入21点游戏世界! \n\n"; cout<<"\t游戏规则: \n"; cout<<"\t1.玩家最多可以要5张牌;\n"; cout<<"\t2.如果牌点数的总数超过21点则暴点,自动判数;\n"; cout<<"\t3.赢家可得双倍的赌注;\n"; cout<<"\t4.计算机方在大于等于16点时不再要牌。 \n"; cout<<"\t祝您好运! \n"; cout< } voidJudge(CCard&cpu,CCard&player) { cout< if((cpu.GetPip()>21&&player.GetPip()>21)||cpu.GetPip()==player.GetPip()) { cout<<"\n\n平局! \n"; cout<<"计算机数据: \t"; cpu.DisplayPip(); cout<<"牌面点数: "< cout<<"\n您的数据: \t"; player.Draw(); cout< } elseif((cpu.GetPip()>21)||(player.GetPip()>cpu.GetPip()&&player.GetPip()<=21)) { cout<<"\n\n恭喜您赢了! \n"; cout<<"计算机数据: \t"; cpu.DisplayPip(); cout<<"牌面点数: "< cout<<"\n您的数据: \t"; player.Win(); cout< } else { cout<<"\n\n很遗憾您输了! \n"; cout<<"计算机数据: \t"; cpu.DisplayPip(); cout<<"牌面点数: "< cout<<"\n您的数据: \t"; player.Lose(); cout< } } /*voidCCard: : DisplayPip(intn) { inti; cout<<"[*]"<<'\t'; for(i=1;i cout< cout< }*/ voidPlayTurn(CCard&cpu,CCard&player)//玩一局 { charchChoice; intblCpu=1;//判断是否要牌 intblPlayer=1; cpu.FirstPlayTwo();//计算机和玩家各要两张牌 player.FirstPlayTwo(); do { cout<<"您的牌点为: \t"; player.DisplayPip(); cout<<"计算机的牌点为: \t"; cpu.DisplayPip (1); cout<<"您的牌面点数是: "< if(blPlayer) { cout<<"\n\n您是否继续要牌(Y/N)? "; cin>>chChoice; if((chChoice=='Y'||chChoice=='y')) { if(player.GetNumber()<5) { player.TurnPlay(); cout<<"您要的这张牌是: "< if(player.GetPip()>21) blPlayer=0; } else { cout<<"对不起,您已经要了5张牌,不能再要牌了! "; blPlayer=0; } } if(chChoice=='n'||chChoice=='N') blPlayer=0; } if(cpu.GetPip()<16&&cpu.GetNumber()<5) { cpu.TurnPlay(); cout<<"计算机要牌,牌点是: "< } else blCpu=0; if(blCpu&&player.GetNumber()<5&&player.GetPip()<21) blPlayer=1; } while(blCpu||blPlayer); Judge(cpu,player);// return; } intmain() { srand((unsigned)time(NULL));//初始化随机数种子 CCardcpu,player; intblLogic; intnMoney;// DisplayRule();// charchChoice; cout<<"是否现在开始游戏(Y/N)? \n"; cin>>chChoice; while(chChoice=='Y'||chChoice=='y') { do { cout<<"您现在有的赌本: $"< cout<<"\n请下注(赌注不能超过赌本);"; cin>>nMoney; blLogic=player.SetGamble(nMoney); if(blLogic) cout<<"您的赌本不够,请重新下注! \n"; } while(blLogic); PlayTurn(cpu,player);// cout<<"是否继续21点游戏(Y/N)? \n"; cin>>chChoice; } player.DisplayInfo(); cout<<"您的选择是明智的,赌博有碍家庭和睦! \n"; cout<<"欢迎再次使用此程序! "< return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计