猜数字游戏代码实现(解析)

思路解析

1.游戏需要界面,开始和退出

2.游戏开始时,我需要有随机数在游戏中自动生成

3.用户猜测数字时,若正确则提示正确,若错误则需要告知‘猜大了’或‘猜小了’

4.最好加上次数限制,增加游戏感

5.当一局结束后,再次选择开始或退出

生成随机数的函数介绍

1.rand函数

用来生成随机数的

#include<stdlib.h>//必须包含此头文件

int main()
{
    RAND_MAX;//放入编译器里面可以看到的文字——
             //#define RAND_MAX 0x7fff——此16进制转为10进制为32767   
    rand();//生成随机数的范围是0~RAND_MAX
    return 0;
}

情况:若打印多次rand函数生成的数会发现,数字都一样

           说明该rand函数生成的随机数是伪随机数,是计算机通过某种算法生成的随机数

原因:rand函数是对一个叫“种子”的基准值进行运算生成的随机数,而且rand函数生成随机数的默             认种子为1。

解决方案:只要让种子变化就可以了

2.srand函数

用来初始化随机数的生成器的

原型如下:

1 void srand (unsigned int seed);

原理:程序在调用rand函数之前先调用srand函数,通过srand函数的参数来设置rand函数生成随               机数的时候的种子,只要种子变化,每次生成的随机序列也就变化起来了

3.time函数

用来作为种子的

原型如下:

1 time_t time (time_t* timer);

解释:time函数会返回当前的日历时间,其返回的是1970年1月1日0时0分0秒到现在程序运行时               间之间的差值,单位是秒,返回的类型是time_t类型的,time_t类型的本质上其实就是32                 位或者64位的整数类型。

           time函数的参数timer如果是非NULL的指针的话,函数也会将这个返回的差值放在timer指               向的内存中带回去。如果timer是NULL,就只返回这个时间的差值。time函数返回的这个时             间差也被叫做:时间戳

           使用时需要包含头文件:time.h

4.设置随机数的范围

如果要生成0~99之间的随机数

1 rand() %100;//余数的范围是0~99

如果要⽣成1~100之间的随机数

1 rand()%100+1;//%100的余数是0~99,0~99的数字+1,范围是1~100

如果要生产a~b之间的随机数

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

代码过程

1.自定义函数(游戏界面)

void begin()
{
	printf("****************\n");
	printf("**** 1.play ****\n");
	printf("**** 2.exit ****\n");
	printf("****************\n");
	printf("是否开始游戏:>");
}

2.自定义函数(游戏过程)

(1)猜大或者猜小之后的回馈

(2)次数的限制(规定次数内未完成后结束,并展示正确数字)

void game()
{
	int sum = 0;
	int i = 5;//规定游戏次数
	printf("只有五次机会哦!!!\n");
	//1.输入随机数
	int r = rand()%100+1;/*数字在0-100之间*/
	//2.猜数字
	while (i)
	{
		printf("请猜猜这个数:>");
		scanf("%d", &sum);
		if (sum < r)
		{
			printf("猜小了\n");
		}
		else if (sum > r)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n");
			break;
		}
		i--;
	}
	if (i == 0)
	{
		printf("失败了,再努力吧\n");
		printf("正确的数字是%d\n", r);
	}
}

3.主函数的内容

int main()
{
	srand((unsigned int)time(NULL));//以时间生成种子
	int input = 0;
	do//用循环使一次游戏结束后还可以选择是否继续
	{
		begin();//第一个函数,打印游戏界面
		scanf("%d", &input);//选择是否开始游戏

		switch (input)
		{
		case 1:
			game();//第二个函数,游戏过程的进行
			break;
		case 2:
			printf("退出游戏\n");
			break;
		default:
			printf("请重新输入\n");
			break;
		}
	} while (input);

	return 0;
}

代码内容

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
//猜数字游戏
void begin()
{
	printf("****************\n");
	printf("**** 1.play ****\n");
	printf("**** 2.exit ****\n");
	printf("****************\n");
	printf("是否开始游戏:>");
}
void game()
{
	int sum = 0;
	int i = 5;//规定游戏次数
	printf("只有五次机会哦!!!\n");
	//1.输入随机数
	int r = rand()%100+1;/*数字在0-100之间*/
	/*2.猜数字*/
	while (i)
	{
		printf("请猜猜这个数:>");
		scanf("%d", &sum);
		if (sum < r)
		{
			printf("猜小了\n");
		}
		else if (sum > r)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n");
			break;
		}
		i--;
	}
	if (i == 0)
	{
		printf("失败了,再努力吧\n");
		printf("正确的数字是%d\n", r);
	}
}
int main()
{
	srand((unsigned int)time(NULL));//以时间生成种子
	int input = 0;
	do//用循环使一次游戏结束后还可以选择是否继续
	{
		begin();//第一个函数,打印游戏界面
		scanf("%d", &input);//选择是否开始游戏

		switch (input)
		{
		case 1:
			game();//第二个函数,游戏过程的进行
			break;
		case 2:
			printf("退出游戏\n");
			break;
		default:
			printf("请重新输入\n");
			break;
		}
	} while (input);


	return 0;
}

  • 16
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
以下是一个使用 Java 编写的数字游戏代码,共 150 行: ```java import java.util.Random; import java.util.Scanner; public class GuessNumber { public static void main(String[] args) { int range = 100; // 数字的范围 int maxTries = 10; // 最大测次数 int numberToGuess = new Random().nextInt(range) + 1; // 生成随机数 Scanner scanner = new Scanner(System.in); int tries = 0; int guess = 0; do { System.out.print("请输入一个在 1 到 " + range + " 之间的整数:"); try { guess = Integer.parseInt(scanner.nextLine()); } catch (NumberFormatException e) { System.out.println("输入有误,请输入一个整数。"); continue; } tries++; if (guess < numberToGuess) { System.out.println("你数字太小了。"); } else if (guess > numberToGuess) { System.out.println("你数字太大了。"); } else { System.out.println("恭喜你,对了!"); break; } } while (tries < maxTries); if (tries == maxTries) { System.out.println("很遗憾,你没有对,正确的数字是 " + numberToGuess + "。"); } } } ``` 代码解析: 1. 首先定义了三个变量:`range` 表示数字的范围,`maxTries` 表示最大测次数,`numberToGuess` 表示要的随机数。 2. 使用 `Scanner` 类从标准输入读取用户测的数字。 3. 使用 `do-while` 循环进行测,直到对或达到最大测次数。 4. 在循环中判断用户测的数字是否等于要的随机数,如果是,输出恭喜信息并结束程序;如果不是,输出提示信息并继续测。 5. 如果达到最大测次数仍未对,输出正确答案并结束程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值