- 可以玩玩,...
- #include<iostream>
- using namespace std;
- int main(){
- char Rule;//竞赛规则
- char temp,WhoFirst;//谁先(Y--人先,C电脑先)
- int N,K,num,Left_Num;
- do{
- cout<<"输入竞赛规则:A. 取最后一颗棋子的那一方为败."<<endl;
- cout<<" B. 取最后一颗棋子的那一方为胜."<<endl;
- cin>>Rule;
- cout<<"总共有多少颗棋子?"<<endl;
- cin>>N;
- cout<<"谁先取?(Y--人先,C电脑先)"<<endl;
- cin>>WhoFirst;
- Left_Num=N;
- if(Rule=='A'){/*取最后一颗棋子的那一方为败*/
- if(WhoFirst=='Y'){//人先取
- do{
- if(Left_Num==2 || Left_Num==1){//结束条件
- if(Left_Num==2){//电脑输了
- Left_Num-=2;
- cout<<"我取走最后一颗"<<endl;
- cout<<"You Win!(你赢)"<<endl;
- }
- else{
- Left_Num--;
- cout<<"你取走最后一颗"<<endl;
- cout<<"I Win!(我赢)"<<endl;
- }
- }
- else{
- K=Left_Num/2;
- cout<<"一次最多可以取"<<K<<"颗"<<endl;
- cout<<"你取几颗?"<<endl;
- cin>>num;
- if(num>K){cout<<"违例,竞赛无法进行下去!"<<endl;break;}
- Left_Num-=num;
- //电脑要做的是要保留奇数颗
- if(Left_Num%2==0){
- Left_Num-=1;
- cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
- }
- else {
- if(Left_Num>=4){
- Left_Num-=2;
- cout<<"我取走2个,还剩"<<Left_Num<<"颗"<<endl;
- }
- else {
- Left_Num--;
- cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
- }
- }
- }
- }while(Left_Num>=1);
- }
- else if(WhoFirst=='C'){//电脑先取
- do{
- if(Left_Num==2 || Left_Num==1){//结束条件
- if(Left_Num==2){//电脑赢了
- Left_Num-=2;
- cout<<"我取走1颗,还剩1颗"<<endl;
- cout<<"最后一颗被你取走!"<<endl;
- cout<<"I Win!(我赢)"<<endl;
- }
- else{
- Left_Num--;
- cout<<"我取最后一颗!"<<endl;
- cout<<"You Win!(你赢)"<<endl;
- }
- }
- else{
- //电脑要做的是要保留奇数个
- if(Left_Num%2==0){
- Left_Num--;
- cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
- }
- else {
- if(Left_Num>=4){
- Left_Num-=2;
- cout<<"我取走2个,还剩"<<Left_Num<<"颗"<<endl;
- }
- else {
- Left_Num--;
- cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
- }
- }
- K=Left_Num/2;
- cout<<"一次最多可以取"<<K<<"颗"<<endl;
- cout<<"你取几颗?"<<endl;
- cin>>num;
- if(num>K){cout<<"违例,竞赛无法进行下去!"<<endl;break;}
- else Left_Num-=num;
- }
- }while(Left_Num>=1);
- }
- }
- else if(Rule=='B'){/*取最后一颗棋子的那一方为胜*/
- if(WhoFirst=='Y'){//人先取
- do{
- if(Left_Num==2 || Left_Num==1){//结束条件
- if(Left_Num==2){//电脑赢了
- Left_Num-=2;
- cout<<"我取走最后一颗"<<endl;
- cout<<"I Win!(我赢)"<<endl;
- }
- else{
- Left_Num--;
- cout<<"你取走最后1颗"<<endl;
- cout<<"Y Win!(你赢)"<<endl;
- }
- }
- else{
- K=Left_Num/2;
- cout<<"一次最多可以取"<<K<<"颗"<<endl;
- cout<<"你取几颗?"<<endl;
- cin>>num;
- if(num>K){cout<<"违例,竞赛无法进行下去!"<<endl;break;}
- Left_Num-=num;
- //电脑要做的是要保留偶数数个
- if(Left_Num%2==0){
- if(Left_Num>=4){
- Left_Num-=2;
- cout<<"我取走2个,还剩"<<Left_Num<<"颗"<<endl;
- }
- else {
- Left_Num--;
- cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
- }
- }
- else {
- Left_Num--;
- cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
- }
- }
- }while(Left_Num>=1);
- }
- else if(WhoFirst=='C'){//电脑先取
- do{
- if(Left_Num==2 || Left_Num==1){//结束条件
- if(Left_Num==2){//电脑输了
- Left_Num-=2;
- cout<<"我取走1颗,还剩1颗"<<endl;
- cout<<"你取到最后一颗"<<endl;
- cout<<"I Win!(你赢)"<<endl;
- }
- else{
- Left_Num--;
- cout<<"我取到最后一颗"<<endl;
- cout<<"You Win!(我赢)"<<endl;
- }
- }
- else{
- //电脑要做的是要保留偶数个
- if(Left_Num%2==0){
- if(Left_Num>=4){
- Left_Num-=2;
- cout<<"我取走2个,还剩"<<Left_Num<<"颗"<<endl;
- }
- else {
- Left_Num--;
- cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
- }
- }
- else {
- Left_Num--;
- cout<<"我取走1个,还剩"<<Left_Num<<"颗"<<endl;
- }
- K=Left_Num/2;
- cout<<"一次最多可以取"<<K<<"颗"<<endl;
- cout<<"你取几颗?"<<endl;
- cin>>num;
- if(num>K){cout<<"违例,竞赛无法进行下去!"<<endl;break;}
- else Left_Num-=num;
- }
- }while(Left_Num>=1);
- }
- }
- else{
- cout<<"输入规则出错"<<endl;
- }
- cout<<"继续玩吗?(No/N ;Yes/anykey)"<<endl;
- cin>>temp;
- }while(temp!='N');
- return 0;
- }
取棋子实现
最新推荐文章于 2020-10-29 18:36:28 发布