C++课程设计.docx

上传人:b****8 文档编号:12558585 上传时间:2023-06-06 格式:DOCX 页数:19 大小:133.81KB
下载 相关 举报
C++课程设计.docx_第1页
第1页 / 共19页
C++课程设计.docx_第2页
第2页 / 共19页
C++课程设计.docx_第3页
第3页 / 共19页
C++课程设计.docx_第4页
第4页 / 共19页
C++课程设计.docx_第5页
第5页 / 共19页
C++课程设计.docx_第6页
第6页 / 共19页
C++课程设计.docx_第7页
第7页 / 共19页
C++课程设计.docx_第8页
第8页 / 共19页
C++课程设计.docx_第9页
第9页 / 共19页
C++课程设计.docx_第10页
第10页 / 共19页
C++课程设计.docx_第11页
第11页 / 共19页
C++课程设计.docx_第12页
第12页 / 共19页
C++课程设计.docx_第13页
第13页 / 共19页
C++课程设计.docx_第14页
第14页 / 共19页
C++课程设计.docx_第15页
第15页 / 共19页
C++课程设计.docx_第16页
第16页 / 共19页
C++课程设计.docx_第17页
第17页 / 共19页
C++课程设计.docx_第18页
第18页 / 共19页
C++课程设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++课程设计.docx

《C++课程设计.docx》由会员分享,可在线阅读,更多相关《C++课程设计.docx(19页珍藏版)》请在冰点文库上搜索。

C++课程设计.docx

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;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2