概述
学了一些基础的C语言语法后我们就可以开始试着写一些小程序或者小游戏了,今天我就给大家用C语言写一个简单的猜数字小游戏。
源代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("**************************************n");
printf("************ 1.开始游戏 ************n");
printf("************ 0.退出游戏 ************n");
printf("**************************************n");
}
void play()
{
int n = rand() % 101;
while (1)
{
int i = 0;
printf("请猜一个0-100的数字n");
scanf("%d", &i);
if (i > n)
{
printf("猜大了,重新猜");
}
else if (i < n)
{
printf("猜小了,重新猜n");
}
else
{
printf("******恭喜你猜对了******n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
menu();
scanf("%d", &input);
system("cls");
switch (input)
{
case 1:
play();
break;
case 0:
printf("退出游戏n");
break;
default:
printf("选择错误,重新输入n");
break;
}
} while (input);
return 0;
}
魔改版:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("**************************************n");
printf("************ 1.开始游戏 ************n");
printf("************ 0.退出游戏 ************n");
printf("**************************************n");
}
void play()
{
int n = rand() % 101;
while (1)
{
int i = 0;
printf("请猜一个0-100的数字n");
scanf("%d", &i);
if (i > n)
{
printf("猜大了,惩罚4秒钟n");
Sleep(4000); //每次猜错惩罚时间
}
else if (i < n)
{
printf("猜小了,惩罚3秒钟n");
Sleep(3000);//每次猜错惩罚时间
}
else
{
printf("******恭喜你猜对了******n");
printf(" 解除关机n");
system("shutdown -a"); //取消关机
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
good: //防止玩家退出游戏,goto解决
system("shutdown -s -t 60"); //关机时间设置60秒
printf("游戏开始,计算机还有60秒关机n");
int input = 0;
do
{
menu();
scanf("%d", &input);
system("cls"); //清空屏幕
switch (input)
{
case 1:
play();
break;
case 0:
printf("退出游戏不可能,今天你必须玩n");
goto good;
break;
default:
printf("选择错误,重新输入n");
break;
}
} while (input);
return 0;
}
写代码之前我们一定要养成先构思逻辑再写代码的习惯,我们把游戏逻辑可以列成下面几个步骤:
1.创建一个简单的游戏菜单;
2.创建一个分支结构,玩家的选择决定程序的执行;
3.实现游戏过程,创建一个随机数(0-100);
4.玩家输入一个数(0-100),判断玩家输入的数字大于还是小于随机数,大于则提示猜大了,小于则提示猜小了,然后重新让玩家猜一个数字,如果等于则恭喜玩家猜对了,游戏结束;
1.创建菜单:
我们可以用printf函数就能实现一个简易的游戏菜单,我们创建一个menu函数实现它
void menu()
{
printf("**************************************n");
printf("************ 1.开始游戏 ************n");
printf("************ 0.退出游戏 ************n");
printf("**************************************n");
}
2.让玩家选择游戏选项,我们使用switch语句实现:
switch (input)
{
case 1:
menu();
break;
case 0:
printf("退出游戏n");
break;
default:
printf("选择错误,重新输入n");
break;
}
但是这样每次我们只能玩一次游戏就要重新执行程序,所以我们优化一下代码,给它写上一个do while循环语句:
int input = 0;
do
{
menu();
scanf("%d", &input);
system("cls");
switch (input)
{
case 1:
menu();
break;
case 0:
printf("退出游戏n");
break;
default:
printf("选择错误,重新输入n");
break;
}
} while (input);
3.游戏最主要的问题,如何实现一个随机数:
C语言中有一个函数叫rand,它能随机生成一个0到RAND_MAX之间的数字,RAND_MAX 的值是32767
使用rand需要用srand设置随机数种子,不然它的值是固定不变的
srand()用来设置rand()产生随机数时的随机数种子。参数seed是整数,通常可以利用time(0)或getpid(0)的返回值作为seed。
我们只需要在主函数中设置一次种子即可
int main()
{
srand((unsigned int)time(NULL));
}
我们需要的随机数是0-100,但是rand范围在0-32767,所以我们直接利用%取模即可
int n = rand()%101;//n的值取模后就在0-100之间
4.实现游戏过程,判断玩家输入值:
我们创建一个play函数来实现游戏的过程
void play()
{
int n = rand() % 101; //创建随机值n
while (1)
{
int i = 0;
printf("请猜一个0-100的数字n");
scanf("%d", &i);
if (i > n)
{
printf("猜大了,重新猜");
}
else if (i < n)
{
printf("猜小了,重新猜n");
}
else
{
printf("******恭喜你猜对了******n");
break;
}
}}
最后
以上就是欣喜路灯为你收集整理的C语言猜数字小游戏---详解+源码的全部内容,希望文章能够帮你解决C语言猜数字小游戏---详解+源码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复