“剪刀石头布”这个游戏,想必小伙伴们都很熟悉了,两个人在玩游戏时,事先都不知道对方要出什么,这过程中存在随机性,那么今天将以剪刀石头布为重点,分享如何用C语言来实现它。
如上文所述,剪刀石头布游戏存在偶然性和随机性,所以我们要用上C语言的rand()函数和time()函数来实现这个随机性特点,rand()函数的作用是产生随机数,根据提供给srand()的种子值返回一个随机数,要保证每次随机结果不同,需要在srand()里调用time()函数,因为每次运行时间是不同的,所以seed也会不同,运行出来的结果也会不同,也就能保证随机数。
需要注意的是,rand()内部是以线性同余法实现的,是伪随机数,由于它的周期较长,所以在某种程度上可以看成是随机的;rand()函数需要由srand()函数用来设置rand()产生随机数时的随机数种子,参数seed必须是整数,可通过time(0)或geypid(0)的返回值作为seed。
具体代码如下:
#include
#include
#include
#include
int main()
{
srand((unsigned)time(NULL));
char str1[] = "rock", str2[] = "scissors", str3[] = "paper";
char player[10] = { 0 }, GAMBLER[10] = { 0 };
int a = rand() % 3 + 1;
switch (a)
{
case 1:
strcpy(GAMBLER, str1); break;
case 2:
strcpy(GAMBLER, str2); break;
case 3:
strcpy(GAMBLER, str3); break;
}
printf("欢迎进入“石头剪刀布”\n准备好了么?玩家\n");
printf("请出拳:\n");
printf("提示:石头rock,剪刀scissors,布paper\n");
scanf("%s", &player);
int P = strlen(player), G = strlen(GAMBLER);
printf("你出拳:%s\nGMABLER出拳:%s\n", player, GAMBLER);
if (strcmp(GAMBLER, player) != 0)
{
if (P - G > 0)
{
if (P - G == 4)
printf("你输了\n\n");
else
printf("你赢了\n");
}
else
{
if(P-G==-4)
printf("你赢了\n");
else
printf("你输了\n");
}
}
else
printf("平局");
return 0;
}
00001.