资源预览内容
第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
第9页 / 共38页
第10页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
南京理工大学C课程设计扑克牌游戏多文件22020年4月19日文档仅供参考南京理工大学紫金学院C+课程设计报告课 程:C+课程设计学 院:计算机学院班 级:计算机大类四班学 号:姓 名:田越选题名称:扑克牌游戏起止时间: .5.22 .6.1指导教师:杜兰 5月1 问题描述在提供的源程序基础上,写一个程序,能够进行洗牌等操作.2 基本要求1) 增加大小王.2) 删去一张指定扑克牌后,进行余牌显示.3) 创立一副扑克牌,显示一副扑克牌,洗牌,依次分发给四人并显示.3 需求分析输入形式与范围是按照提示语句输入相应的数字或是(Y)否(N)的英文字母输出形式即为提示语句所说明的内容该程序基本任务是完成扑克洗牌,显示玩家手牌,按花色或牌面整理手牌(排序)测试数据为54张扑克牌面值以及花色,无需手动设置正确的输入将使得程序按说明运行,错误输入默认直接退出程序4 概要设计分为8个部分,也是八个文件头文件两个:all.h 包含主程序所需的所有头文件.class.h 包含所有的类,并卷入all.h其余cpp文件,共6个,说明如下:main函数 主调函数deck 包含deck类的函数perdeck 包含perdeck类的函数playdeck 包含playdeck类的函数playingcard 包含playingcard类的函数main函数调用的函数 顾名思义 5 详细设计All.h#pragma once#include#include/编译器是VS #include#include#include#includeClass.h#pragma once#includeall.husing namespace std;class PerDeck;class PlayingCardprivate:int nValue;/扑克牌实际面值char achFace3;/扑克牌字符串A,2,.10,J,Q,Kchar chSuit;/扑克牌花色public:friend class PerDeck;PlayingCard();/将对象清零void ShowCard();/显示面值花色void CardMake(int);/给一张扑克牌赋值(面值,花色);class Deckprivate:PlayingCard m_cardarray54;int nLastDelt;public:friend class PerDeck;Deck();void MakeDeck();/将52张牌清零(没有大,小王)void DealOne();/删除开头一张牌void ShowDeck();/依次逐张显示这副牌void DeckShuff(int);/用于洗牌,参数是洗牌次数void RemoveCard();/清零删除掉的那张牌;class PerDeckprivate:PlayingCard myCard20;int nNum;public:PerDeck() void MakePerDeck(Deck &, int);void Show();void SortFace();void SortSuit();int Delete(int n);class PlayDeckprivate:PerDeck myDeck4;public:PlayDeck() void PlayCard(Deck &);void Show();int DeleteOne(int row, int column);int DeleteAll(int, int, int ,int);void SortDeckFace(int);void SortDeckSuit(int);void s(int);void ProgramInit();/初始化,并输出信息void CenterText(char ShellText80);/居中显示int GetNumber();/键入整数型char GetKey();/键入字符串型void DeckMakeDiver();/主要算法(生成扑克牌,洗牌,删除等)int GetRandInt(int min, int max);/在min到max间选随机值void ProgClose();/暂停,供用户查看中间运行结果main函数.cpp#includeclass.husing namespace std;int main(void)srand(unsigned)time(NULL);int nCardNum = 0;ProgramInit();DeckMakeDiver();ProgClose();return 1;Playdeck.cpp#includeclass.h#includeusing namespace std;void PlayDeck:PlayCard(Deck &k)int a, b, c, d;char g29 = 依次输入四位玩家手里的牌数: ;CenterText(g);cout a b c d;if (a + b + c + d 54)char g = 超过牌的张数,退出游戏。 ;CenterText(g);exit(0);myDeck0.MakePerDeck(k, a);myDeck1.MakePerDeck(k, b);myDeck2.MakePerDeck(k, c);myDeck3.MakePerDeck(k, d);void PlayDeck:Show()char a6 = 玩家1 ;char b6 = 玩家2 ;char c6 = 玩家3 ;char d6 = 玩家4 ;CenterText(a);cout endl;myDeck0.Show();CenterText(b);cout endl;myDeck1.Show();CenterText(c);cout endl;myDeck2.Show();CenterText(d);cout endl;myDeck3.Show();int PlayDeck:DeleteOne(int row, int column)myDeckrow - 1.Delete(column);return 1;int PlayDeck:DeleteAll(int a, int b, int c, int d)myDeck0.Delete(a);myDeck1.Delete(b);myDeck2.Delete(c);myDeck3.Delete(d);return 1;void PlayDeck:SortDeckFace(int b)myDeckb - 1.SortFace();void PlayDeck:SortDeckSuit(int b)myDeckb - 1.SortSuit();void PlayDeck:s(int a)myDecka - 1.Show();Deck.cpp#includeclass.h#includeusing std:ostream;using namespace std;void Deck:MakeDeck()/对生成的52张牌逐个赋值nLastDelt = 53;/51while (nLastDelt -1)m_cardarraynLastDelt.CardMake(nLastDelt);nLastDelt-;void Deck:ShowDeck()/显示一副扑克牌char a13 = 完整的一副牌 ;int nIndex = nLastDelt + 1;int nNewLine = 0;CenterText(a);cout endl;while (nIndex = 53)/51if (nNewLine % 11 = 0)cout endl;m_cardarraynIndex.ShowCard();nNewLine+;nIndex+;void Deck:DeckShuff(int times)/洗牌算法char a11 = 洗牌. ;int x, nSplit;CenterText(a);cout endl;for (x = 0; x = times; x+)nSplit = GetRandInt(20, 35);Deck TopDeck;Deck BottomDeck;int i;int nBottomNum = 1;int nTopNum = 1;for (i = 0; i m_cardarrayi;nTopNum+;i+;for (i = (nSplit); i m_cardarrayi;nBottomNum+;i+;int nOutNum = 0;int nNumToTop;i
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号