【C语言小游戏--猜数字】

这篇具有很好参考价值的文章主要介绍了【C语言小游戏--猜数字】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏,下面我将详细介绍该游戏的实现和编程逻辑。玩小游戏的同时,也能对C语言控制语句有更好的认识。

【C语言小游戏--猜数字】,c语言,开发语言

1.游戏描述

电脑随机生成一个1-100的数字,玩家来猜。玩家可以根据自己需要,设置每次猜的次数。如果在设置的次数内猜对了,则提示你猜对了,否则提示猜错了。

2.代码实现

2.1打印菜单

我们在玩游戏前,都是先打印菜单,在进行选择。所以此处选择do-while循环

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

效果展示:
【C语言小游戏--猜数字】,c语言,开发语言

2.2构建基础框架

选择1:玩游戏;
选择0:退出;
选择其它:重新选择

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");
		}
	} while (input);
	return 0;
}

效果展示:
【C语言小游戏--猜数字】,c语言,开发语言

2.3玩游戏

既然我们要玩猜数字游戏,那么我们选择1后,不能就打印一个玩游戏吧,因此下面来真正实现猜数字游戏。

2.3.1生成随机数

怎么才能生成随机数呢?
C语言提供了一个函数用来生成随机数

2.3.1.1rand()

【C语言小游戏--猜数字】,c语言,开发语言

查看文档我们发现:

  • rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的大小是 依赖编译器上实现的,但是⼤部分编译器上是32767。
  • 在调用rand之前,使用srand函数为伪随机数生成器提供种子。
  • rand函数的使用需要包含⼀个头文件是:stdlib.h

什么意思呢?我们不妨写代码测试一下:
运行一下发现,确实产生了随机数。但是当我运行第二次发现,产生的随机数和第一次的一样,那怎么能行,这不是BUG吗?

【C语言小游戏--猜数字】,c语言,开发语言
【C语言小游戏--猜数字】,c语言,开发语言

如果再深⼊了解⼀下,我们就不难发现,其实rand函数⽣成的随机数是伪随机的,伪随机数不是真的随机数,是通过某种算法⽣成的随机数。真正的随机数的是⽆法预测下⼀个值是多少的。⽽rand函数是对⼀个叫“种⼦”的基准值进⾏运算⽣成的随机数。
之所以前⾯每次运⾏程序产⽣的随机数序列是⼀样的,那是因为rand函数⽣成随机数的默认种⼦是1。 如果要⽣成不同的随机数,就要让种⼦是变化的。

种子要变化,我们再让种子是一个随机值不就行了嘛
NO,大漏特漏
如果这样的话,就死循环了

2.3.1.2srand()

刚才在文档中提到的一个srand是什么呢?
【C语言小游戏--猜数字】,c语言,开发语言

程序中在调⽤ rand 函数之前先调⽤ srand 函数,通过 srand 函数的参数seed来设置rand函数⽣成随机数的时候的种⼦,只要种⼦在变化,每次生成的随机数序列也就变化起来了。
那也就是说给srand的种⼦如果是随机的,rand就能⽣成随机数;在⽣成随机数的时候⼜需要⼀个随机数,这就又矛盾了

那电脑上什么东西是一直变化的呢?——时间

2.3.1.3time()

【C语言小游戏--猜数字】,c语言,开发语言

  • time 函数会返回当前的⽇历时间,其实返回的是1970年1⽉1⽇0时0分0秒到现在程序运行时间之间的差值,单位是秒。 如果
  • time()的参数timer是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳

如果是这样,我们就可以这样写代码:
【C语言小游戏--猜数字】,c语言,开发语言
【C语言小游戏--猜数字】,c语言,开发语言
这样我们发现数字就随机起来了,那我们的代码接下来可就好写咯。
我们需要的随机数是1-100之间的,所以我们可以这样写代码:
【C语言小游戏--猜数字】,c语言,开发语言

2.3.2game()

生成随机数

void game()
{
	srand((unsigned int)time(NULL));
	int random_number = rand() % 100 + 1;
	printf("%d\n", random_number);
}

效果如下:

【C语言小游戏--猜数字】,c语言,开发语言
但是如果你是老司机,手速比较快的话,生成的随机数会相同,如下:
【C语言小游戏--猜数字】,c语言,开发语言
这是为什么呢?
因为当我们运行一次game(),就会调用一次srand(),这样在较短时间内调用,就会产生相同的数字
因此,srand函数不需要频繁调用的,⼀次运⾏的程序中调用⼀次就够了。
所以,我们可以将其放在main()中

void game()
{
	int random_number = rand() % 100 + 1;
	int number = 0;
	while (1)
	{
		printf("请猜数字:");
		scanf("%d", &number);
		if (number > random_number)
		{
			printf("您猜大了\n");
		}
		else if (number < random_number)
		{
			printf("您猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了!\n");
			break;
		}
	}
}

2.4自己设定猜的次数

用户自己输入次数,如果未在设置的次数中猜对,则提示失败
代码变动地方如下:

switch (input)
		{
		case 1:
			printf("你感觉你几次就能猜对呢?\n");
			scanf("%d", &count);
			game(count);
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,请重新选择:\n");
		}
void game(int count)
{
	int random_number = rand() % 100 + 1;
	int number = 0;
	while (count)
	{
		printf("请猜数字:");
		scanf("%d", &number);
		if (number > random_number)
		{
			printf("您猜大了\n");
		}
		else if (number < random_number)
		{
			printf("您猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了!\n");
			break;
		}
		count--;
	}
	if (count == 0)
	{
		printf("你未在规定的次数内猜对,有点高估自己了,还得练哦\n");
	}
}

