From 442a76e2264a9c74bad272b5c65f2c5d43f63c0d Mon Sep 17 00:00:00 2001 From: iridiumR Date: Thu, 28 Oct 2021 19:30:56 +0800 Subject: [PATCH] =?UTF-8?q?6=E4=BC=BC=E4=B9=8E=E6=98=AF=E6=B2=A1bug?= =?UTF-8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ex6/ex6.cpp | 53 +++++++++++++++++++++++++++++++---------------------- ex6/score.h | 6 +++--- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/ex6/ex6.cpp b/ex6/ex6.cpp index 3ead841..5d2f322 100644 --- a/ex6/ex6.cpp +++ b/ex6/ex6.cpp @@ -63,7 +63,7 @@ Begin: xipai_flag == 0; goto Begin; } - printf("===============开始发牌===============\n"); + printf("================开始发牌================\n"); List p1, p2, p3; for (int i = 0; i <= 53; i++) { @@ -80,6 +80,11 @@ Begin: break; } } + printf("你手中的牌:\n"); + for (int i = 0; i < p1.getSize(); i++) + { + std::cout << i << ": " << PU[(p1)[i]] << "\n"; + } l.clear(); p1.sort(); p2.sort(); @@ -89,8 +94,8 @@ Begin: int pass_num = 0; int round = 1; int finish_num = 0; - printf("发牌完成,选择你的操作:\n"); - while (finish_num < 2&&round<54) + printf("发牌与完成,选择你的操作:\n"); + while (finish_num < 2 && round < 54) { if (pass_num > 3 - finish_num) @@ -131,12 +136,14 @@ Begin: printf("错误输入\n"); goto A; } - std::cout << "打出" << PU[l.firstInsert((p1).remove(opt))]; + if (p1[1]) + std::cout << "打出" << PU[l.firstInsert((p1).remove(opt))]; if (int size = p1.getSize() == 0) { s.finish(0); printf(",玩家A出完所有牌\n"); finish_num++; + pass_num = 0; } else printf(",剩余%d张牌\n", p1.getSize()); @@ -160,7 +167,7 @@ Begin: B: if (p2.getSize()) { - printf("================================\n"); + printf("--------------------\n"); printf("B玩家"); if (pass_num == 2 - finish_num) @@ -181,24 +188,25 @@ Begin: if (l[0] < p2[i]) { std::cout << "打出" << PU[l.firstInsert((p2).remove(i))]; - if (int size = p2.getSize() == 0) - { - s.finish(1); - printf(",玩家B出完所有牌\n"); - finish_num++; - } - else - printf(",剩余%d张牌\n", p2.getSize()); + + printf(",剩余%d张牌\n", p2.getSize()); break; } } + if (p2.getSize() == 0) + { + s.finish(1); + printf("玩家B出完所有牌\n"); + finish_num++; + pass_num = 0; + } } else printf("玩家B轮空\n"); C: if (p3.getSize()) { - printf("================================\n"); + printf("--------------------\n"); printf("C玩家"); if (pass_num == 2 - finish_num) @@ -219,17 +227,18 @@ Begin: if (l[0] < p3[i]) { std::cout << "打出" << PU[l.firstInsert((p3).remove(i))]; - if (int size = p3.getSize() == 0) - { - s.finish(2); - printf(",玩家C出完所有牌\n"); - finish_num++; - } - else - printf(",剩余%d张牌\n", p3.getSize()); + + printf(",剩余%d张牌\n", p3.getSize()); break; } } + if (p3.getSize() == 0) + { + s.finish(2); + printf("玩家C出完所有牌\n"); + finish_num++; + pass_num = 0; + } } else printf("玩家C轮空\n"); diff --git a/ex6/score.h b/ex6/score.h index b128b05..49c3eb4 100644 --- a/ex6/score.h +++ b/ex6/score.h @@ -10,14 +10,14 @@ public: { _size = i; _s = new int[_size - 1]; - for(int i=0;i<_size;i++) + for (int i = 0; i < _size; i++) { - _s[i]=0; + _s[i] = 0; } } void finish(int t) { - _s[t] = 3 - (time++); + _s[t] = 3 - 1 - (time++); } bool isFinish(int i) {