游戏随机数的增加

“23”游戏是一个双人游戏,道具是23根牙签,玩家轮流取1,2或3根牙签。
拿到最后一根牙签的是输家。写程序和计算机玩“23”。
总是玩家先走,轮到计算机时,它根据以下规则采取行动:
a.如果剩余牙签多于4根,计算机就取走4 - x根,x为玩家上次取走的牙签数
b.如果剩余2 - 4根牙签,计算机取走足够多的牙签,确保只剩下1根
c.如果剩余1根牙签,计算机只能取走它并且认输
玩家输入要取走的牙签数量时,程序应对输入的有效性进行检查。
要确定玩家输入的数在1到3之间,而且试图取走的不能超过当前剩余的。
这里规则是当牙签多于4根的时候,计算机是取走4减去上次玩家取走的数量,这往往就会导致了当玩家固定输入某个值得时候。电脑也会跟着输出相同的值,导致玩家常常胜利。(结果如下图所示)
在这里插入图片描述
在这里插入图片描述
所以我将游戏难度升级了一下增加随机性,这样就能提高游戏的困难程度了。这样用户在抽取牙签的时候就增添了难度。(如下图)
在这里插入图片描述
在这里插入图片描述

这个我是在剩余数量大于4时才抽取随机1-3的牙签数,此处用到了#include <stdlib.h>和#include <time.h> 这两个头文件,#include <stdlib.h>的这个头文件里面包含了rand(),srand()函数这两个我们要使用的函数,rand()函数是用来生成一个随机数,srand()函数我们是用来生成一个种子在这里我们用来把time()函数嵌进去来生成当前时间的随机数。而#include <time.h>这个头文件里面我们所使用的是time()函数,time()这个函数我们主要用来获取当前时间:time(0)或者time(Null);然后把它调用在玩家抽取之后剩余数量大于4时使用。这样会提高游戏的随机发生可能性。增加了游戏的乐趣。

关键代码如下:

#include
#include <stdlib.h>//rand(),srand()函数在这个头文件中
#include <time.h> //time(0)在这个头文件中

···
int lianxi_23deGame(int k, int g) {//K为固定值23,G为游戏模式
srand((unsigned)time(NULL));//此为添加调用时调用当前调用时间的种子
···
if (k > 4)//此处K为玩家取走后剩余牙签数
{
if (g == 1) {m = 4 - n;}//此处根据题目来执行的规则
else if (g==2){m = (rand() % 3) + 1;}//rand()%3时为了确保值小于3,因为结果有0所以+1
}
else if (k <= 4 && k >= 2) {m = k - 1;}//当值等于或者小于4且大于或等于2的时候执行
···
k = k - m;//电脑取走后剩余数量
cout << “电脑取走” << m << “根,剩余” << k << “根” << endl;
···
}
}
···
lianxi_23deGame(k, g);//重新调用此函数
}

猜你喜欢

转载自blog.csdn.net/qq_39686486/article/details/89609169