纸牌游戏实验报告篇一:纸牌游戏Go Fish实验报告纸片游戏Go Fish课程设计一目的通过对GO FISH的课程设计,明白数据结构设计理念,理解并掌握链表的操作,进一步的了解数据结构的含义。
二需求分析决定玩家的数量,先简单化,建立两个玩家,完成设计;1、确定数据结构模版;2、建立数据结构类型;3、完成数据操作;4、确立算法设计。
三概要设计1、数据结构设计该课程设计采用链表和类相结合模式,建立牌堆和牌操作的链表结构:class Card{public:};牌堆类:采用整型数组建立牌堆,并用随机数打乱牌序。
class Node{public:Node(); Node(int value,Node *next);//初始化节点构造函数 int ListLength(Node* L); //链表的计数 int Search(Node* L , int num); //链表的查找Node* head_Insert(Node* head , int num);//从表头插入节点Node* Delete(Node* head , int num); //删除节点 void Print(Node *head);//链表输出 int card_num; char clore; Node *Link; void NewCard();//新建牌 void Shuffle();//洗牌int Licensing(int n);//发牌int CARD_A[52]; private: private:采用链表结构方式,来构造玩家手牌。
用链式结构进行操作进行删除和插入。
2、算法函数int Scoring(NodePtr &player,int score)//计分;int Players_operations(NodePtr &player1,NodePtr &player2,int Choose,int i,Card CardBign)//玩家操作;两个函数分别用来计算与进行牌的操作。
2、主函数main();//主函数主函数进行数据接收和输出显示。
四详细设计1、类的构造与实现类的构造:class Card{public:void NewCard();//新建牌void Shuffle();//洗牌int Licensing(int n);//发牌private:int CARD_A[52];};class Node{public:Node();Node(int value,Node *next);//初始化节点构造函数int ListLength(Node* L); //链表的计数int Search(Node* L , int num); //链表的查找Node* head_Insert(Node* head , int num);//从表头插入节点Node* Delete(Node* head , int num); //删除节点void Print(Node *head);//链表输出private:int card_num;char clore;Node *Link;typedef Node* NodePtr;类的实现:采用两个构造函数,根据不同的调用对节点进行不同的初始化:Node::Node(){}Node::Node(int value, Node *next){}链表的计数,对链表的长度进算计算,返回一个整型计录链表的长度,方便链表的操作:int Node::ListLength(Node* L){}链表的插入,采用表头插入的方法:Node* Node::head_Insert(Node* head,int num){}链表的查找,调用链表长度计数函数,用for循环来实现链表的查找:card_num=0; Link=NULL; card_num=value; Link=next; Node *p; p=L; int count=0; while(p->Link) {} return count; count++; p=p->Link; Node *p0; p0=new Node; p0->card_num=num; p0->Link=head; head=p0; return head;int Node::Search(Node* L , int num){int count=0,Length;Node *p1;p1=new Node;p1=L;Length=p1->ListLength(p1);if(L==NULL)return count;for(int i=0;i {if(p1->card_num==num){count++;p1=p1->Link;}elsep1=p1->Link;}}return count;}链表的输出,在输出时将1、11、12、13转换为A、J、Q、K: void Node::Print(Node *head){Node *p=head;while(p->card_num!=0){if(p->card_num==1)cout else if(p->card_num==11)cout else if(p->card_num==12)cout else if(p->card_num==13)cout elsecoutcard_num p=p->Link;}}链表节点的删除:Node* Node::Delete(Node* head , int num)//设aCard是要删除的结点a中的数据成员Node *q,*p; //p用于指向结点a,q用于指向结a的前一个结点 p = head;if(p->Link==NULL){return head;}if(p->card_num==num){head=p->Link;delete p;}else{while( p->card_num != num && p->Link != NULL) { //查找结点aq = p;p = p->Link;}if(p->card_num == num){ //若有结点aq->Link=p->Link;delete p;}}return head;}牌的建立,用数组实现:void Card::NewCard(){for(int i=0;i CARD_A[i]=i;}篇二:“21点”纸牌游戏实验报告课程设计报告课程名称:面向对象程序设计与开发课程设计设计题目:年级:系别:专业:小组成员名单:任课教师:“21点”纸牌游戏09 计算机学院计算机科学与技术陈坚鹏李浩艺陈子龙莫家庆老师完成时间:XX年 3 月 30 日肇庆学院计算机学院课程设计结果评定目录“21点”纸牌游戏 ................................................ ................................................... .. (1)1 概述 ................................................ ................................................... ................................... 12 实验内容................................................. ................................................... ........................... 13 概要设计................................................. ................................................... ........................... 24 测试结果和分析................................................. ................................................... ...............5 5 课程设计体会................................................. ................................................... (5)“21点”纸牌游戏1 概述本课程设计通过编写相关代码实现“21点”游戏。
使用语言:C++语言编译环境:VC++ 6.0 2 实验内容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总分值171张三,唉,你打平局了!李四,对不起,你输了!你想再玩一次吗(y,n)? 2、需求分析(1)测试边界内的值。
(2)测试边界值。
(3)测试边界外的值。
(4)输出结果。
3 概要设计1、存储结构 typedef enum{//扑克牌面值:ACE(A),TWO(2)~TEN(10),JACK(J),QUEEN(Q),KING(K)ACE=1,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN, JACK,QUEEN,KING}RankType;typedef enum{struct Card{ //扑克牌结构体RankType rank; //扑克牌面值 SuitType suit;//扑克牌花色//21点游戏类gameof21point声明class GameOf21Point{ private://扑克牌花色:CLUBS(梅花),DIAMONDS(方块),HEARTS(红CLUBS,DIAMONDS,HEARTS,SPADES桃),SPADES(黑桃)}SuitType;Card deck[52]; //一副扑克牌 int dealPos; //发牌位置Card hands[8][21]; //hand[0]存储于庄家手中的扑克牌, hand[1~7]int numOfCard[8]; //庄家numOFCard[0]及玩家numOFCard[1~7]手char name[8][LEN_OF_MAX_NAME]; //庄家与玩家姓名2存储于各位玩家手中的扑克牌中的扑克牌数篇三:21点扑克牌游戏实验报告C++课程设计实验报告姓名李執平学号 23 班级任课教师严悍时间XX-9-15题目21点的扑克牌游戏评定难易级别 B实验报告成绩1.实验内容:1.1 程序功能介绍21点扑克牌游戏,玩家一共可以要5张牌,如果牌的点数超过21,则为输,自动出局;在不超过21点的情况下,玩家与庄家比牌的点数大小,大者为胜。