猜数字游戏

简介: 猜数字游戏

前言

 这是我自己做的第三个小项目---猜数字游戏。后期我会继续制作其他小项目并开源至博客上。


 上一小项目是关机整蛊游戏,没看过的同学可以去看看:


有关关机整蛊游戏的小项目

https://blog.csdn.net/hsy1603914691/article/details/142300643?spm=1001.2014.3001.5502


游戏要求

1.随机生成一个1-100之间的随机数。

2.玩家猜数,如果不对则给出提示范围,直到正确为止。

函数准备

rand()函数

函数功能:随机生成一个1-32767之间的伪随机数。

int rand ();

使用rand()函数之前,需要引入库函数<stdlib.h>。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
  printf("%d", rand());
  return 0;
}

1. 由于rand()函数是根据它的种子来生成随机数。

2. 而它的种子默认值为1。

3. 所以直接使用时产生的是伪随机数,可以预测。

srand()函数

srand ((unsigned int)n);


1.程序中在调用 rand ()函数之前先调用 srand() 函数。


2.通过 srand() 函数的参数n,来设置rand()函数生成随机数的时候的种子。


3.只要参数n在变化,rand ()函数的种子就在变化,每次生成的随机数序列也就变化起来了。


4.srand()函数是不需要频繁调用的,⼀次运行的程序中调用一次就够了。


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
  srand(1);
  printf("%d", rand(srand( (unsigned int) n);
  return 0;
}


但此时又需要给srand()函数的参数n一个随机值。

time()函数

1. 函数功能:使用程序运行的时间作为种子。(因为时间时刻在发生变化)

2. 使用time()函数的时候需要包含头文件:<time.h>。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
  srand((unsigned int)time(NULL));
  printf("%d", rand());
  return 0;
}

优化范围

1.生成0-99之间随机数

rand()%100

2.生成1-100之间随机数

rand()%100+1

3.生成a-b之间的随机数

a+rand()%(b-a+1)

代码实现

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
void make_menu()
{
  printf("**欢迎来到猜数游戏**\n");
  printf("********************\n");
  printf("*******0.EXIT*******\n");
  printf("*******1.PLAY*******\n");
  printf("********************\n");
  return;
}
void game()
{
  int a = 0;
  int num=rand()%100+1;
  int chance = N;
  printf("已生成一个1-100的随机数\n");
  do
  {
    printf("你还有%d次机会\n",chance);
    printf("请输入你要猜的数:\n");
    scanf("%d", &a);
    if (a > num)
    {
      printf("猜大了\n");
    }
    else if (a < num)
    {
      printf("猜小了\n");
    }
    else if (a = num)
    {
      printf("恭喜,猜对了\n");
    }
  } while (--chance);
  if (chance == 0)
    printf("很遗憾,你的机会已经用完,游戏失败\n");
}
int main()
{
  srand((unsigned int)time(NULL));
  int input = 0;
  do
  {
    make_menu();
    scanf("%d", &input);
    switch (input)
    {
    case 0:
      printf("退出游戏!\n");
      break;
    case 1:
      printf("进入游戏!\n");
      game();
      break;
    default:
      printf("输入错误,请重新输入!\n");
      break;
    }
  } while (input);
  return 0;
}

致谢

 感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

相关文章
|
存储 Linux iOS开发
从 Xiaomi HyperOS 看 Windows那些你所不知道的小秘密
从 Xiaomi HyperOS 看 Windows那些你所不知道的小秘密
399 0
|
JavaScript 前端开发 Linux
在 Node.js 和 Electron 中获取设备 UUID 的最佳实践
【JS】在 Node.js 和 Electron 中获取设备 UUID 的最佳实践
1036 1
|
Java API 调度
JUC线程池: FutureTask详解
总而言之,FutureTask是Java并发编程中一个非常实用的类,它在异步任务执行及结果处理方面提供了优雅的解决方案。在实现细节方面可以搭配线程池的使用,以及与Callable接口的配合使用,来完成高效的并发任务执行和结果处理。
140 0
|
SQL 关系型数据库 MySQL
MySQL的where表达式中的各种运算符的用法和细节
MySQL的where表达式中的各种运算符的用法和细节
387 1
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用合集之如果设置了自依赖,第一次自动批量怎么运行
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
机器学习/深度学习 人工智能 分布式计算
基于组合优化的3D家居布局生成看千禧七大数学难题之NP问题
基于组合优化的3D家居布局生成看千禧七大数学难题之NP问题
293 1
阿萨聊测试: Postman 的界面功能介绍
阿萨聊测试: Postman 的界面功能介绍
245 0
|
存储 弹性计算 运维
阿里云无影云电脑具体价格
阿里云无影云电脑具体价格可以免费使用3个月
453 0
|
存储 网络协议 关系型数据库
Linux知识分享|Linux目录结构(最全最详细)
Linux知识分享|Linux目录结构(最全最详细)
1499 0
Linux知识分享|Linux目录结构(最全最详细)
|
移动开发 API
四:net core(.NET 6)使用Filter过滤器拦截webapi方法
Filter的基本用法 :代码在最下方使用filter过滤器,来实现拦截接口信息。咱们先新建一个项目,在原有的webapi上面,选择添加项目,添加一个类库项目
1652 0
四:net core(.NET 6)使用Filter过滤器拦截webapi方法