纸牌游戏实验报告.docx

上传人:b****7 文档编号:25317985 上传时间:2023-06-07 格式:DOCX 页数:9 大小:18.60KB
下载 相关 举报
纸牌游戏实验报告.docx_第1页
第1页 / 共9页
纸牌游戏实验报告.docx_第2页
第2页 / 共9页
纸牌游戏实验报告.docx_第3页
第3页 / 共9页
纸牌游戏实验报告.docx_第4页
第4页 / 共9页
纸牌游戏实验报告.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

纸牌游戏实验报告.docx

《纸牌游戏实验报告.docx》由会员分享,可在线阅读,更多相关《纸牌游戏实验报告.docx(9页珍藏版)》请在冰豆网上搜索。

纸牌游戏实验报告.docx

纸牌游戏实验报告

纸牌游戏实验报告

篇一:

纸牌游戏GoFish实验报告

  纸片游戏GoFish课程设计

  一目的

  通过对GOFISH的课程设计,明白数据结构设计理念,理解并掌握链表的操作,进一步的了解数据结构的含义。

  二需求分析

  决定玩家的数量,先简单化,建立两个玩家,完成设计;1、确定数据结构模版;2、建立数据结构类型;3、完成数据操作;4、确立算法设计。

  三概要设计

  1、数据结构设计

  该课程设计采用链表和类相结合模式,建立牌堆和牌操作的链表结构:

  classCard

  {

  public:

  };

  牌堆类:

