本人纯属小白,如果有技术上的失误欢迎各位大佬来指导。
第一步,我们需要做一个菜单的界面,可以用*做边界然后用printf的方式输出,可以定义一个menu的函数,而菜单往往需要用到switch..case语句来实现选择功能,而我们制作的游戏往往至少要运行一次,所以do...while是一个不错的选择。
第二步,需要定义一个game的函数来实现游戏,最难的一点就是怎样去生成随机数这里我们可以用rand函数(单用rand函数生成的随机数每次都是有规律的)和srand生成器以及利用时间戳(time函数)来生成一个随时在变化的随机数,注意不要放在game函数里面,不然每猜一个数的时候rand都在变化,就猜不到数了。然后利用if语句来实现猜大猜小的比较。
第三步,优化游戏,可以用count来记录猜数次数,然后system(“cls”)来清除每一次的游戏界面达到美观效果(个人观点及创意,如果有更好的优化方式欢迎指导)
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
//制作游戏界面和菜单
void menu()
{
printf("***********************\n");
printf("* 1.game 0.exit *\n");
printf("***********************\n");
printf("Please select 1 or 0:\n");//
}
void game()
{
int a,ret=0,count;//a是接收输入的值,ret来接收生成的随机数,count来记录输入的次数
ret = rand()%100+1;//定义随机数的取值范围
while(1)
{
scanf("%d",&a);
if(a>ret)//大于时
{
printf("It's a bit big\n");
count++;
}
else if(a<ret)//小于时
{
printf("It's a little small\n");
count++;
}
else//等于时
{
printf("Congratulations, you guessed it\n");
count++;
printf("you only used %d times\n",count);
printf("The game will restart after another 5 seconds");//提示5秒后再次游戏美化游戏界面(可以不要)
Sleep(5000);//休息5秒(S大写)需要windows.h的头文件
system("cls");//执行系统命令的一个函数-cls-清空屏幕
break;
}
}
}
int main()
{
int input;//定义输入的值来选择菜单
srand((unsigned int)time(NULL));//利用时间戳来生成随机数需要调用stdlib.h和time.h
//至少运行一次用do...while结构循坏
do
{
menu();//调用菜单界面
scanf("%d",&input);
switch (input)//用switch结构来制作菜单的选择
{
case 0:
printf("Exit the game\n");
break;
case 1:
printf("Guess a number from 1 to 100:");//一个输入提示的互动
game();//直接进入游戏
break;
default:
printf("input error\n");
break;
}
} while (input);
return 0;
}
当自己设计并制作出来时,还是十分有成就感的,也可以提高自己对C语言学习的兴趣,另外还有不足之处欢迎评论给予指导!