c语言那些有趣的事 -- 猜数字游戏

简介: c语言那些有趣的事 -- 猜数字游戏

📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。

c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。

本章用循环去写一些题目。

让我们开启c语言学习之旅吧!



一.前言

       经过前面一系列的学习,我们对循环分支,有了一定的了解。我们能不能把之前学过的东西很好的串联起来呢?用之前学过的东西来写一个猜数字游戏,写完之后你会发现非常有成就感,让我们更加有动力有信息的学下去。

       首先写这个东西之前我们要对他进行一些分析,需要哪些功能呢?大致可以分为这几个模块,打印菜单,生成一个数字,根据用户输入的信息进行判断并且反馈给用户。

二.打印菜单

       在玩游戏之前,用户会看菜单进行选择。在这个游戏中可以给用户两种选择:1.玩游戏,2.退出游戏。通过分析,写出了这样一个代码。

这个逻辑是实现了,可是程序会有一些缺陷,只会进行一次判断,当玩了一把不过瘾怎么办?应该对程序进行一些优化,把这个过程循环起来。

       这个时候程序就可以进行多次选择判断了, 我认为在这种场景下用do while循环会比较合适,在任何情况下都会执行一次程序,当我们输入0的时候循环条件不成立,就终止循环退出游戏。

到了这一步这个程序的基本框架就已经写出来了,接下来就把程序的具体功能实现出来。

三.生成随机数

 生成一个随机数是这个程序的灵魂,也是最难的地方。  

       c语言有一个函数rand可以生成一个随机数,他的头文件是<stdlib.h>。rand函数要和srand配合使用,srand是一个初始化随机数生成器。如果想要正确的使用srand就要给srand传递一个变化的值,计算机上的时间是时刻发生变化的。

代码如下

int ret=rand();
srand((unsigned int)time(NULL));

注:time函数可以返回一个时间戳,time函数的头文件是<time.h>

这样随机生成一个数字的问题就解决了,但是为了让游戏更加好玩需要限制范围,生成一个100以内的数字,任何数%100的结果都会在100以内。

代码如下

int ret=rand()%100;

关于随机生成一个数字的知识就学这么多,以我们现在的知识储备也很难学好,后期再慢慢来。

四.猜数字

       当生成了一个随机数之后就要进入猜数字环境了,在这里需要封装一个game函数,game函数的主要功能是更具用户输入的值进行判断。

比如说:a>猜大了:提醒猜大了,继续猜。

             b>猜小了:提醒猜小了,继续猜。

             c>猜对了:恭喜你,猜对了,游戏结束。

代码如下:

注 :会进行重复的判断和输入,直到猜对执行break退出程序。

效果如下:

整个程序的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
  printf("********************************\n");
  printf("************1.paly**************\n");
  printf("************0.exit**************\n");
  printf("********************************\n");
}
void game()
{
  int ret = rand()%100;
  int guess = 0;
  while (1)
  {
    printf("请输入你要猜的数字");
    scanf("%d", &guess);
    if (guess > ret)
    {
      printf("猜大了\n");
    }
    else if (guess < ret)
    {
      printf("猜小了\n");
    }
    else
    {
      printf("恭喜你,猜对了\n");
      break;
    }
  }
}
int main()
{   
  int input = 0;
  srand((unsigned int)time(NULL));
  do
  {
    menu();
    printf("请输入>:");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      game();
      break;
    case 0:
      printf("退出游戏\n");
      break;
    default:
      printf("输入错误\n");
      break;
    }
  } while (input);
  return 0;
}

五.总结

       突然发现我们已经可以写出一个70行左右代码的程序了,这是一种成长。相信读者从文章中,可以感受到我们是需要什么写什么。有个术语专门描述这种思路,“TDD”测试驱动开发,根据需要,敲出代码进行测试,这个过程就是在驱动我们进行开发。

 

目录
相关文章
|
26天前
|
C语言
扫雷游戏(用C语言实现)
扫雷游戏(用C语言实现)
71 0
|
3月前
|
机器学习/深度学习 C语言
九/十:《初学C语言》— 扫雷游戏实现和函数递归基础
【8月更文挑战第5天】本篇文章用C语言采用多文件编写实现了一个基础的扫雷游戏(附源码),并讲解了关于函数递归的基础概念及其相对应的习题练习(附源码)
40 1
九/十:《初学C语言》— 扫雷游戏实现和函数递归基础
|
26天前
|
C语言 C++
【C语言】编写“猜数字“小游戏
【C语言】编写“猜数字“小游戏
|
27天前
|
编译器 C语言
猜数字游戏实现#C语言
猜数字游戏实现#C语言
72 1
|
28天前
|
存储 C语言
揭秘C语言:泊舟的猜数字游戏
揭秘C语言:泊舟的猜数字游戏
|
1月前
|
C语言 开发者
C语言实现猜数字小游戏(详细教程)
C语言实现猜数字小游戏(详细教程)
|
1月前
|
存储 算法 安全
C语言实现扫雷游戏
C语言实现扫雷游戏
|
1月前
|
算法 编译器 C语言
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
【C语言】实现猜数字游戏(分支语句与循环语句的运用)
|
27天前
|
C语言
初学者指南:使用C语言实现简易版扫雷游戏
初学者指南:使用C语言实现简易版扫雷游戏
30 0
|
29天前
|
C语言
C语言扫雷游戏(详解)
C语言扫雷游戏(详解)
35 0