用C语言做搬山游戏

首先咱来分析一波——搬山游戏。

1.这个搬山游戏是玩家和电脑(人机)一块进行搬山,有输赢次数,还有游戏次数。

进行初始化

#include<stdio.h>
int main()
{
   int mountain_count,//山的总数
       carry,         //一次允许搬运的数量
	   human,         //玩家本次搬运的数量
	   comp,          //电脑本次搬运的数量
	   comp_win,      //电脑赢的次数
	   human_win,     //玩家赢的次数
	   game_count;    //当前游戏次数
	   
   printf("搬山游戏\n");
   printf("游戏开始\n");
   
   human_win=comp_win=0;
   
   game_count=1;
   

​

2.咱们得首先设置多少座山,然后设置一次允许搬多少座山。

   for(; ;)
{
   printf("NO.%2d game\n",game_count++);
   printf("-------------");
   printf("那里有多少座山?\n");
   
   scanf("%d",&mountain_count);/*读入山的总数*/
   if(!mountain_count)
{
   break;//本次游戏结束
}
   printf("每次允许多少座山?\n");
do
{
   scanf("%d",&carry);/*读入允许的搬山数*/
   if(carry>mountain_count||carry<1)
   {
	   //判断搬山数
	   printf("再说一遍!\n");
   }
} while(carry>mountain_count||carry<1);

3.我们希望一次搬多少座山,然后设置电脑(人机)一次搬山数量,这个人机搬山数量可一自己定义啊。

do
{
	printf("你希望多少山搬走?\n");
	scanf("%d",&human);
	
	if(human<1|| human>carry||human>mountain_count){
		//判断搬山数是否符合要求
		printf("不符合要求,请再次输入!\n");
		continue;//结束本次循环
	}
	mountain_count-=human;
	
	printf("现在还剩下%d座山.\n",mountain_count);
	
	if(!mountain_count){
		printf("... ... ... 我赢了,你输了... ... ...");
		
		comp_win++;
	}
	else{
		comp=(mountain_count-1)%(carry+1);//求出最佳搬山数
		if(!comp)
		{
			comp=1;
		}
		mountain_count-=comp;
		printf("电脑搬走了%d 座山.\n",comp);
		if(mountain_count){
			printf("现在还剩下%d座山.\n",mountain_count);
			
		}else{
			printf("... ... ... 我输了,你赢了... ... ...\n");
			human_win++;
		}
	}
}

 		
        while(mountain_count);
}
        return 0;
}
	   

运行结果:

搬山游戏
游戏开始
NO. 1 game
-------------那里有多少座山?
100
每次允许多少座山?
20
你希望多少山搬走?
20
现在还剩下80座山.
电脑搬走了16 座山.
现在还剩下64座山.
你希望多少山搬走?
10
现在还剩下54座山.
电脑搬走了11 座山.
现在还剩下43座山.
你希望多少山搬走?
20
现在还剩下23座山.
电脑搬走了1 座山.
现在还剩下22座山.
你希望多少山搬走?
30
不符合要求,请再次输入!
你希望多少山搬走?
20
现在还剩下2座山.
电脑搬走了1 座山.
现在还剩下1座山.
你希望多少山搬走?
1
现在还剩下0座山.
... ... ... 我赢了,你输了... ... ...NO. 2 game
-------------那里有多少座山?

最后,特别说明:此代码是连续的。如果自己要敲一遍的话,直接按顺序敲就可以。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值