#include "vec.cpp" #include "list.cpp" #include #include std::string PU[54] = { "1A", "1B", "1C", "1D", "2A", "2B", "2C", "2D", "3A", "3B", "3C", "3D", "4A", "4B", "4C", "4D", "5A", "5B", "5C", "5D", "6A", "6B", "6C", "6D", "7A", "7B", "7C", "7D", "8A", "8B", "8C", "8D", "9A", "9B", "9C", "9D", "10A", "10B", "10C", "10D", "JA", "JB", "JC", "JD", "QA", "QB", "QC", "QD", "KA", "KB", "KC", "KD", "BlackJoker", "RadJoker"}; int main() { int xipai_flag = 0; printf("生成随机扑克序列"); srand(time(NULL)); Vec v(54, 2); v.printall(); List l; printf("开始建立链表\n"); for (int i = 0; i <= 53; i++) { l.firstInsert(v.get(i)); std::cout << PU[l[0]]; printf("\n"); } Begin: printf("是否重新洗牌?(0/1)"); scanf("%d", &xipai_flag); if (xipai_flag == 1) { v.reorder(); l.clear(); printf("开始建立链表\n"); for (int i = 0; i <= 53; i++) { l.firstInsert(v.get(i)); std::cout << PU[l[0]]; printf("\n"); } xipai_flag == 0; goto Begin; } printf("开始发牌\n"); List p1, p2, p3; for (int i = 0; i <= 53; i++) { switch (i % 3) { case 0: p1.firstInsert(l[i]); break; case 1: p2.firstInsert(l[i]); break; case 2: p3.firstInsert(l[i]); break; } } l.clear(); // p1.sort(); // p2.sort(); // p3.sort(); int player = 0, opt = 0; List *pai; select: printf("选择玩家(1/2/3)"); scanf("%d", &player); switch (player) { case 1: pai = &p1; break; case 2: pai = &p2; break; case 3: pai = &p3; break; default: printf("失败\n"); goto select; } while (1) { printf("first:%d",(*pai).first()->data); printf("1看牌2出牌3查看牌堆4结束\n"); scanf("%d", &opt); switch (opt) { case 1: for (int i = 0; i < (*pai).getSize(); i++) { printf("%d\n",(*pai).get(i)); } break; case 2: printf("出哪张\n"); scanf("%d", &opt); // l.firstInsert((*pai)[opt]); (*pai).remove(opt); printf("first6:%d",(*pai).first()->data); printf("剩余%d \n",pai->getSize()); printf("%d",pai->get(0)); break; case 3: for (int i = 0; i