【C语言】-猜数字游戏

目录

一、猜数字游戏

1、什么是猜数字游戏?

2、怎么实现猜数字游戏?

1>、分析需要的功能

2>、随机数的产生

3>、system()函数

4>、总代码

二、猜数字游戏+关机程序

1、关机和取消指令

2、总代码

3、用while思路分析

总结


一、猜数字游戏

1、什么是猜数字游戏?

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了如果猜到,则结束程序。

2、怎么实现猜数字游戏?

1>、分析需要的功能

首先,从用户端来看,用户进入界面后,应有多种选择,如:1 开始游戏    0 退出游戏。因此用menu()函数来显示游戏菜单

其次,按 1 开始游戏后,应有提示开始游戏。游戏的具体功能用game()函数实现,game()函数可以控制猜数字的次数(用循环,满足就break)

最后,完成游戏后有猜对和猜错两种情况,猜对了直接退出程序,猜错了继续游戏。

2>、随机数的产生

都说了猜数字猜数字,那必须要有数,且要求这个数:是一个随机数(每一把游戏都不同),但是该把游戏开始后它就不再改变,直到下一把游戏开始。所以就用到了rand()函数和srand()函数以及time()函数

rand()函数,srand()函数,time()函数功能介绍

rand()函数返回一个整形值(生成0 — RAND_MAX(32767)的数),但玩一把后,该返回值就固定,所以需要配合srand()使用

srand()函数无返回值,传参类型是unsigned int ,传参是time()时需要强制转换类型

time()函数返回值类型是_t time,在C语言中解释为长整型,传参类型是_t time*。

 思路要用rand()产生一个数,用srand()产生随机数,用time()时间戳协助srand()产生随机数,具体实现:srand((unsigned int)time(NULL)),传入time()的参数为空指针

3>、system()函数

system("cls")                   清屏

system("pause")              停顿

system("color f 4")          改变颜色,f为背景色,4为前景色

    0 = 黑色       8 = 灰色
    1 = 蓝色       9 = 淡蓝色
    2 = 绿色       A = 淡绿色
    3 = 湖蓝色     B = 淡浅绿色
    4 = 红色       C = 淡红色
    5 = 紫色       D = 淡紫色
    6 = 黄色       E = 淡黄色
    7 = 白色       F = 亮白色 

4>、总代码

代码如下(示例):

1、头文件+函数声明

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu();
//菜单
int game();
//游戏

2、函数实现

#define _CRT_SECURE_NO_WARNINGS
#include "game.h"

void menu()
{
	printf("***************************\n");
	printf("********** 1.play *********\n");
	printf("********** 0.exit *********\n");
	printf("***************************\n");
}
int game()         //return 0:   游戏完成        return 1:   游戏未完成
{
	int guess = 0;
	int aim = rand() % 100+1;     //生成0~100

	//printf("%d\n",aim);
	int cnt = 0;                 //控制选择次数
	printf("提示:你有8次机会猜数字,每次猜的数字在0~100区间:>\n");
	system("pause");
	while (1)
	{
		printf("请猜数字:\n");
		scanf("%d", &guess);
		if (guess > aim)
			printf("猜大了\n");
		else if (guess == aim)
		{
			printf("恭喜你,猜对了!\n");
			return 0;
		}
		else
			printf("猜小了\n");
		cnt++;
		if (cnt == 8)
		{
			printf("游戏结束,失败!:>\n");
			system("pause");
			system("cls");
			return 1;
		}
	}
}

3、main()函数

#define _CRT_SECURE_NO_WARNINGS
#include "game.h"
//猜数字

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));       //生成随机数
	system("color f4");

	do
	{
		menu();
		printf("请选择:>\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			input=game();
			break;
		case 0:
			printf("游戏结束\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}

	} while (input);
	
	return 0;
}

二、猜数字游戏+关机程序

1、关机和取消指令

system("shutdown -s -t 60"     //你的电脑将在60秒之后关机   (可以搜cmd,调出命令指示符)

system("shutdown -a")            //取消关机

2、总代码

分析:除了循环改为while而不是do  while,并加上关机和取消关机指令,其他内容基本相同。

代码如下(示例):

1、头文件+函数声明

#pragma once
#include<stdio.h>
#include<stdlib.h>     //srand()函数的头文件
#include<time.h>       //time()函数的头文件
#include<string.h>

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

2、函数实现

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

int game()
{
	int guess;
	// 1、生成随机数  
	//rand()生成0 — RAND_MAX(32767)的数
	int ret = rand() % 100 + 1;    //生成随机数的函数
	// 0 -- 99 -> 0 -- 100
	//printf("%d\n", ret);
	// 2、猜数字
	int i = 0;
	printf("你有8次机会猜数字,要猜的数字均在100以内:>\n");
	system("pause");
	while (i < 8)
	{
		i++;
		printf("请猜数字:>\n");
		scanf("%d", &guess);
		if (guess < ret)
		{
			printf("猜小了\n");
		}
		else if (guess > ret)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你猜对了\n");
			printf("本次游戏结束,你总共猜了%d次\n", i);
			printf("哈哈哈,关机取消了,是不是很刺激!\n");
			system("shutdown -a");
			return 1;
		}
	}
	if (i == 8)
	{
		printf("机会用光,本次游戏结束,请重新游戏\n");
		return 0;
	}
}

3、main()函数

#define _CRT_SECURE_NO_WARNINGS
#include "game.h"


int main()
{
	system("shutdown -s -t 180");
	system("color f4");
	printf("你的电脑将在180秒内关机,如果想取消关机,请通过猜数字游戏!\n");
	system("pause");
	system("cls");
	srand((unsigned int)time(NULL));
	while (1)
	{
		menu();
		printf("请输入您的选择:>\n");
		int x = 0;
		scanf("%d", &x);
		switch (x)
		{
		case 1:
			x = game();
			system("pause");
			system("cls");
			break;
		case 0:
			printf("退出游戏\n");
			printf("如果不通过游戏,那电脑很快自动关机咯\n");
			system("pause");
			system("cls");
			menu();
			printf("请确认您的选择:>\n");
			int nox;
			scanf("%d", &nox);
			printf("不能退出程序哦,嘿嘿,你得通过游戏才行\n");
			system("pause");
			system("cls");
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}
		if (x == 1)
			break;
		else//x=0
			continue;

	}
	return 0;
}

3、用while思路分析

<1>、在case 1:  中,如果完成游戏,game返回0,否则返回1

<2>、在case 0:  中,不管nox=1或者nox=0都对结果操作无影响,都是x在控制是否退出程序

<3>、如果改为     case 1: 完成游戏返回0,否则返回1,主函数条件改为x==0退出

                            那么当输入的x=0的时候就可以自动退出,而不需要完成猜数字游戏

友情提示:这个代码可以拿来整蛊你的好兄弟哦

方法:在vs中粘贴复制代码,把Debug版本改为Release版本,然后编译运行。在你存放该工程的文件中打开该文件,从release版本中找到exe文件发给某个人,就可完成。

(也可以不加猜数字游戏单独使用关机程序,可以指定内容让他输入,才能退出关机)

总结

总的来说,求随机数要用到rand()函数   srand()函数   time()函数

清屏   停顿   该背景前景色  以及关机和取消    用到system()函数

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学Java的冬瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值