首先实现菜单,功能为选择1则开始游戏,选择0则退出游戏,选择其他则重新选择。
#define _CRT_SECURE_NO_WARNINGS 1 #includevoid menu() { printf("****************************n"); printf("*******1.play 0.exit*******n"); printf("****************************n"); } void test() { int input = 0; do { menu(); printf("请选择数字:"); scanf("%d", &input); switch (input) { case 1: Game();//需要测试菜单功能是否可用,Game稍后实现 break; case 0: printf("退出成功n"); break; default: printf("非法输入,请重新选择n"); break; } } while (input); } int main() { srand((unsigned)time(NULL));//下方有解释 test(); return 0; }
然后是游戏中随机数的生成,需要用到rand和srand,具体理解就是rand可以产生随机数,但是有规律可循,也就是伪随机数。这时用srand来随机设置起点,让rand产生真随机。可是起点也要是随机的才行。
也就是说想要一个随机数,必须先有一个随机数。那么就有人想到了用时间戳 ,srand((unsigned)time(NULL))就是利用时间戳产生随机起点的语句。
放在Game()中,由于需要进入游戏中才开始生成,所以当你生成多个随机数时,发现值的大小相近,所以,将上述语句置于test()中或main()中。
最后一个需要注意的点是,随机数生成的范围,控制在0到100,随机数除以100的余数可以得到。
void Game() { //生成一个随机数 //srand((unsigned)time(NULL)); int ret = rand()%100; //printf("%dn", ret);此句用于测试 int i = 0; while (1) { printf("请输入你要猜的数字:"); scanf("%d", &i); if (i > ret) { printf("猜大了n"); } else if (i < ret) { printf("猜小了n"); } else { printf("真牛逼n"); break; } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)