yueyueyue8 于 2016.09.07 14:36 提问

23根火柴游戏的c++编程

5个回答

qq_29594393      2016.09.07 15:04

xiao_quande   2016.09.07 15:40

xianfajushi   2016.09.07 16:44

qq_34745295   2016.09.07 19:34

lx624909677      2016.09.20 16:36
`````` #include<iostream>
#include<string>
#define NUM 20
using namespace std;

void main()
{
//规则的输出
cout<<endl;
cout<<"***************************************************"<<endl;
cout<<"游戏规则：共有23根火柴，2个人依次拿取，每个人每次只"<<endl;
cout<<"能拿1跟或者2跟或者3跟火柴。拿到最后一跟火柴的人算输"<<endl;
cout<<"****************************************************"<<endl;
cout<<endl;
//变量的定义
int  match_num=23;     //火柴数目
int  *p_match_num;     //指向火柴数目的指针
int  player = 0;     //玩家变量，偶数代表玩家1，奇数代表玩家2
char player_first[NUM];    //玩家1的名字
char player_second[NUM];   //玩家2的名字
char judge;       //判断变量，值为'y'时，表示玩家1先开局
int  put_num=0;      //拿走火柴的数目
char temp[NUM];
char *p_player_now;
int *p_put_num;      //指向拿走火柴数目的指针
int *p_player;
//指针赋值
p_match_num=&match_num;
p_put_num=&put_num;
p_player=&player;
p_player_now=player_first;
//函数的定义
void match(int* p_player, int* p_match_num,int* p_put_num,char* p_player_now);     //火柴拿走数目函数
//游戏开始
cout<<"请输入玩家1的名字：";
gets(player_first);
cout<<"请输入玩家2的名字：";
gets(player_second);
//玩家开局顺序的选择
cout<<"玩家“"<<player_first<<"”选择拿火柴顺序（“F(First)/S(Second)”）";
cin>>judge;
if(judge=='s')
{
strcpy(temp,player_first);
strcpy(player_first,player_second);
strcpy(player_second,temp);
}
cout<<"玩家“"<<player_first<<"”先开始"<<endl;
cout<<endl;
//火柴的拿取
while(1)
{
if(player%2==0)
p_player_now=player_first;
else
p_player_now=player_second;
match(p_player,p_match_num,p_put_num,p_player_now);
match_num=match_num-put_num;
if(match_num==0)
{
cout<<"玩家“"<<p_player_now<<"”您输了!"<<endl;
break;
}
}
}

void match(int* p_player,int* p_match_num,int* p_put_num,char* p_player_now)
{
cout<<"请“"<<p_player_now<<"”输入准备拿走火柴的数目：";
cin>>*p_put_num;
while(*p_put_num!=1 && *p_put_num!=2 && *p_put_num!=3 || *p_match_num-*p_put_num<0)
{
if(*p_put_num!=1 && *p_put_num!=2 && *p_put_num!=3)
{
cout<<"您输入的数值不合法，拿走的火柴数目只能是 1 或 2 或 3，请重新输入:";
cin>>*p_put_num;
}
if(*p_match_num-*p_put_num<0)
{
cout<<"您输入的数值大于剩余火柴数目，请重新输入：";
cin>>*p_put_num;
}
}
cout<<"您拿走的火柴数目是： "<<*p_put_num<<endl;
cout<<"剩余火柴数目是： "<<*p_match_num-*p_put_num<<endl;
cout<<endl;
(*p_player)++;
}
``````