C语言实现猜数字小游戏

目录:

一:对猜数字游戏的介绍及对程序的预期

二:程序设计思路:

1.总体思路

2.菜单部分函数

3.游戏部分函数

4.主函数部分

5.代码主体

三.总结


前言:本文主要讲解以c语言编写猜数字游戏,目的是介绍C语言中的循环和分支的具体用法。

<!--以下为正文部分-->


一:猜数字游戏基本介绍&对程序预期

.猜数字游戏,顾名思义,就是系统随机给出一个数字,玩家对这个数字进行猜测,如果玩家猜测的数字大于给出的数字,则系统会提示猜大了,如果玩家猜测的数字小于给出的数字,则系统会提示猜小了,这样逐步缩小猜测范围,直到玩家猜对为止。
2.程序预期:猜数字结束后,玩家如果猜对了的话可以继续游戏,也可以退出游戏

二:程序设计思路

1.总体思路:

首先,实现游戏功能必须要有一个菜单来提示玩家如何进行操作。其次,为了代码具有可读性,可以将游戏部分函数和菜单部分函数作为两个子函数,然后在主函数调用他们。然后我们为了实现玩家可以多次游戏可以使用循环。

综上所述,我们应该设计两个子函数:菜单函数和游戏函数。一个主函数

2.菜单部分函数:

菜单部分函数

void menu()
 {
printf("***********************************************\n");
printf("*************************1play*****************\n");
printf("*************************0exit*****************\n");
printf("***********************************************\n");
}

  

菜单函数设计相对简单,只是为了提示玩家如何操作

3.游戏部分函数

 1 void game()
 2 {
 3     srand((unsigned int)time(NULL));
 4     int ret = rand() % 100 + 1;
 5     while (1)
 6     {
 7         printf("猜数字\n");
 8         int guess = 0;
 9         scanf("%d", &guess);
10         if (guess > ret)
11         {
12             printf("猜大了\n");
13         }
14         else if (guess < ret)
15         {
16             printf("猜小了\n");
17         }
18         else
19         {
20             printf("猜对了\n");
21             break;
22         }
23 }
24 
25 
26 }

 

 

①在游戏函数部分,首先要生成随机数,生成随机数的方法如下:

C语言中提供了生成随机数的函数rand函数

C语言实现猜数字小游戏

 

 

rand函数会返回一个0到RAND-MAX的随机整数,使用这个函数需要包含头文件<stdlib.h>

但是rand函数每次生成的随机数相同,所以只用rand函数不够,所以要使用srand()函数增加随机性

 C语言实现猜数字小游戏

 

 

后一句中说明在使用rand函数前要定义一个srand()函数

C语言实现猜数字小游戏

 

 

 

如画线句所示,srand函数的作用就是一个随机数的生成的种子。

而且需要一个无符号整型,在srand函数中括号输入一个随机数字即可生成随机数,时间正是一个一直在变化的数字。

在这里提出一个时间戳的概念:时间戳是指格林威治时间1970年01月01日00时00分00秒 (北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

C语言实现猜数字小游戏

 

 

因为srand需要的参数是无符号类型,所以对time进行强制类型转换。time后不需要参数,所以给他一个空指针。

使用srand((unsigned int)time(NULL))

输入time返回一个时间戳

C语言实现猜数字小游戏

 

 

需要一个头文件<time.h>

因为给出的随机数范围太大,所以需要限定随机数范围

如下:int ret = rand()%100+1,将随机数限定在0-100区间,便于猜测

②:猜数字环节

利用while循环来逐步缩小猜测范围,当猜测的数字等于随机数时提示”猜对了“。

4.主函数部分

int main()
{
    int input = 0;


do
{
    menu();
    scanf("%d", &input);
    switch (input)
    {
    case 1:
        game();
        break;
    case 0:
        break;
    default:
        printf("输入错误,请重新输入");
    }
} while (input);
return 0;


}

 

 

主函数中使用了switch语句,和do-while语句

主要目的是为了玩家选择是否进入游戏

5.代码主体

 1 #include<stdio.h> 
 2 #include<time.h> 
 3 void menu() 
 4 {
 5 printf("***********************************************\n");
 6 printf("*************************1play*****************\n");
 7 printf("*************************0exit*****************\n");
 8 printf("***********************************************\n");
 9 } 
10 void game()
11  { srand((unsigned int)time(NULL)); 
12 int ret = rand() % 100 + 1;
13  while (1)
14  { printf("猜数字\n");
15  int guess = 0;
16  scanf("%d", &guess); 
17 if (guess > ret)
18 { 
19 printf("猜大了\n");
20  } 
21 else if 
22 (guess < ret) 
23 {
24  printf("猜小了\n"); 
25 }
26  else 
27 {
28  printf("猜对了\n"); break;
29  }
30 
31 }
32 } 
33 int main() 
34 {
35  int input = 0;
36 
37 do
38 {
39     menu();
40     scanf("%d", &input);
41     switch (input)
42     {
43     case 1:
44         game();
45         break;
46     case 0:
47         break;
48     default:
49         printf("输入错误,请重新输入");
50     }
51 } while (input);
52 return 0;
53 }

 

三:总结

此程序主要为了熟悉循环和分支的具体用法,并且学会利用时间戳和rand函数生成随机数。

希望大家多多关注,每周会持续输出文章

 

 

 
上一篇:Java版Sine之舞<经典递归>


下一篇:Go语法复习 2