采用整型数组建立牌堆,并用随机数打乱牌序。

  classNode

  {

  public:

  Node();Node(intvalue,Node*next);//初始化节点构造函数intListLength(Node*L);//链表的计数intSearch(Node*L,intnum);//链表的查找Node*head_Insert(Node*head,intnum);//从表头插入节点Node*Delete(Node*head,intnum);//删除节点voidPrint(Node*head);//链表输出intcard_num;charclore;Node*Link;voidNewCard();//新建牌voidShuffle();//洗牌intLicensing(intn);//发牌intCARD_A[52];private:

private:

  采用链表结构方式,来构造玩家手牌。

用链式结构进行操作进行删除和插入。

  2、算法函数

  intScoring(NodePtr&player,intscore)//计分;

  intPlayers_operations(NodePtr&player1,NodePtr&player2,intChoose,inti,CardCardBign)//玩家操作;

  两个函数分别用来计算与进行牌的操作。

  2、主函数

  main();//主函数

  主函数进行数据接收和输出显示。

  四详细设计

  1、类的构造与实现

  类的构造:

  classCard

  {

  public:

  voidNewCard();//新建牌

  voidShuffle();//洗牌

  intLicensing(intn);//发牌

  private:

  intCARD_A[52];

  };

  classNode

  {

  public:

  Node();

  Node(intvalue,Node*next);//初始化节点构造函数

  intListLength(Node*L);//链表的计数

  intSearch(Node*L,intnum);//链表的查找

  Node*head_Insert(Node*head,intnum);//从表头插入节点

  Node*Delete(Node*head,intnum);//删除节点

  voidPrint(Node*head);//链表输出

  private:

  intcard_num;

  charclore;

  Node*Link;

  typedefNode*NodePtr;

  类的实现:

  采用两个构造函数,根据不同的调用对节点进行不同的初始化:

  Node:

:

Node()

  {

  }

  Node:

:

Node(intvalue,Node*next)

  {

  }

  链表的计数,对链表的长度进算计算,返回一个整型计录链表的长度,方便链表的操作:

  intNode:

:

ListLength(Node*L)

  {

  }

  链表的插入,采用表头插入的方法:

  Node*Node:

:

head_Insert(Node*head,intnum)

  {

  }

  链表的查找,调用链表长度计数函数,用for循环来实现链表的查找:

  card_num=0;Link=NULL;card_num=value;Link=next;Node*p;p=L;intcount=0;while(p->Link){}returncount;count++;p=p->Link;Node*p0;p0=newNode;p0->card_num=num;p0->Link=head;head=p0;returnhead;

  intNode:

:

Search(Node*L,intnum)

  {

  intcount=0,Length;

  Node*p1;

  p1=newNode;

  p1=L;

  Length=p1->ListLength(p1);

  if(L==NULL)

  returncount;

  for(inti=0;i  {

  if(p1->card_num==num)

  {

  count++;

  p1=p1->Link;

  }

  else

  {

  p1=p1->Link;

  }

  }

  returncount;

  }

  链表的输出,在输出时将1、11、12、13转换为A、J、Q、K:

voidNode:

:

Print(Node*head)

  {

  Node*p=head;

  while(p->card_num!

=0)

  {

  if(p->card_num==1)

  cout  elseif(p->card_num==11)

  cout  elseif(p->card_num==12)

  cout  elseif(p->card_num==13)

  cout  else

  coutcard_num  p=p->Link;

  }

  }

  链表节点的删除:

  Node*Node:

:

Delete(Node*head,intnum)

  {

  //设aCard是要删除的结点a中的数据成员

  Node*q,*p;//p用于指向结点a,q用于指向结a的前一个结点p=head;

  if(p->Link==NULL)

  {

  returnhead;

  }

  if(p->card_num==num)

  {

  head=p->Link;

  deletep;

  }

  else

  {

  while(p->card_num!

=num&&p->Link!

=NULL){//查找结点a

  q=p;

  p=p->Link;

  }

  if(p->card_num==num)

  {//若有结点a

  q->Link=p->Link;

  deletep;

  }

  }

  returnhead;

  }

  牌的建立,用数组实现:

  voidCard:

:

NewCard()

  {

  for(inti=0;i  CARD_A[i]=i;

  }

篇二:

“21点”纸牌游戏实验报告

  课程设计报告

  课程名称:

面向对象程序设计与开发课程设计设计题目:

年级:

系别:

专业:

  小组成员名单:

  任课教师:

  “21点”纸牌游戏

  09计算机学院计算机科学与技术陈坚鹏李浩艺陈子龙

  莫家庆老师

  完成时间:

XX年3月30日

  肇庆学院计算机学院

  课程设计结果评定

  目录

  “21点”纸牌游戏.............................................................................................................................1

  1概述......................................................................................................................................12实验内容...............................................................................................................................13概要设计...............................................................................................................................24测试结果和分析...................................................................................................................55课程设计体会.......................................................................................................................5

  “21点”纸牌游戏

  1概述

  本课程设计通过编写相关代码实现“21点”游戏。

使用语言:

C++语言编译环境:

VC++6.02实验内容

  1、问题描述

  “21点”是一个古老的扑克牌游戏,游戏规则是:

各个参与者设法使自己的派达到总分21而不超过这个数值。

扑克牌的分值取它们的面值,A充当1分或11分(由玩家自己选择一种分值),J、Q和K人头牌都是10分。

  庄家对付1—7个玩家。

在一局开始时,包括庄家在内的所有参与者都有两张牌。

玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐藏的。

接下来,只要愿意,各个玩家都有机会再拿一张牌。

如果某个玩家的总分超过了21(称为“引爆”),那么这个玩家就输了。

在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。

只要庄家的总分等于或小于16,那么他就必须再拿牌。

如果庄家引爆,那么还没有引爆的所有我那家都将获胜,引爆的玩家打成平局。

否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。

如果二者的总分相同,则玩家和庄家打成平局。

基本要求:

  编写程序实现游戏,计算机作为庄家,1—7个人作为普通玩家参与游戏。

游戏程运行输出如下所示。

  多少人加入游戏?

(1—7):

2输入第1位玩家的姓名:

张三输入第2位玩家的姓名:

李四游戏开始:

庄家:

梅花7

  张三:

红桃7方块J总分值17李四:

红桃J红桃3总分值13张三,你想再要一张牌吗(y,n)?

n李四,你想再要一张牌吗(y,n)?

y李四:

红桃J红桃3梅花10总分值23李四引爆!

  庄家:

方块10,梅花7总分值17

  1

  张三,唉,你打平局了!

李四,对不起,你输了!

你想再玩一次吗(y,n)?

2、需求分析

  

(1)测试边界内的值。

(2)测试边界值。

(3)测试边界外的值。

(4)输出结果。

3概要设计

  1、存储结构typedefenum{

  //扑克牌面值:

ACE(A),TWO

(2)~TEN(10),JACK(J),QUEEN(Q),KING(K)ACE=1,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,Q

  UEEN,KING

  }RankType;

  typedefenum{

  structCard{//扑克牌结构体

  RankTyperank;//扑克牌面值SuitTypesuit;//扑克牌花色//21点游戏类gameof21point声明classGameOf21Point{private:

  //扑克牌花色:

CLUBS(梅花),DIAMONDS(方块),HEARTS(红CLUBS,DIAMONDS,HEARTS,SPADES

  桃),SPADES(黑桃)

  }SuitType;

  Carddeck[52];//一副扑克牌intdealPos;//发牌位置

  Cardhands[8][21];//hand[0]存储于庄家手中的扑克牌,hand[1~7]intnumOfCard[8];//庄家numOFCard[0]及玩家numOFCard[1~7]手charname[8][LEN_OF_MAX_NAME];//庄家与玩家姓名

  2

  存储于各位玩家手中的扑克牌中的扑克牌数

篇三:

21点扑克牌游戏实验报告

  C++课程设计实验报告

  姓名李執平学号23班级任课教师严悍时间XX-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.源程序结构流程框图与说明(含新增子函数的结构框图)

  3.基本数据结构

  Public:

CCard

  private:

  doublemoney;//有多少钱

  doublebet;//赌注

  intwin;

  intlose;

  intdraw;

  chara[7];

  public:

  intplayerturns,cputurns;//计算机实际发了多少牌

  doubleplayer,cpu;//计算机和玩家的点数

  ccard();//构造函数,初始化

  voidfirstplaytwo();//最初两张牌

  voidresults();

  voidBET();//接受玩家下注

  doublegetmoney();//返回钱数

  voidmodifypassword();//修改密码

  intpassword();//设置密码

  voidrules();//游戏规则

  voidreplay(char&);//是否再来一局

  voidprint();//输出最后结果

  voidHit(double&);//要一张牌

  voidgaojiplayer();//设置高级玩家

  voidsuperplayer();//设置超级玩家

  

(1)密码设置函数

  intccard:

:

password()//密码设置

  {

  charstr[7];

  charch;

  inti=0;

  cout  cout.flush();//清输出缓冲区

  ch=getch();

  while(ch!

='\r')//当输入x字符时循环结束

  {

  str[i++]=ch;

  cout  cout.flush();

  ch=getch();

  }

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

  system("cls");

  if(strcmp(a,str)!

=0)

  {

  cout  cin>>ch;

  system("cls");

  if(ch=='q'||ch=='Q')return0;

  elsepassword();

  }

  return1;

  }

  

(2)超级玩家设置函数

  voidccard:

:

superplayer()//设置超级玩家

  {

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

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

  {

  cout  }

  doublen;

  cout  cout  //playerturns++;

  cout  cin>>n;

  if(n0){

  player=player+n;

  cout  cout  else{cout  }

  4.程序运行结果界面

  图一:

开始界面

  图二:

开始游戏,下赌金

  图三:

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

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

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1