取棋子实现

  1. 可以玩玩,...
  2. #include<iostream>
  3. using namespace std;
  4. int main(){
  5.  char Rule;//竞赛规则
  6.  char temp,WhoFirst;//谁先(Y--人先,C电脑先)
  7.  int N,K,num,Left_Num;
  8.  do{
  9.   cout<<"输入竞赛规则:A. 取最后一颗棋子的那一方为败."<<endl;
  10.   cout<<"              B. 取最后一颗棋子的那一方为胜."<<endl;
  11.   cin>>Rule;
  12.   cout<<"总共有多少颗棋子?"<<endl;
  13.   cin>>N;
  14.   cout<<"谁先取?(Y--人先,C电脑先)"<<endl;
  15.   cin>>WhoFirst;
  16.   Left_Num=N;
  17.   if(Rule=='A'){/*取最后一颗棋子的那一方为败*/
  18.    if(WhoFirst=='Y'){//人先取
  19.     do{
  20.      if(Left_Num==2 || Left_Num==1){//结束条件
  21.       if(Left_Num==2){//电脑输了
  22.        Left_Num-=2;
  23.        cout<<"我取走最后一颗"<<endl;
  24.        cout<<"You Win!(你赢)"<<endl;
  25.       }
  26.       else{
  27.          Left_Num--;
  28.                            cout<<"你取走最后一颗"<<endl;
  29.                            cout<<"I Win!(我赢)"<<endl;
  30.       }
  31.      }
  32.      else{
  33.       K=Left_Num/2;
  34.       cout<<"一次最多可以取"<<K<<"颗"<<endl;
  35.       cout<<"你取几颗?"<<endl;
  36.       cin>>num;
  37.      
  38.       if(num>K){cout<<"违例,竞赛无法进行下去!"<<endl;break;}
  39.       Left_Num-=num;
  40.        //电脑要做的是要保留奇数颗
  41.       if(Left_Num%2==0){
  42.        Left_Num-=1;
  43.        cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
  44.       }
  45.       else {
  46.        if(Left_Num>=4){
  47.         Left_Num-=2;
  48.         cout<<"我取走2个,还剩"<<Left_Num<<"颗"<<endl;
  49.        }
  50.        else {
  51.         Left_Num--;
  52.         cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
  53.        }
  54.       }
  55.      }
  56.     }while(Left_Num>=1);
  57.    }
  58.    else if(WhoFirst=='C'){//电脑先取
  59.     do{
  60.      if(Left_Num==2 || Left_Num==1){//结束条件
  61.       if(Left_Num==2){//电脑赢了
  62.        Left_Num-=2;
  63.        cout<<"我取走1颗,还剩1颗"<<endl;
  64.        cout<<"最后一颗被你取走!"<<endl;
  65.        cout<<"I Win!(我赢)"<<endl;
  66.       }
  67.       else{
  68.          Left_Num--;
  69.          cout<<"我取最后一颗!"<<endl;
  70.                            cout<<"You Win!(你赢)"<<endl;
  71.       }
  72.      }
  73.      else{
  74.          //电脑要做的是要保留奇数个
  75.       if(Left_Num%2==0){
  76.        Left_Num--;
  77.        cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
  78.       }
  79.       else {
  80.        if(Left_Num>=4){
  81.         Left_Num-=2;
  82.         cout<<"我取走2个,还剩"<<Left_Num<<"颗"<<endl;
  83.        }
  84.        else {
  85.         Left_Num--;
  86.         cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
  87.        }
  88.       }
  89.       K=Left_Num/2;
  90.       cout<<"一次最多可以取"<<K<<"颗"<<endl;
  91.          cout<<"你取几颗?"<<endl;
  92.          cin>>num;
  93.          if(num>K){cout<<"违例,竞赛无法进行下去!"<<endl;break;}
  94.       else Left_Num-=num;
  95.      }
  96.     }while(Left_Num>=1);
  97.    }
  98.   }
  99.   else if(Rule=='B'){/*取最后一颗棋子的那一方为胜*/
  100.    if(WhoFirst=='Y'){//人先取
  101.     do{
  102.      if(Left_Num==2 || Left_Num==1){//结束条件
  103.       if(Left_Num==2){//电脑赢了
  104.        Left_Num-=2;
  105.        cout<<"我取走最后一颗"<<endl;
  106.        cout<<"I Win!(我赢)"<<endl;
  107.       }
  108.       else{
  109.          Left_Num--;
  110.          cout<<"你取走最后1颗"<<endl;
  111.                            cout<<"Y Win!(你赢)"<<endl;
  112.       }
  113.      }
  114.      else{
  115.       K=Left_Num/2;
  116.          cout<<"一次最多可以取"<<K<<"颗"<<endl;
  117.          cout<<"你取几颗?"<<endl;
  118.          cin>>num;
  119.          if(num>K){cout<<"违例,竞赛无法进行下去!"<<endl;break;}
  120.       Left_Num-=num;
  121.       //电脑要做的是要保留偶数数个
  122.       if(Left_Num%2==0){
  123.        if(Left_Num>=4){
  124.         Left_Num-=2;
  125.         cout<<"我取走2个,还剩"<<Left_Num<<"颗"<<endl;
  126.        }
  127.        else {
  128.         Left_Num--;
  129.         cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
  130.        }
  131.        
  132.       }
  133.       else {
  134.        Left_Num--;
  135.        cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
  136.       
  137.       }
  138.      }
  139.     }while(Left_Num>=1);
  140.    }
  141.    else if(WhoFirst=='C'){//电脑先取
  142.     do{
  143.      if(Left_Num==2 || Left_Num==1){//结束条件
  144.       if(Left_Num==2){//电脑输了
  145.        Left_Num-=2;
  146.        cout<<"我取走1颗,还剩1颗"<<endl;
  147.        cout<<"你取到最后一颗"<<endl;
  148.        cout<<"I Win!(你赢)"<<endl;
  149.       }
  150.       else{
  151.          Left_Num--;
  152.          cout<<"我取到最后一颗"<<endl;
  153.                            cout<<"You Win!(我赢)"<<endl;
  154.       }
  155.      }
  156.      else{
  157.          //电脑要做的是要保留偶数个
  158.       if(Left_Num%2==0){
  159.        if(Left_Num>=4){
  160.         Left_Num-=2;
  161.         cout<<"我取走2个,还剩"<<Left_Num<<"颗"<<endl;
  162.        }
  163.        else {
  164.         Left_Num--;
  165.         cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
  166.        }
  167.       }
  168.       else {
  169.        Left_Num--;
  170.        cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
  171.       }
  172.       K=Left_Num/2;
  173.       cout<<"一次最多可以取"<<K<<"颗"<<endl;
  174.          cout<<"你取几颗?"<<endl;
  175.          cin>>num;
  176.          if(num>K){cout<<"违例,竞赛无法进行下去!"<<endl;break;}
  177.       else Left_Num-=num;
  178.      }
  179.     }while(Left_Num>=1);
  180.    }
  181.   }
  182.         else{
  183.    cout<<"输入规则出错"<<endl;
  184.   }
  185.   cout<<"继续玩吗?(No/N ;Yes/anykey)"<<endl;
  186.   cin>>temp;
  187.  }while(temp!='N');
  188.  return 0;
  189. }
  190.  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值