效果如下:
【C语言小游戏--猜数字】,c语言,开发语言
【C语言小游戏--猜数字】,c语言,开发语言

3.完整代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
	printf("***********************\n");
	printf("***  1.play  0.exit ***\n");
	printf("***********************\n");
}
void game(int count)
{
	int random_number = rand() % 100 + 1;
	int number = 0;
	while (count)
	{
		printf("请猜数字:");
		scanf("%d", &number);
		if (number > random_number)
		{
			printf("您猜大了\n");
		}
		else if (number < random_number)
		{
			printf("您猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了!\n");
			break;
		}
		count--;
	}
	if (count == 0)
	{
		printf("你未在规定的次数内猜对,有点高估自己了,还得练哦\n");
	}
}
int main()
{
	srand((unsigned int)time(NULL));
	int input = 0;
	int count = 0;
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("你感觉你几次就能猜对呢?\n");
			scanf("%d", &count);
			game(count);
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,请重新选择:\n");
		}
	} while (input);
	return 0;
}

本次分享就到这里啦,感谢您的观看
【C语言小游戏--猜数字】,c语言,开发语言文章来源地址https://www.toymoban.com/news/detail-721797.html

到了这里,关于【C语言小游戏--猜数字】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java编程指南】猜数字小游戏

    目录 一、前言 二、Random类 1.导包 2.创建对象 3.生成随机数 4.更改范围 5.演示 三、猜数字 1.需求 2.生成随机数范围 3.不限次数 4.规定次数 学习概述 :Java编程指南第6天、第7天我们学习了分支、循环结构,今天我们利用前面学过的知识点,加上一个 Random 类,动手完成一个 猜

    2023年04月08日
    浏览(45)
  • Python 猜数字1-100小游戏

    运行结果: 如需其他代码案例请参考: Python 猜数字1-100的小游戏_python1~100猜数字游戏代码_周华2022的博客-CSDN博客 作者:周华 创作日期:2023/9/24

    2024年01月23日
    浏览(49)
  • Python编写简易猜数字小游戏

    下面是Python编写的简易猜数字小游戏: 运行该程序,即可开始游戏。程序会生成一个1~100之间的随机数字,然后逐渐提示你输入你的猜测。如果你猜错了,程序会提示你猜小了或猜大了,直到你猜中为止。游戏结束后,程序会告诉你你猜了多少次才猜中了。

    2024年03月28日
    浏览(49)
  • Python编写简易猜数字小游戏(附完整代码)

    Python编写简易猜数字小游戏(附完整代码) 猜数字游戏是一款非常经典的小游戏,本文将介绍如何使用Python编写一个简易的猜数字游戏,并提供完整的源代码。 首先,让我们了解一下游戏规则。游戏开始时,程序会随机生成一个1到100之间的数字,玩家需要通过输入数字来猜

    2024年02月08日
    浏览(74)
  • 微信小程序之猜数字和猜拳小游戏

    目录 效果图 app.json 一、首页(index3)的代码 wxml代码 wxss代码 二、猜数字页面(index)代码 wxml代码 wxss代码 js代码 三.游戏规则页面(logs)代码 wxml代码 wxss代码 四.猜拳页面(q1)代码 wxml代码 wxss代码 js代码

    2024年04月16日
    浏览(59)
  • [C语言][小游戏][猜拳游戏]

    前言: 给大家演示一个简单小游戏,真的非常详细。 模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include \\\"XXX.h\\\"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移

    2024年02月15日
    浏览(49)
  • [C语言][小游戏][猜数游戏]

    带着梦想,带着好奇,带着执着,在C语言的世界里旅行。亲爱的朋友们,一起加油。 显示玩家从键盘输入的值和计算机事先准备的“目标数字”进行比较 1)本游戏的“目标数字”是7,用变量ans表示,从键盘输入的值则用变量no表示。 2)程序通过if来判断no和ans两个变量值的大

    2024年02月13日
    浏览(45)
  • 小游戏:人生中写的第一个小游戏——贪吃蛇(C语言)

            小编开了一个关于游戏的专栏,主要是运用easyx图形库进行的。        第一章:人生中写的第一个小游戏——贪吃蛇(C语言)         这个游戏的代码我在gitee上发布了,大家如果不嫌弃,可以进入这个网址进行查看和复制:https://gitee.com/rising-sun-1。      

    2024年02月09日
    浏览(60)
  • C语言扫雷小游戏

    扫雷的玩法:在一个9×9(初级)、16×16(中级)、16×30(高级)或自定义大小的方块矩阵中随机布置一定量的地雷(初级为10个,中级为40个,高级为99个),再由玩家逐个翻开方块,翻开的地方将显示周围八个雷的个数。以找出所有地雷为最终游戏目标。如果玩家翻开的方块

    2024年02月05日
    浏览(61)
  • 扫雷小游戏【C语言】

    目录 前言 一、基本实现逻辑 二、实现步骤 1. 我们希望在进入游戏时有一个菜单让我们选择 2. 我们希望可以重复的玩(一把玩完了还可以接着玩) 3. 采用多文件形式编程  4.要扫雷先得有棋盘(创建棋盘R*N) 5.初始化棋盘  6.打印棋盘 7.设置雷 8.排查雷 三、全部源码: 上期

    2024年02月11日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包