21点c++程序设计报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cin>>ans; if((ans=='h')||(ans=='H')) {
f1.mima(ans,card,player); f1.Gamble(money,bett);
bet+=bett; cout<<"\t\t\t 你是继续要牌还是停止?(是'H'/否'S')"; cin>>ans; if((playerturns<5)&&(ans=='h')&&(player<=21)) {cout<<endl; cout<<"\t\t\t 这牌是:"<<card<<endl; cout<<"\t\t\t 总数是 :"<<player<<endl; cout<<"\t\t\t 你的剩余资本为:"<<money<<endl; } else{player=player-card; bet=bet-bett; money+=bett;}
(超级玩家)。
else{cout<<"如果你想成为高级玩家并获取密码,你必须付出 200 元,你愿
意吗?(是'H'/否'S'):";
cin>>ans;
if((ans=='h')||(ans=='H'))
{
money=money-200;
if(money<0)
{
money=money+200;
cout<<" 你 目 前 还 没 有 这 么 多 资 本 来 享 用 高 级 玩 家 的 权
已经设定了高级玩家享用权利的方法,但美中不足的是“当你已经是高级玩家的
时候,并且已经输过一次密码时,在以后的要牌中系统依旧会提示你是否是高级
玩家”,这不免还有点不怎么人性化,游戏的亲合力还有待进一步加强。 (4)此程序虽然是个比较完善的程序,但其中还存在一些问题,主要的就是程 序太烦琐,给计算机带来一些不必要的负载,在运行过程中反映速度慢点,本程 序在运行过程中可能会出现一些警告。就是在实型到整型数据的转换,但对程序 的执行没有任何问题。通过这个程序的制作我明白了有些事情光一个人做是很难 的,必须通过网络查询,求助同学,虚心请教才能完成。
VC++课程设计报告
课题题目:21 点的扑克牌游戏 姓名:鲍浩东
班级:11101902 学号:1110190214 程序功能简介:
一个 21 点的扑克牌游戏,玩家一共可以要 5 张牌,但如果牌的点数超过 21。则 为输了,自动出局;在不超过 21 点的情况下,玩家与庄家比较牌的点数大小, 大者为赢。
if((ans=='y')||(ans=='Y'))
//判断玩家是否还要下注
{
cout<<"请输入你投入的资本:";
//提示玩家输入赌
注
cin>>bett;
money=money-bett;
//计算出剩余的总资本
}
while(money<0)
//如果资本小于 0,则赌注超过了
资本,
{
//提示玩家错了和要求重新输入
求再下注,当然不能超过你所有的总钱数。
void fuctions:: Gamble (int&money,int&bett) //定义一个陪率函数
{
char ans;
bett=0;
//将 0 赋值给赌注
cout<<"你还要投入资本吗?(是'Y'/否'N'):"; //提示玩家是否还要下
注
cin>>ans;
(1)通过这次的编程实践,让我充分了解了我在 c++课程设计方面的学习很过
缺乏,对编写程序过程中的很多点都不理解,特别是类的概念,循环语句的使用
等多方面的不足,在编程过程中通过请教同学,看书了解了更多。 (2)关于密码设置问题,我们未在超级密码方面将密码替换成*,一方面由于我 们的超级密码是建立在高级密码的基础之上的,将高级密码隐藏成*,即可间接 保护超级玩家的权益;另一方面,超级密码函数嵌套于高级密码函数中,造成很 大麻烦。 (3)程序虽然进行了一些修改,但仍旧还有许多需要完善的地方。比如,我们
char str[20]="1234";
char ch;
int i=0,m=0;
cout<<"请输入高级密码(空格结束):"; //提示输入密码
cout.flush();
//清输出缓冲区
ch=getch();
//输入密码
while (ch!=32)
//当输入空格时循环结束
{
if(str[i++]==ch)
cin>>ans;
if((ans=='h')||(ans=='H'))
{cout<<"非常感谢!";}
else
{cout<<"请您输入超级密码";
cin>>m2;
if(s2==m2)
{cout<<"您要的牌点数:"<<endl;
player=player-card;
cin>>w1;
if(w1<11)
{card=w1;player=player+w1;}
else
{card=0.5;player=player+0.5;}
}
else
{cout<<"超级密码错误"<<endl;}
}
}
else {cout<<"对不起,你并不知道高级密码!"<<endl; }//提示密码错误 3 每次要牌后可以设定赔率,即开始下的是 10 元钱的注,如果牌好,你可以要
money=money+bett;
//重新计算总资本
cout<<"你不能投入这么多的资本!"<<endl;//提示玩家下的赌注超出资
本
cout<<"请重新投入资本:";
//提示重新下注
cin>>bett;
money=money-bett;
//计算总资本
}
}
4 若玩家想获取高级密码(超级密码),可以通过扣玩家的资本使成为高级玩家
游戏程序编写过程中遇到的一些问题:
本游戏将玩家分成三个级别:普通玩家,高级玩家(享受高级密码),
超级玩家(享受高级密码和超级密码)
1.关于高级玩家权力和游戏过程设定
f1.hit(card,player);
//使用要牌函数
cout<<"请问你是高级玩家吗?(是'H'/否'S'):"; //寻找高级玩
家
}ຫໍສະໝຸດ Baidu此程序代码保证高级玩家在游戏中不会超过二十一点
2. 编写程序代码实现高级玩家查看下一张牌,且超级玩家可以指定下一张
牌的点数。(输入密码时,如果用一般的 cin 流输入,则密码会显示在屏幕
上起不到保密作用,我们用 getch()函数来接受字符,这个函数的特点是只
要按下一键就能识别,即输入字符不用输入缓冲区保存,直接进入内存,然
{cout<<'*';
cout.flush();
ch=getch();
++m; }
else {cout<<'!'; cout.flush(); ch=getch();}
}
if(m==4)
//判断高级密码是否相符
{
cout<<"\t\t\t 下一张牌是:"<<card<<endl;//显示下一张牌
cout<<"您满意吗?(是'h'/否's')";
力."<<endl;
}
else {
cout<<"高级玩家的密码是 1234"<<endl;
f1.mima(ans,card,player);
}
}
}
5 当玩家一开始就不想进入玩这个游戏时,使用 exit()函数可退出游戏程序。
else exit(0);
//如果玩家不想玩着游戏,则直接退
出游戏程序
设计心得体会:
后将这个键替换成*显示即可。)
#define N 32 //32 为空格字符的 ASCII 码值
void fuctions::mima(char &ans,double&card,double&player) //定义一个密
码函数
{
int s2=5678,m2,w1;
//定义两个整型并对一个进行赋值
课程设计要求:
(1)将所有的函数与相应的数据封装到类中,并改写主程序,使程序简化。 (2)程序中一共有 13 张扑克牌可以随机抽取,大于 10 的点数为 10,现要求大 于 10 的点数全部为半点。 (3)要求高级玩家永远不会输掉,即可以查看下一张牌,若大于 21 点,则拒绝, 当然,在游戏规则上不能泄露这点秘密。 (4)超级玩家可以查看下一张牌,即输入指定的字符或字符串,然后按要求输 入密码,密码正确可以看牌,并指定下一级牌点数。 (5)每次要牌后可以设定赔率,即开始下的是 10 元钱的注,如果牌好,你可以 要求再下注,当然不能超过你所有的总钱数。 (6)将界面的提示说明改成中文界面,界面的解释详细友好,可以吸引更多的 玩家。