IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 玩转C语言—猜数字小游戏 -> 正文阅读

[C++知识库]玩转C语言—猜数字小游戏

游戏规则:电脑会随机产生一个1~100的数字,玩家猜数字,如果玩家猜小了,电脑会提示猜小了。猜大了,电脑会提示猜大了。猜对了,电脑会告诉你:恭喜你,猜对了。

代码实现:

1.打印菜单:

当我们游戏运行起来的时候,至少先要看见菜单,所以我们首先要做的就是打印菜单。其次游戏要重复玩,所以我们用do....while语句来实现。

#include <stdio.h>
void menu()
{
	printf("******************************************\n");
	printf("*********       1.play        ************\n");
	printf("*********       2.exit        ************\n");
	printf("******************************************\n");
}

int main()
{
	do
	{
		//打印菜单
		menu();
	} while();
	return 0;
}

2.根据菜单选择:

#include <stdio.h>
void menu()
{
	printf("******************************************\n");
	printf("*********       1.play        ************\n");
	printf("*********       0.exit        ************\n");
	printf("******************************************\n");
}

int main()
{
	int input = 0;
	do
	{
		//打印菜单
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("猜数字\n");
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while(input);
	return 0;
}

3.猜数字的实现:

当我们输入1时进入游戏开始进行猜数字,下面我们来看一下如何用代码实现:

🍎必备知识:

C语言中生成随机数的方法:rand函数

下面我们来看一下RAND_MAX有多大:

?我们可以看到RAND_MAX代表的数字为0x7fff,转换为十进制为32767.

?:需要注意的是调用rand函数之前需要用srand函数来设置随机数生成器,且设置一次就可以。

?下面我们来看一下srand函数:

当srand函数里面的参数在不断发生变化时,rand返回的值才会不断的发生变化。我们知道时间在不断的发生变化,而每一个时间都对应一个数字,而我们获得的数字叫做时间戳。那我们如何获取时间戳呢?此时我们需要time函数,下面我们来看一下time函数:?

?我们可以将空指针(NULL)传入time函数里面:time(NULL).

下面我们来探究一下time_t是什么:

?我们可以看到time_t不过是__time64_ttypedef重命名过来的,而__time64_t又是64位整型typedef重命名过来的,所以time函数的返回类型为64位整型。但srand要的参数类型为无符号整型,此时我们只需要强制类型转换即可。

rand函数返回的值的范围为0~32767,而我们要产生的数字范围为0~100,所以我们要把rand返回的值%100再+1.

void game()
{
	int guess = 0;
	//生成随机数
	int r = rand()%100+1;  //0~99->1~100
	//猜数字
	while (1)
	{
		printf("猜数字:");
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜小了\n");
		}
		else if (guess > r)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你,猜对了!\n");
			break;//猜对跳出循环。
		}
	}
}

?🍎:因为随机数生成器只能设置一次,所以将它放入到了主函数中。?

4.完整代码呈现:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
	printf("******************************************\n");
	printf("*********       1.play        ************\n");
	printf("*********       0.exit        ************\n");
	printf("******************************************\n");
}
void game()
{
	int guess = 0;
	//生成随机数
	int r = rand()%100+1;  //0~99->1~100
	//猜数字
	while (1)
	{
		printf("猜数字:");
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜小了\n");
		}
		else if (guess > r)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你,猜对了!\n");
			break;//猜对跳出循环。
		}
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL)); //时间-设置随机数的生成器
	do
	{
		//打印菜单
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while(input);
	return 0;
}

?今天的猜数字游戏就到这里,大家赶紧试着上手去敲一敲感受一下代码带来的快乐吧?。

?

?

?

?

?

?

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:38:58  更:2022-01-24 10:40:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:01:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码