21点牌c++程序

来源:百度知道 编辑:UC知道 时间:2024/05/18 09:03:13
求教高手能给以份C++的 21点游戏的程序。。具体内容下面给出。。谢谢 急需 在线等 谢谢 给加高分

实验内容:设计一个21点的游戏,游戏规则如下:
两个玩家,一个是人,一个是电脑。首先由电脑随机派两张牌给人类玩家(牌不能重复,牌的表示方式为 花色牌号,如红桃8),然后玩家通过自己判断再选择是否继续要牌。如果要,则继续随机派给玩家一张牌,若此时所有牌的点数之和大于21,则判断玩家为输,如果不是,则玩家可以继续选择要牌与否。如果不要牌,则人类玩家阶段结束。轮到电脑。电脑阶段与玩家阶段基本相同。电脑首先自己要两张牌,然后由电脑自己判断是否继续要牌,判断的最重要依据是刚好赢人类玩家就收手。而输赢是按照两家的点数与牌数,赢的一方是点数较大的一方,若点数相同,则取牌数量更多的一方胜,若牌数也一样,则不分胜负。
点数的计算方式为:不论花色(红桃,黑桃,梅花,方块),数字牌(2到10)按照数字算,A按照1来算, J,Q,K均算成0.5点。
3. 难点提示:1.由于牌是不能重复,可以把纸牌当成一个全局数组,2.细分程序为各种功能的函数,可以大致分成这几个函数:洗牌(将玩家手中的牌收回),发牌(随机发给玩家一张牌),显示牌号(将数组映射成相应的扑克牌),玩家阶段(包括发牌,要牌,判断是否超过21点了),电脑阶段,判断输赢阶段(在双方点数均不超21点的情况下)。
4. 标准输入输出:加粗加大的是输入部分
第一种情况:玩家超过21点了
玩家阶段
玩家获得牌 梅花5 方块8
是否继续要牌(y/n):y
继续要一张牌:梅花5 方块8 红桃10
玩家输了

是否继续(y/n):n
第二种情况:
玩家阶段
玩家获得牌 红桃7 方块Q
是否继续要牌(y/n):y
继续要一张牌:红桃7 方块Q 红桃3
是否继续要牌(y/n):y
继续要一张牌:红桃7 方块Q 红桃3 梅花8
是否继续要牌(y/n):n

电脑阶段
电脑获得牌 方块8 红桃4
继续要一张牌:方块8 红桃4 红桃J
继续要一张牌:方块8 红桃4 红桃J 梅花

刚才的有点问题,重新发一个给你

#include <iostream>
#include <string>
#include <ctime>
#include <vector>
using namespace std;

#define Random4 (rand() % 4)
#define RandomN (rand() % 13)

const string varity[4] = {"黑桃", "红桃", "草花", "方块"};
const string Num[13] = {"A", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "J", "Q", "K"};

class Games
{
private:
int Players;
vector<string> Poke;
vector<vector<double> > each_num;
double *Sum;
string *Name;
int i;

public:
Games()
{
srand((unsigned)time(NULL));
cout << "多少人参加游戏?(1~7):";
cin >> Players;
Poke.resize(Players+1);
Sum = new double[Players+1];