问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C++做23根火柴游戏

发布网友 发布时间:2022-05-14 02:26

我来回答

2个回答

热心网友 时间:2023-08-14 16:06

终于改完啦!嗯,完整版,包括函数,注释!

#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)++;
}

热心网友 时间:2023-08-14 16:06

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n,i,ct;
int win[24]={-1,1,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,0,1,2};
for(srand(time(0)),ct=1,n=23;n;++ct)
{
printf("Turn %d (there is %d matches): %s takes ",ct,n,ct%2?"Player":"Computer");
if(ct%2)
{
scanf("%d",&i);
n-=i;
}
else
{
if(win[n]) i=win[n];
else i=rand()%3+1;
n-=i;
printf("%d\n",i);
}
}
printf("\n%s wins!\n",ct%2?"Player":"Computer");
system("pause");
return 0;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 如何看待「蒙古国现今的通用文字是西里尔字母」? 外蒙古用什么语言? 蒙古国要恢复传统蒙古文,他们为何一直“纠结”自己的官方语言? 办了精准扶贫从什么时候开始享受? 2022年还有扶贫政策吗 2015-10-29新闻发布扶贫搬迁政策什么时候开始实施 怎样挽回天蝎男的心 天蝎座男生容易吃回头草吗?怎样挽回天蝎男的心? 如何加强企业的法律意识 扶贫政策是什么 全省统一扶贫政策那一年执行的 天蝎男分手后怎么做可以挽回他们的心 如何挽回天蝎男的心 宁陵县名人 企业员工法制教育提纲 云贵川扶贫政策什么时候有的 姓籍的古代出过那些名人 扶贫从哪年开始的,哪年结束 怎么挽回天蝎男 天蝎男怎么挽回 第23关丧尽天良是什么游戏 23日新开网络游戏,有哪些啊?玩家们给介绍下呢? 请问传统蒙文为啥要加上一些不发音的字母?而西里尔蒙文却不是这样?请问西里尔蒙文跟传统蒙文有啥区别? 23周岁了,还特么喜欢玩游戏,怎么拯救网瘾的我 世界上最难的游戏第23关怎么玩?? 史上最坑爹的游戏23关怎么过?怎么左右对调 绞架小游戏23关功略 最囧游戏的23关怎么破 拼车闯关小游戏第23关怎么过? 醋溜白菜怎样做好吃? 真三国无双4小乔怎么用啊 从此之后就有了软肋是什么意思 PSP真三国无双3小乔怎样觉醒 真三国无双4 小乔招式怎么按键 这个是小乔还是大乔阿,无双觉醒时的 在古代逼逼一词是什么意思? 关于真三国无双4 真三国无双3 小乔 真三国无双4武器拿法 就像有了软肋也像有了铠甲 你怎么理解?