设为首页 加入收藏

TOP

c++ 斗地主发牌程序初级(分配发牌算法)(二)
2015-07-20 17:23:13 来源: 作者: 【 】 浏览:3
Tags:斗地主 发牌 程序 初级 分配 算法
lse if (flag == 1){ b_num1 = rand() % ?3; b_num3 = rand() % ?3; if (b_num1 + b_num3 >= 3){ b_num1--; b_num3--; } b_num2 = bomb_num - b_num1 - b_num3; }else{ b_num2 = rand() % ?3; b_num3 = rand() % ?3; if (b_num2 + b_num3 >= 3){ b_num2--; b_num3--; } b_num1 = bomb_num - b_num2 - b_num3; } break; case 3: if (flag == 0){ b_num1 = rand() % ?4; b_num2 = rand() % ?4; if (b_num1 + b_num2>=4 && b_num1 + b_num2<=5){ b_num1--; b_num2--; }else if (b_num1 + b_num2 >= 6){ b_num1 = b_num1 - 2; b_num2 = b_num2 - 2; }else{ //.... } b_num3 = bomb_num - b_num1 - b_num2; }else if (flag == 1){ b_num1 = rand() % ?4; b_num3 = rand() % ?4; if (b_num1 + b_num3>=4 && b_num1 + b_num3<=5){ b_num1--; b_num3--; }else if (b_num1 + b_num3 >= 6){ b_num1 = b_num1 - 2; b_num3 = b_num3 - 2; }else{ //.... } b_num2 = bomb_num - b_num1 - b_num3; }else{ b_num2 = rand() % ?4; b_num3 = rand() % ?4; if (b_num2 + b_num3>=4 && b_num2 + b_num3<=5){ b_num2--; b_num3--; }else if (b_num2 + b_num3 >= 6){ b_num2 = b_num2 - 2; b_num3 = b_num3 - 2; }else{ //.... } b_num1 = bomb_num - b_num2 - b_num3; } break; default: break; } // 打印3个玩家分配到的炸弹数 cout< cout< cout< int bomb_tmp = 0; int other_card = 0; for (int i = 0; i < 54;){ if (last_all_cards.size() < 17){ // 该判断是为了预留出炸弹的位置 if (last_all_cards.size() < b_num1 * 4){ // 满足条件分配炸弹 ?new_arr_vc[bomb_tmp]得到炸弹基数 for (int j = 0; j < 4; j++){ last_all_cards.push_back(card_arr[new_arr_vc[bomb_tmp] * 4 + j]); cout< i++; } bomb_tmp++; }else{ last_all_cards.push_back(other_card_vc[other_card]); other_card++; cout< i++; } }else if (last_all_cards.size() >= 17 && last_all_cards.size() < 34){ // 该判断是为了预留出炸弹的位置 if (last_all_cards.size() < b_num2 * 4 + 17){ // 满足条件分配炸弹 for (int j = 0; j < 4; j++){ last_all_cards.push_back(card_arr[new_arr_vc[bomb_tmp] * 4 + j]); cout< i++; } bomb_tmp++; }else{ last_all_cards.push_back(other_card_vc[other_card]); other_card++; cout< i++; } }else if (last_all_cards.size() >= 34 && last_all_cards.size() < 51){ // 该判断是为了预留出炸弹的位置 if (last_all_cards.size() < b_num3 * 4 + 34){ // 满足条件分配炸弹 for (int j = 0; j < 4; j++){ last_all_cards.push_back(card_arr[new_arr_vc[bomb_tmp] * 4 + j]); cout< i++; } bomb_tmp++; }else{ last_all_cards.push_back(other_card_vc[other_card]); other_card++; cout< i++; } }else{ // 加入三张公共牌 last_all_cards.push_back(other_card_vc[other_card]); other_card++; cout< i++; } } ? ? ?cout<<"last_all_cards size ="< // 将54张牌打印出看效果 for (int i = 53; i >= 0; i--){ cout< } cout< system("pause"); }


测试部分效果如下:有不明白的也可以问我,有更好的方法的可以吐槽,大家互相学习,谢谢!


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于lucene的案例开发:ClassUtil.. 下一篇uva 140 Bandwidth (全排列+暴力..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)