【C++】while 循环应用案例 - 猜数字游戏

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

目录

1、缘起

2、案例描述

3、代码

4、相关知识点

4.1、rand() 函数

4.2、srand() 函数

4.3、时间戳显示

5、总结 


1、缘起

        猜数字游戏是一种简单而又有趣的游戏,在这个游戏中,计算机会生成一个随机数字,玩家需要通过不断猜测来猜出这个数字。在本篇博客中,我们将使用 C++ 编程语言中的 while 循环 来实现一个简单的猜数字游戏,并介绍如何优化代码以提高游戏的体验。

2、案例描述

系统随机生成一个 1 到 100 之间的数字,玩家进行猜测,如果猜错,提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并退出游戏。

游戏的逻辑流程图如下:

【C++】while 循环应用案例 - 猜数字游戏

3、代码

main.c++

#include <iostream>
#include "game.h"
 
using namespace std;

int main()
{
	//定义一个变量,进行游戏的进行和退出的选择
	int input = 0;

	do
	{
		menu();
		cout << "请选择>: " << endl;
		cin >> input;
		cout << "\n" << endl;

		switch (input)
		{
			case 1:
				cout << "欢迎来到猜数字游戏\n祝您旅途愉快!!\n" << endl;
				game(); //猜数字游戏
				break;
			case 0:
				cout << "您已退出游戏 !" << endl;
				break;
		}
	} while (input);


	system("pause");
	return 0;
}	

game.c++ 

#include "game.h"


void menu()
{
	cout << "**********************" << endl;
	cout << "*** 1.Play  0.Exit ***" << endl;
	cout << "**********************" << endl;
}

void game()
{
	short count = 5;

	//添加随机数种子,作用利用当前系统时间生成随机数,防止每次随机数都一样
	srand((unsigned int)time(NULL));

	//1、系统生成随机数
	int num = rand() % 100 + 1; //rand()%100 生成 0~99 的随机数

	//2、玩家进行猜测
	int val = 0;  //玩家输入的数字

	while (1)
	{
		cout << "请猜数字:>" << endl;
		cin >> val;
		cout << "\n" << endl;

		//5 次机会用完自动退出游戏
		count--;
		//cout << count << endl;

		if (val > num)
		{
			cout << "猜大了!" << endl;
			cout << "您剩余的次数:" << count << endl;
			cout << "\n" << endl;
		}
		if (val < num)
		{
			cout << "猜小了!" << endl;
			cout << "您剩余的次数:" << count << endl;
			cout << "\n" << endl;
		}
		if (val == num)
		{
			cout << "恭喜你,猜对了!!" << endl;
			break;
		}
		if (0 == count)
		{
			cout << "对不起,您的次数已经用完,请充值!!" << endl;
			cout << "\n" << endl;
			break;
		}
	}
}

game.h 

#pragma once

#include<iostream>
using namespace std;

//函数的声明
void menu();
void game();

4、相关知识点

4.1、rand() 函数

        rand() 函数 用来产生随机数,需要的头文件是:<stdlib.h> 。但是,rand() 的内部是用 线性同余法 实现的,是伪随机数,由于周期较长,因此在一定范围内可以看成是随机的。rand() 函数会返回一个范围在 0 ~ RAND_MAX (32767) 之间的伪随机数(整数)。其中 RAND_MAX 是由 编译器 定义的常量,表示生成的最大随机数。

int rand(void);

        在调用 rand() 函数之前,可以使用 srand() 函数设置 随机数种子,如果没有设置随机数种子,rand() 函数在调用时,自动设计随机数种子为 1 。随机数种子相同,每次产生的随机数也会相同。

例如,使用 rand() 函数产生 1 ~ 100 以内的随机整数

        如果要生成 特定范围内 的随机数,可以使用 模运算。例如,要生成介于 1 和 100 之间的随机数,可以使用以下代码: 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    // 设置种子为当前系统时间
    srand((unsigned int)time(NULL));
 
    for (int i = 0; i < 3; i++)
    {
        // 生成随机数
        int num = rand()% 100 + 1;

        printf("随机数是:%d\n", num);
    }
   
    system("pause");
    return 0;
}

【C++】while 循环应用案例 - 猜数字游戏

关键代码解释:

         rand() % 100,可以产生 0 ~ 99 之间的数字,rand() % 100 + 1 就可以产生 1 ~ 100 之间的数字,依次类推 !

4.2、srand() 函数

        srand() 函数 需要的头文件是:<stdlib.h>。srand() 函数用来设置 rand() 函数产生随机数时的随机数种子。

void srand(unsigned int seed);

        其中,seed 是一个整数值,用来作为随机数生成器的种子。种子决定了随机数序列的起始值,因此不同的种子会生成不同的随机数序列。在使用 rand 函数生成随机数之前,通常需要调用 srand 函数设置种子。可以使用 时间函数 time() 获取 时间戳 作为种子,以保证每次程序运行时生成的随机数序列都是不同的。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    // 设置种子为当前系统时间
    srand((unsigned int)time(NULL));
 
    for (int i = 0; i < 3; i++)
    {
        // 生成随机数
        int num = rand();

        printf("随机数是:%d\n", num);
    }
   
    system("pause");
    return 0;
}

【C++】while 循环应用案例 - 猜数字游戏

关键代码解释:

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

