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语言猜数字游戏

目录

一、前言

二、从游戏初始界面开始

三、游戏实现

①rand函数

②srand函数

③时间戳

④time函数


一、前言

学习的过程有时候会有些许枯燥,但换一种方式学习也算是一种有趣的事情,呀哈,写个代码玩玩,

[操作度:易

[涉及知识有:函数调用+循环结构do.while()+选择判断分支+switch语句

游戏大概就是这个样子,简简易易猜数字游戏^-^

[游戏设计需求:

?1.电脑随机生产一个数字(1~100)
?2.玩家猜数字
? ? 猜大了,电脑提示猜大了,猜小了,电脑提示猜小了
?3.游戏可以一直玩,并且可以玩很多次,玩完之后可选择继续玩

以下为飞机游戏全部的代码,大家可以直接拷贝运行:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{   
	printf("*********************\n");
	printf("****  猜数字游戏 ****\n");
	printf("****-------------****\n");
	printf("****   1.play    ****\n");
	printf("****   0.exit    ****\n");
	printf("*********************\n");
}
//猜数字游戏的实现
void game()
{
	int guess = 0;
	//1.生成一个随机数
	int ret = 0;
	ret = rand()%100+1;
	//2.猜数字
	printf("现在来猜数字:>\n");
	while (1)
	{
		scanf("%d", &guess);
		if (guess < ret)
		{
			printf("猜小了哟,hhhhhhhhhh\n");
		}
		else if (guess > ret)
		{
			printf("大了大了,再想想再想想~\n");
		}
		else
		{
			printf("恭喜你,猜对了,棒极了!!\n");
			break;
		}
	}
}
int main()
{
	srand((unsigned int)time(NULL));
	int input = 0;
	do
	{
		menu();
		printf("请选择:->\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("好耶!!我出一个数字,你来猜\n");
			game();
			break;
		case 0:
			printf("已退出游戏,咱们下次再玩吧~\n");
			break;
		default:
			printf("请输入1或0,1开始游戏,0退出游戏\n");
			break;
		}
	} while (input);
	return 0;
}

如果想要更了解清楚的,让我们一起继续看下去吧~ 说不定会有更厉害的同学将游戏改进,期待~对于俺,将我了解的一些东西用自己的语言复述一遍,也是一件有意思的事情


二、从游戏初始界面开始

一款游戏是可以玩很多次的,没玩够继续玩,所以主函数中出现循环,游戏进入之后会出现一个菜单,我们可以选择玩,也可以选择退出,菜单至少出现一次,用do.while()语句perfect

int main()
{
	do
	{
		menu();
		
	} while ();
	return 0;
}

menu函数:

void menu()
{   
	printf("*********************\n");
	printf("****  猜数字游戏 ****\n");
	printf("****-------------****\n");
	printf("****   1.play    ****\n");
	printf("****   0.exit    ****\n");
	printf("*********************\n");
}

菜单有了,接下来解决输入的问题,输入1,开始游戏,输入0,退出游戏(这里不能真正的做到退出游戏,准确的说是程序结束),输入的不是1,也不是0,是其他的数怎么办?12、13、14、15……好家伙,这么多情况,嘿嘿,那用switch语句好了,多分支,所以我们的主函数变成了这样:

int main()
{
	srand((unsigned int)time(NULL));
	int input = 0;
	do
	{
		menu();
		printf("请选择:->\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("好耶!!我出一个数字,你来猜\n");
			game();
			break;
		case 0:
			printf("已退出游戏,咱们下次再玩吧~\n");
			break;
		default:
			printf("请输入1或0,1开始游戏,0退出游戏\n");
			break;
		}
	} while (input);
	return 0;
}

?在这里,其实有个很小Q的点,1代表玩游戏,0代表退出游戏,input是输入的数,当input为非0的时候,循环继续,当input为0的时候,循环才会终止,也就是说,只要我们输入0的时候,程序就彻底的结束了,即退出游戏,输入其他的非0数,游戏还可以玩,输入如果还不是1的话,菜单也会在打印一次,提示正确输入,输入1才可以开始游戏。

如果假设输入非0的数字代表退出游戏,如:1是play? ,?2是exit? ,那输入2的时候,程序并不会结束,要想实现退出游戏就变得麻烦了,可以去试一下,


三、游戏实现

模块化程序,自己写的方便,有思路,易于找问题,后续修改,别人看也更方便

最重要的灵魂,游戏实现部分用的也是一个函数

//猜数字游戏的实现
void game()
{
	int guess = 0;
	//1.生成一个随机数
	int ret = 0;
	ret = rand()%100+1;
	//2.猜数字
	printf("现在来猜数字:>\n");
	while (1)
	{
		scanf("%d", &guess);
		if (guess < ret)
		{
			printf("猜小了哟,hhhhhhhhhh\n");
		}
		else if (guess > ret)
		{
			printf("大了大了,再想想再想想~\n");
		}
		else
		{
			printf("恭喜你,猜对了,棒极了!!\n");
			break;
		}
	}
}

那怎样电脑生成一个随机数?

不急,慢慢来~

①rand函数

C语言中提供了一个生成随机数的函数——rand()函数

在cplusplus官网上查到的rand这个库函数的介绍

?像各大网站,一般都是英文,后台挂个翻译器,慢慢习惯,就阔以理解了

rand函数:

效果是返回一个随机值,类型是int ,头文件是<stdlib.h> ,随机值的范围是0~RAND_MAX ,

RAND_MAX 相当于十进制的32767

rand() % 100

任何数 %100 得到的数是0~99之间的数,

rand() % 100 + 1 之后,

得到的数是0~100之间的数,也就是我们想要需要的随机数范围

rand函数使用的经典例子:

?用法:

在调用rand函数之前? 调用srand函数? 效果是生成随机数生成器


②srand函数

简单介绍一下,

srand函数需要的是一个整型 ,(unsigned int)

如果传给srand函数的数是同一个数,那么rand函数生成的随机数是相同的,?

给srand函数传100,运行如下:

给srand函数传200,运行如下:?

?

?总结:

如果rand函数想要返回一个随机值,需要传给srand函数的也是一个随机值,一个一直在变化的数,

问题来了,我们想要一个随机值,需要一个随机值,即用一个随机值产生一个随机值,啊这这这……

难不倒咱,

电脑上的时间是不是一直在变化的呀? yep ,

这里引用? 时间戳


③时间戳

C语言提供了一个函数time,返回一个时间戳


④time函数

srand((unsigned int)time(NULL));

time函数的头文件是<time.h>


改进:

将srand函数放在主函数,因为整个程序中只需要调用一次srand函数,

这样可以使随机数更随机?


每天进步一点点

趁着春节,快和家里人一起玩这个小游戏吧~

好玩好玩,体验一下不一样的游戏,

?今天的博客就到这告一段落了,

求赞,求转发,求关注~

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 13:32:31  更:2022-02-07 13:33:09 
 
开发: 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 8:29:53-

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