首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C语言BOSS篇】用C语言搞定数字炸弹小游戏

【C语言BOSS篇】用C语言搞定数字炸弹小游戏

作者头像
f狐o狸x
发布2024-11-19 17:25:45
发布2024-11-19 17:25:45
66400
代码可运行
举报
运行总次数:0
代码可运行

在上一期中我们在学二分法的时候简单的提到了“数字炸弹”小游戏,那现在应该可以用目前学到的C语言知识来实现这个小游戏了。

一,大体框架

首先我们先构思一个程序的大体框架:

用户选择“1”之后开始玩游戏,选择“2”则退出程序

当用户选“1”之后,开始进行游戏,游戏结束之后又返回菜单(目录界面)再次选择“0”或“1”,结束游戏或者继续游戏。

那程序的大体框架已经出来了,我们就先用分支语句和循环语句把菜单搞定

1.2 目录代码

代码语言:javascript
代码运行次数:0
运行
复制
#define  _CRT_SECURE_NO_WARNINGS 1;
#include<stdio.h>
void menu()//菜单函数
{
	printf("**************************\n");
	printf("*****     1.play     *****\n");
	printf("*****     0.exit     *****\n");
	printf("**************************\n");

}

void game()//游戏函数
{

}

int main()
{
	int a=0;
	//菜单目录
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &a);
		switch (a)
		{
		case 1:game();
			break;
		case 0:
			printf("see you!\n");
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}

	} while (a);
		

	return 0;
}

次程序中我选择的是先用do while 循环来保证玩家可以重复多次的进行游戏,在这个循环里面,再用switch分支语句来给玩家选择操作

do { 循环语句 } while(表达式):

switch(整型表达式) { case 1: break; case2: break; …… default: break; }

二、游戏内容

现在我们来搞定游戏部分,该游戏的大体规则为:

1.程序随机生成一个数字(1~100)

2.玩家猜一个数字,输入进去

3.程序根据玩家输入的数字判断玩家猜的数字与随机生成的数字大小并给出玩家提示(猜大了或者猜小了)

4.玩家根据程序提示,继续猜数字,直到猜中这个数字为止,游戏结束

我们一步一步来:

2.1 生成随机数

1.程序随机生成一个数字(1~100)

调用库函数rand()可以使程序随机生成一个数字

这样就搞定了随机生成的数字了…………吗?

当然没有!因为当你多调试几次以后你会发现:这个生成随机数每次打开的都是一样的!!!

试想一下:当你猜了第一次数字为41,然后第二天,第三天每次打开程序后玩的游第一次要猜的数字都是41,那还猜个毛毛虫,所以我们需要的不仅仅是程序随机生成一个数字,而是每次生成的数字都是随机的,这样才能有更好的游戏体验,才能每次都是才到的数字

那要如何才能每次都生成一个随机的数次捏?

我们就需要用另外一个函数srand()

srand();

在括号中输入的数字不同,这个函数就可以生成不同的随机数字,那这里就有些朋友很疑惑了,我们要随便输入一个数字来生成一个随机数????几个意思??

这里我们引入一个时间戳的概念

time(NULL);

他的意思是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数

那这里不就搞定啦,每次玩游戏的时间对应的时间戳绝对不一样(我就不信你一秒内就能玩完这个游戏并且重开一把再让程序再给你生成个随机数)

不过以防万一真有这样的超快手速+超好运气选手,并且使得这个数字生成的足够随机,我们只需要调用srand()函数一次就OK了

srand((unsigned)time(NULL));

这样生成的随机数一定足够随机

对了,这里生成的数字肯定会有大于100的数字,要让他们全是1~100的数字我们需要对他除以100再求余数,这样任何一个数字除以100的余数都是0~99,我们只需要在对这个数字+1,就可以得到1~100这个数字(那如果要的数字是0~100呢?各位可以想一想)

2.2猜数字

随机数已经搞定啦,那这里我们只需要类似于之前二分法那样用一个循环嵌套直到猜到答案为止

代码语言:javascript
代码运行次数:0
运行
复制
while (1)//猜数字
	{
		scanf("%d", &input);
		if (input > num)
			printf("猜大啦,继续猜\n");
		else if (input < num)
			printf("猜小啦,继续猜\n");
		else
		{
			printf("恭喜你,猜对啦!\n");
			break;
		}
	}

三、游戏代码

最后我们把前面的代码全部整合一下,就可以得到猜数字游戏,快去给你的舍友试试吧~

代码语言:javascript
代码运行次数:0
运行
复制
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()//菜单函数
{
	printf("**************************\n");
	printf("*****     1.play     *****\n");
	printf("*****     0.exit     *****\n");
	printf("**************************\n");

}

void game()//游戏函数
{
	int num = rand()%100+1;//随机生成一个数字
	int input = 0;
	printf("请猜一个数字:"); 
	while (1)//猜数字
	{
		scanf("%d", &input);
		if (input > num)
			printf("猜大啦,继续猜\n");
		else if (input < num)
			printf("猜小啦,继续猜\n");
		else
		{
			printf("恭喜你,猜对啦!\n");
			break;
		}
	}
}

int main()
{
	srand((unsigned)time(NULL));
	int a=0;
	//菜单目录
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &a);
		switch (a)
		{
		case 1:game();
			break;
		case 0:
			printf("see you!\n");
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}
	} while (a);
	return 0;
}

四、整蛊舍友小游戏

感谢各位支持读到这里!

下面给大家分享一个有趣的代码小游戏

代码语言:javascript
代码运行次数:0
运行
复制
int main()
{
    char input[10] = { 0 };
    system("shutdown -s -t 60");
    while (1)
    {
        printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
        scanf("%s", input);
        if (0 == strcmp(input, "我是猪"))
        {
            printf("乖,这就取消关机\n");
            system("shutdown -a");
            break;
        }
        else
        {
            printf("哟哟哟,老实点!时间不多了哟!\n");
        }
    }
    return 0;
}

这里输入的内容各位可以即兴发挥,也可以是狐狸最帅啥的……

感谢阅读 ,动动小手,点个小赞~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,大体框架
    • 1.2 目录代码
  • 二、游戏内容
    • 2.1 生成随机数
    • 2.2猜数字
  • 三、游戏代码
  • 四、整蛊舍友小游戏
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档