1、2015 C+课程设计 Blackjack,2015.9.16,一、项目背景,21点又名黑杰克(Black Jack),起源于法国,已流传到世界各地。随着互联网的发展,二十一点开始走向网络时代。该游戏由2到6个人玩,使用除大小王之外的52张牌,游戏者的目标是使手中的牌的点数之和不超过21点且尽量大。,二:游戏规则,1.所有玩家以达到或最接近21点为获胜标准;2.每个玩家最开始有两张牌(明牌),庄家的牌为一明一暗;3.jack,queen,或者king算作10,Ace看作1或11;,二:游戏规则,4.每人都有机会继续抓牌,如果超过21,则为爆牌;5.所有玩家抓玩牌之后,庄家亮牌;6.庄家牌小于1
2、6时,必须要抓牌;7.如果庄家爆牌,则所有玩家中没有爆牌的获胜;否则,点数最大的取胜。,三、小组成员及分工,肖年浩 :游戏控制类;于灏 徐清峰 :玩家类及其继承;张旭阳 杨海兰 :纸牌类及其继承。,四:程序架构,1.main.cpp:程序控制,各种函数调用;2.Cards类继承自Card类,分别表示一副牌和一张牌;3.House类继承自Player类,分别表示庄家和玩家;,Card类简介,Card() void setcolor(char color);/设定纸牌颜色 char getcolor(); /得到纸牌颜色 void setvalue(int value); /设定纸牌点数 int
3、getvalue(); /得到纸牌点数 void showcard(); /显示纸牌 char color; /花色 int value; /点数 string value213;,Cards类简介,继承自Card类Cards();void shuffle();/洗牌Card deal();/发牌void showcards();/显示牌Card cards52;/一副牌int rest;/剩余牌数int use;/已发牌数char col5;/花色int val14;/点数 string valch14;,player类简介,player();/构造函数void getcard(Card c
4、);/得到一张牌void discard();/显示牌int sumscore();/返回总点数int cardnumget();/得到牌的张数void setplayername(string playername);/设定玩家姓名string getname();/得到玩家姓名bool burst();/判断是否爆掉Card havecards27;/储存玩家的牌int cardnum;/cardsnum;int flag;string name;/playername;int sum;,House类简介,继承自player类 void discard(int );/显示纸牌,有两种不同显
5、示方式,五、程序执行,1.打开程序,显示欢迎界面;,五、程序执行,2.输入玩家个数和玩家姓名;可以看到,显示了玩家的姓名和牌的点数,庄家的一张牌是暗牌。,五、程序执行,3.询问第一位玩家是否需要抓牌;若是,输入y;第一位玩家已经burst,询问第二位玩家是否抓牌;,五、程序执行,4.询问第二位玩家是否需要抓牌,继续抓牌;,五、程序执行,5.庄家只有5点,自动抓牌,直到大于16再询问庄家是否要抓牌;,五、程序执行,6.输入y,庄家继续抓牌,庄家burst,输出游戏结果:nobody wins。询问玩家是否继续执行程序。,六、项目执行过程,1.由小组其他四人编写各个类,由另外一人编写主程序,同时修改程序之间不匹配的地方。2.由五人共同调试程序。,七、主要问题,1.编写过程中,没有考虑到程序之间的组合,造成组合时各种不匹配问题;2.没有准确理解题目意思,不明白判断胜负的准确条件;3.开始时分工编写程序,有一些重要内容暂时没有,导致不能编译运行,存在少量bug,谢谢,