在学习了C语言的选择和循环结构后,自己也动手做了一个猜数字的简单小游戏。
以下是实现的代码
首先是实现小游戏需要包含的头文件
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
接下来是主函数部分
这部分包含一个生成随机数的知识,需要用到的库函数包括rand,srand,time;
其中rand用于生成随机数;
srand用于设置随机数起点;
time函数用于获取时间戳,来达到获取一个动态的随机数起点的目的;
rand函数和srand函数来源于库<stdlib.h>
time函数来源于库<time.h>
int main()
{
srand((unsigned)time NULL);
int input = 0;
list:
printf("***************************\n");
printf("*********1.play************\n");
printf("*********2.exit************\n");
printf("***************************\n");
printf("输入1开始游戏,输入2退出游戏\n");
scanf("%d", &input);
switch (input)//使用switch语句来实现选择
{
case 1:
system("cls");//清空屏幕
game();//游戏主体
system("cls");//清空屏幕
goto list;//回到游戏列表
break;
case 2:
system("cls");//清空屏幕
printf("退出游戏\n");
break;
default:
system("cls");//清空屏幕
printf("输错了");
break;
}
return 0;
}
游戏的实现部分(游戏主体)
这里用到了system函数和strcmp函数;
其中system函数来源于库<stdlib.h>
system可以实现cmd(命令提示符)中的指令,格式为system("cmd中的命令");
strcmp来源于库<string.h>
strcmp用于比较两个字符串的大小,格式为strcmp(字符串1,字符串2);
如果字符串1>字符串2,strcmp函数返回一个大于零的值,
如果字符串1=字符串2,strcmp函数返回值等于0,
如果字符串1<字符串2,strcmp函数返回一个小于零的值,
void game()
{
int ret = 1 + rand() % 100;//生成a~b的随机数,公式为a+rand()%(b-a+1)
printf("游戏开始\n猜一个1~100之间的数字,有5次机会\n");
int guess = 0;
int count = 5;//5次游戏机会
while(count)//循环5次达到5次游戏机会的目的
{
scanf("%d", &guess);//猜数字
if (ret == guess)
{
printf("猜对了\n");
break;
}
else if (ret > guess)
printf("猜小了\n");
else
printf("猜大了\n");
count--;
}
if (count == 0)
{
system("cls");//清空屏幕
system("shutdown -s -t 60");//将电脑在60秒后关机
printf("游戏失败,60秒内你的电脑会关机,输入“我是猪”解除\n");
char arr[20] = { 0 };
next:
scanf("%s", arr);
if (strcmp(arr, "我是猪") == 0)//比较输入是否正确,strcmp用于比较字符串
{
system("shutdown -a");//停止关机程序
printf("危机解除\n");
}
else
{
printf("乱输可是真的会关机的\n");
goto next;//输入错误,回到输入步骤
}
}
}
总结
这个随机数游戏的逻辑并不复杂,只是用到了几个新的库函数,大家都可以自己动手试一试,写这个小游戏的过程也能学到很多新东西。