21点扑克牌游戏实验报告

更新时间:2024-02-02 23:59:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C++课程设计实验报告

姓名 李執平 学号 1006840123 班级 10068401 任课教师 严悍 时间 2011-9-15 题目 21点的扑克牌游戏 评定难易级别 B 实验报告成绩

1.实验内容:

1.1 程序功能介绍

21点扑克牌游戏,玩家一共可以要5张牌,如果牌的点数超过21,则为输,自动出局;在不超过21点的情况下,玩家与庄家比牌的点数大小,大者为胜。

1.2 程序设计要求

(1)所有的函数与相应的数据封装到类中,并改写主程序,使程序简化。 (2)程序中共有13张扑克牌可以随机抽选,大于10的点数为10,现要将大于10的点数全部变为半点。

(3)要求高级玩家永远不会输掉,高级玩家可以查看下一张牌,若大于21点则拒绝,当然在游戏规则上不能泄露这一点

(4)超级玩家可以查看下一张牌,即输入指定的字符或字符串,然后按要求输入密码,密码正确则可以查看自己和计算机的牌,并指定下一张牌的大小。 (5)每次要牌后可以设定赔率,即可以加注。

(6)将界面改为中文界面,界面解释设置详细友好。

2. 源程序结构流程框图与说明(含新增子函数的结构框图)

开始界面,输出规则 进入下注界面。下注 玩家电脑各发两张牌 询问是否继续下注,是否继续要牌 高级玩家:查看下一张牌 普通玩家:得到一张牌 超级玩家:选择下一张牌的点数 是否大于21点 是否继续要牌 大于21点,输出:你输了 与电脑比点数大小 你赢了 平局 你输了 询问是否继续

3. 基本数据结构

Public:CCard private:

double money;//有多少钱 double bet;//赌注 int win; int lose; int draw; char a[7]; public:

int playerturns,cputurns;//计算机实际发了多少牌 double player,cpu;//计算机和玩家的点数 ccard();//构造函数,初始化

void firstplaytwo();//最初两张牌 void results();

void BET();//接受玩家下注 double getmoney();//返回钱数 void modifypassword();//修改密码 int password();//设置密码 void rules();//游戏规则

void replay(char&);//是否再来一局 void print();//输出最后结果 void Hit(double&);//要一张牌

void gaojiplayer();//设置高级玩家 void superplayer();//设置超级玩家

(1)密码设置函数

int ccard::password()//密码设置 {

char str[7]; char ch; int i=0;

cout<<\请输入六位数密码:\ cout.flush();//清输出缓冲区 ch=getch();

while(ch!='\\r')//当输入x字符时循环结束 {

str[i++]=ch; cout<<'*'; cout.flush(); ch=getch();

}

str[i]=0;//输入的密码在str数组中 system(\

if (strcmp(a,str)!=0) {

cout<<\密码输入错误!\\n\\t\\t\\t退出输入请按(Q&q),继续输入按(C&c)!\

cin>>ch;

system(\

if(ch=='q'||ch=='Q')return 0; else password(); }

return 1; }

(2)超级玩家设置函数

void ccard::superplayer()//设置超级玩家 {

playerturns++; //玩家手中的牌书3增加一张

if(playerturns>5) //判断玩家手中的牌数是否超过5张 {

cout<<\对不起!您要的牌数不能超过五张\超过,不能继续要牌

}

double n;

cout<<\您的牌面总数是:\ cout<<\计算机牌面总数是:\ //playerturns++;

cout<<\请输入您要的下一张牌的点数:\ cin>>n;

if(n<=10&&n>0){

player=player+n;

cout<<\您要的点数是:\

cout<<\您现在的牌面总点数是:\

else{cout<<\输入的牌面点数必须在0到10之间请重新输入:\ superplayer();} }

4. 程序运行结果界面

图一:开始界面

图二:开始游戏,下赌金

图三:超、高级玩家修改密码服务

图四:超、高级玩家服务

5. 课程设计遇到的技术问题与解决思路

问题1:如何使程序更为简化

解决办法:将所有函数与相应数据封装到类中:设计一个类,将出牌,下注等的操作包含进去,玩家和计算机均为这个类的对象。这样在玩牌及判断输赢时,函数只需要用这两个对象的引用做参数即可,大大简化了函数。

问题2:如何设置密码及输入密码

解决办法:将密码存入专门指定的文件中,每次接收完用户输入的密码后,去这个文件中读取原密码进行比较,如果一致则可以修改原密码

图四:超、高级玩家服务

5. 课程设计遇到的技术问题与解决思路

问题1:如何使程序更为简化

解决办法:将所有函数与相应数据封装到类中:设计一个类,将出牌,下注等的操作包含进去,玩家和计算机均为这个类的对象。这样在玩牌及判断输赢时,函数只需要用这两个对象的引用做参数即可,大大简化了函数。

问题2:如何设置密码及输入密码

解决办法:将密码存入专门指定的文件中,每次接收完用户输入的密码后,去这个文件中读取原密码进行比较,如果一致则可以修改原密码

本文来源:https://www.bwwdw.com/article/gpvw.html

Top