已经将代码写出,并且做了优化
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int num=0,k=0,pri,surplus,take1,take2;//num为棋子数量,k为一次取多少颗,pri表示谁先取,surplus为剩下棋子
void wingame() //take1和take2分别为人取走的和计算机取走的.
{
system("cls");//先清屏一下
while(1)
{
if(pri==1)
{
printf("你取几颗:\n");
scanf("%d",&take1);
if(take1<1)
{
printf("取颗数错误!\n");
getchar();
exit(0);
}
if(take1>k)
{
printf("竞赛无法进行下去!\n");
getchar();
exit(0);
}
surplus=surplus-take1;
if(surplus>=0)
{
printf("你赢了,请按任意键结束游戏....\n");
getchar();
exit(0);
}
printf("你取走%d颗,还剩%d颗\n",take1,surplus);
take1=0;//将取走清零
pri=2;//优先级变成计算机的
}
if(pri==2)
{
int judge=num;
judge=(surplus%(k+1));
if(surplus==0)
{
printf("计算机赢了,不要灰心,请按任意键结束游戏....\n");
getchar();
exit(0);
}
if(judge!=0)
{
take2=judge;
if(take2<1)
{
printf("计算机认输!你赢了,请按任意键结束游戏....\n");
getchar();
exit(0);
}
surplus=surplus-take2;
printf("计算机取走%d颗,还剩%d颗\n",take2,surplus);
take2=0;//将take2清零
pri=1;//优先级变为用户的
}
if(judge==0)
{
surplus=surplus-1;
printf("计算机取走%d颗,还剩%d颗\n",take2,surplus);
take2=0;
pri=2;
}
}
}
}
void main()
{
int key;
printf("请输入一共有多少颗棋子:\n");
scanf("%d",&num);
surplus=num;//surplus为剩下棋子
printf("一次最多取多少颗:\n");
scanf("%d",&k);
printf("谁先取 1为你先取,2为计算机先取:\n");
scanf("%d",&pri);
printf("竞赛规则:\n");
printf("1.取到最后一颗棋子的一方为胜\n");
printf("2.取到最后一个棋子的一方为败(暂未开放)\n");
printf("请选择:\n");
scanf("%d",&key);
switch(key)
{
case 1:wingame();break;
//case 2:losegame();break; 先写了一个,所以losegame没写
default:exit(0);break;
}
}