这段代码是用于初始化伪随机数生成器(pseudo-random number generator)。让我一步步解释它的含义:

  1. srand 是一个函数,它用于设置随机数生成器的种子(seed)。种子是一个起始值,它决定了随机数生成器产生的序列。

  2. time(NULL) 函数返回的是自 1970 年 1 月 1 日 00:00:00 UTC 到 当前时间 的秒数。这个秒数也称为 Unix 时间戳(Unix timestamp),因为 Unix 操作系统最早采用了这种时间表示方式。

    换句话说,如果当前时间是 2023 年 5 月 12 日 10:30:45,那么 time(NULL) 函数将返回一个表示从 1970 年 1 月 1 日 00:00:00 到这个 时间间隔的秒数

  3. (unsigned int) 是一个类型转换操作符,将返回的时间值转换为无符号整数类型。

  4. srand 函数接受一个整数值作为种子,并根据这个种子初始化随机数生成器。

因此,整个代码的目的是使用当前时间作为种子,从而生成一个与时间相关的随机数序列。这样,在每次运行程序时,使用不同的种子值,从而获得不同的随机数序列。

4.3、时间戳显示

#include<iostream>
using namespace std;

int main()
{
	while (1)
	{
		long elapsed_seconds = time(NULL);
		cout << elapsed_seconds << endl;
	}

	system("pause");
	return 0;
}

5、总结 

        通过 C++ 中的 while循环,你可以轻松地创建一个有趣的猜数字游戏。玩家需要在给定的尝试次数内猜出正确的数字,每次猜测后程序会给出提示,让玩家更快地接近答案。这个小游戏可以帮助玩家提高逻辑思维和数学能力,同时也是一个有趣的时间消磨方式。

        本期的分享总结就到这里了,如果有疑问的小伙伴,我们在评论区交流嗷,笔者必回,我们下期再见啦 !

         文章来源地址https://www.toymoban.com/news/detail-416588.html

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

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

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

相关文章

  • 第38讲:Python while循环语句核心概念以及案例演示

    循环指的是按照特定的条件重复性的执行某些动作,在Python中循环操作也叫作遍历操作,与现实中一样Python也可以根据特定的条件,实现无限循环和有限循环的方法。 那么为什么要使用循环呢? 我们可以看这样的一个场景:如果我们想打印1-100这100个数字,如果不使用循环,

    2024年02月01日
    浏览(17)
  • C++ do...while 循环

    不像 for 和 while 循环,它们是在循环头部测试循环条件。do…while 循环是在循环的尾部检查它的条件。 do…while 循环与 while 循环类似,但是 do…while 循环会确保至少执行一次循环。 C++ 中 do…while 循环的语法: 请注意,条件表达式出现在循环的尾部,所以循环中的 statement(s

    2024年02月10日
    浏览(10)
  • 11-JavaScript 逻辑条件 ,if判断 ,while循环,算数运算相关的案例演示

    1、案例:猜数字 设置一个1-10之间的随机数,然后输入进行猜数字,猜的大了怎么样、猜的小了怎么样、猜对了怎么样 知识点:设置随机数 、if判断 、while循环 写题思路: 1.设置弹框提出问题 2.定义一个随机数0-10的数组 3.if 判断 取值的范围,在其范围内反馈的结果 4.while循

    2024年02月08日
    浏览(13)
  • Shell脚本while循环语句应用

    记录 :433 场景 :Shell脚本while循环语句应用。Shell脚本while循环语句应用。while do done、while : do done、while true do done。 版本 :CentOS Linux release 7.9.2009。 1.while常用格式 1.1格式一:while do done 1.2格式二:无限循环(while : do done) 1.3格式三:无限循环(while true do done) 2.使用while遍历数组

    2024年02月06日
    浏览(38)
  • 【Python入门】Python循环语句(while循环的嵌套应用)

    前言 📕作者简介: 热爱跑步的恒川 ,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函数、函数进阶、数据容器、文件操作、异常模块与包、数据可视化等,

    2024年02月05日
    浏览(22)
  • C++入门教程||C++while循环

    C++ 中  while  循环的语法: 在这里, statement(s)  可以是一个单独的语句,也可以是几个语句组成的代码块。 condition  可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环。 当条件为假时,程序流将继续执行紧接着循环的下一条语句。 在这里, while  循

    2024年02月08日
    浏览(41)
  • 【C++从0到1】21、C++中while循环语句

    语法: 先计算表达式的值,如果为真就执行语句块,执行完语句块后,回到循环首部再次计算表达式的值,如果为真又执行一次语句块……,这个过程会一直重复,直到表达式的值为假时不再执行语句块。 注意: 如果表达式的值永远为真,那么将进入死循环,所以在循环中

    2023年04月09日
    浏览(16)
  • C++ While 和 For 循环:流程控制全解析

    使用 switch 语句选择要执行的多个代码块之一。 语法 它的工作原理如下: switch 表达式被评估一次 表达式的值与每个 case 的值进行比较 如果找到匹配项,则执行关联的代码块 break 和 default 是可选的 下面的示例使用星期几的数字来计算星期几的名称: 示例 当 C++ 遇到

    2024年04月08日
    浏览(19)
  • [编译原理]DO-WHILE循环语句的翻译程序设计(LR(1)方法、输出四元式)C++实现

    初始条件: ​ 理论:完成编译原理,数据结构、高级编程语言、汇编语言等相关课程的学习,基于计算机专业知识进行课程设计。 ​ 实践:计算机实验室提供计算机及软件环境。如果自己有计算机及环境也可以在其上进行设计任务。 要求完成的主要任务: (包括课程设计工

    2024年02月03日
    浏览(13)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包