| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
原创:一个c++写的发牌程序http://www.iyit.net 日期:2006-5-29 10:22:42 来源:csdn 点击: |
主要是为了训练我的牌感(记牌的能力),对有志于赌博或者桥牌事业的同志可能还有点用 编译为bd.exe,使用方法输入"bd -h"看帮助 以下是源代码(处理命令行参数的代码参考了vim): #include #include #include #include using namespace std; #include #include #include static char program_name[]="bd"; #define the_version "0.1" namespace info{ enum { west=0,north=1,east=2,south=3,}; }; static char* deno[]={"spade","heart","diamond","cotton",}; static char card_symbol[]="23456789tjqka"; // p - pointer to argument // idx - index in argument // default value static int get_number_arg(char* p,int def) { if (isdigit(*p)) { def = atoi(p); } return def; } static void print_help() { cout<<"usage: "< } static void print_version() { cout< "too many arguments", #define bs_too_many_args 1 "argument missing after", #define bs_arg_missing 2 "garbage after option", #define bs_garbage 3 "too many extra commands", #define bs_extra_cmd 4 "invalid argument for", #define bs_invalid_arg 5 }; //error message routines---------------end int main(int argc, char** argv) { int argv_idx = 1; /* active option letter is argv[0][argv_idx] */ int players=1; int number_of_deals=1; bool want_argument=false; while(argc>0) { if(argv[0][0]=='-') { char c=argv[0][argv_idx++]; switch(c) { case 0: //do nothing argv_idx=-1; break; case '-': // "--" don't take any more options if(strcmp(argv[0]+argv_idx,"version")==0){ print_version(); } else if(strcmp(argv[0]+argv_idx,"help")==0){ print_help(); } argv_idx=-1; break; case 'h': print_help(); break; case 'v': print_version(); break; case 'p': // 1,2,3,4 players, default 1 if (argv[0][argv_idx]){ // "-p{tag}" players=get_number_arg(argv[0]+argv_idx,1); argv_idx=-1; } else{ // "-p {tag}" want_argument=true; } break; case 'n': //number of deals, default 1 if (argv[0][argv_idx]){ // "-n{tag}" number_of_deals=get_number_arg(argv[0]+argv_idx,1); if(number_of_deals<=0) number_of_deals=1; argv_idx=-1; } else{ // "-n {tag}" want_argument=true; } break; default: break; } //handle options with argument if(want_argument) { if (argv[0][argv_idx]){ cerr< } --argc; if (argc<1){ cerr< } ++argv; argv_idx = -1; switch(c) { case 'p': players=get_number_arg(argv[0],1); argv_idx=-1; break; case 'n': number_of_deals=get_number_arg(argv[0],1); if(number_of_deals<=0) number_of_deals=1; argv_idx=-1; break; default: ; //impossible } } } else{ argv_idx=-1;//do nothing } // if there are no more letters after the current "-", go to next // argument. argv_idx is set to -1 when the current argument is to be // skipped. if (argv_idx <= 0 argv[0][argv_idx] == 0) { --argc; ++argv; argv_idx = 1; } } //init srand(time(0)); //original card //value: spade, 0-12; heart, 13-25; diamond 26-38; cotton 39-51; //array index: west, 0-12; north, 13-25; east 26-38; south 39-51; const int dim=52; int cards[dim]; for(int i=0;i cards[i]=i; } vector h.assign(cards,cards+dim); //redeal bool need_id=number_of_deals>1; for(int k=0;k random_shuffle(h.begin(),h.end()); sort(h.begin()+info::west*13,h.begin()+info::west*13+13); sort(h.begin()+info::north*13,h.begin()+info::north*13+13); sort(h.begin()+info::east*13,h.begin()+info::east*13+13); sort(h.begin()+info::south*13,h.begin()+info::south*13+13); //dump if(need_id){ cout<<"id: "< switch(players) { case 1: dump_one_hand(h.begin()+info::south*13); break; case 2: dump_two_hands(h.begin()+info::east*13,h.begin()+info::west*13,26); break; case 3: dump_one_hand(h.begin()+info::north*13,26); dump_one_hand(h.begin()+info::east*13); dump_one_hand(h.begin()+info::south*13,26); break; case 4: dump_one_hand(h.begin()+info::north*13,26); dump_two_hands(h.begin()+info::east*13,h.begin()+info::west*13,26); dump_one_hand(h.begin()+info::south*13,26); break; default: ;//impossible } cout< return 0; } 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:最后防线 winxp八种安全模式揭密 下一篇:没有了 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 相关文章 | ||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||