| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 696 人关注过本帖
标题:自己写的模拟发牌程序 请批评指点
取消只看楼主 加入收藏
代号215
Rank: 2
等 级:论坛游民
帖 子:40
专家分:80
注 册:2012-11-22
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:2 
自己写的模拟发牌程序 请批评指点
程序代码:

#include<iostream>
#include<ctime>
using std::cout;
using std::endl;
using std::ostream;



//模拟发牌
class Card
{
public:
    Card(int n);
    //发牌
    void draw_card();

private:
    //已发的牌数
    int drawn_num;
    //要发的牌数
    int card_num;
    //手中剩余的牌
    int card_left;
    //工具数组
     int array[4][13];
     //工具函数
     void card_rand();
    //花色
    static char* suit[4];
    //面值
    static char* face[13];
    //重新洗牌
    void draw_card_again();
};

char* Card::suit[4]={"Hearts","Diamonds","Clubs","Spades"};
char* Card::face[13]={"Ace","Deuce","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};



Card::Card(int n):card_num(n),card_left(52),drawn_num(0)
{
    for(int i=0;i<4;i++)
        for(int j=0;j<13;j++)
            array[i][j]=0;
}

void Card::card_rand()
{
      int row=rand()%4;
      int col=rand()%13;

        //如果已经发出去了
       while(array[row][col])
       {
           row=rand()%4;
           col=rand()%13;
       }
        array[row][col]=1;
        cout<<face[col]<<" of "<<suit[row]<<endl;
}


void Card::draw_card()
{
    srand(time(NULL));

    int& i=drawn_num;
    for(;i<card_num;i++,--card_left)
    {
        if(!card_left)
        {
            //重新洗牌
            draw_card_again();
        }
        else
        { card_rand();}

    }
}

void Card::draw_card_again()
{
    cout<<"Reshuffling"<<endl;

    //全部清零
    card_left=52;
    for(int k=0;k<4;k++)
        for(int j=0;j<13;j++)
            array[k][j]=0;


    int& i=drawn_num;
    for(;i<card_num;i++,--card_left)
    {
        //发牌
        if(!card_left)
            draw_card_again();
        else
        {    card_rand();}
    }
}




[ 本帖最后由 代号215 于 2013-5-9 20:29 编辑 ]
搜索更多相关主题的帖子: 发牌 color 
2013-05-09 20:28
代号215
Rank: 2
等 级:论坛游民
帖 子:40
专家分:80
注 册:2012-11-22
收藏
得分:0 
回复 2楼 yuccn
谢谢   能指点一下吗

好久没把牛皮吹的这么清新脱俗了
2013-05-09 22:51
代号215
Rank: 2
等 级:论坛游民
帖 子:40
专家分:80
注 册:2012-11-22
收藏
得分:0 
回复 5楼 lintaoyn
确实是存在的  怎么改进呢

好久没把牛皮吹的这么清新脱俗了
2013-05-10 18:35
快速回复:自己写的模拟发牌程序 请批评指点
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018089 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved