猜数字小游戏---C语言

这篇具有很好参考价值的文章主要介绍了猜数字小游戏---C语言。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言: 

猜数字游戏:

1.打印选项

2.玩家输入选项

3.根据玩家输入的值进行选择

4.重复游戏的实现

5.游戏game函数的实现

6.优化


❤博主CSDN:啊苏要学习

  ▶专栏分类:C语言◀

  C语言的学习,是为我们今后学习其它语言打好基础,C生万物!

  开始我们的C语言之旅吧!✈


前言: 

  学习完循环和分支语句后,我们可以用所学的知识,完成一个猜数字的小游戏,练练手。

猜数字游戏:

1.打印选项

  在屏幕上需要打印信息,让玩家知道,这是什么游戏,该怎么玩,以及玩家需要做什么。我们这里的做法是分装一个菜单函数。

#include <stdio.h>

void menu()
{
    printf("这是一个猜数字游戏\n");
    printf("请做出以下选择:> 1.play  0.exit\n");
    printf("请选择:>");
}

int main()
{
    menu();
    return 0;
}

2.玩家输入选项

  我们需要让玩家输入一个数,这个数是个整数,所以我们就知道要创建一个整型变量配合使用scanf这个输入函数

#include <stdio.h>

void menu()
{
    printf("这是一个猜数字游戏\n");
    printf("请做出以下选择:> 1.play  0.exit\n");
    printf("请选择:>");
}

int main()
{
    int input = 0;//C语言创建变量要在代码块最前面定义
    menu();
    scanf("%d", &input);//打印菜单后,输入数字
    return 0;
}

3.根据玩家输入的值进行选择

  玩家可能输入0、1或其它非法值。怎么处理这种多分支并且可以处理有非法值的情况呢?脑子里一想,这时我们想到switch就能很好的满足我们的需求

#include <stdio.h>

void menu()
{
    printf("这是一个猜数字游戏\n");
    printf("请做出以下选择:> 1.play  0.exit\n");
    printf("请选择:>");
}

int main()
{
    int input = 0;
    menu();
    scanf("%d", &input);
    switch(input)//根据输入值选择入口
    {
    //玩游戏
    case 1:
        game();
        break;
    //退出游戏
    case 0:
        printf("退出游戏\n");
        break;
    //重新输入
    default:
        printf("输入错误,请重新输入\n");
        break;//最后加上break是个好习惯
    }
    return 0;
}

  case 1的情况就是玩游戏,我们使用game()函数来实现玩游戏的过程

4.重复游戏的实现

  对了,大家在玩游戏的时候,比如玩扫雷呀,三子棋小游戏的时候。玩得不过瘾可以再来一局,不过瘾再来一局,一直玩,直到不想玩了就退出。 这个逻辑怎么实现呢?首先,不过瘾再来一局,直到过瘾,听起来像什么,循环对吧。第二,过瘾了退出游戏,是不是相当于要跳出这个循环,也就是说要使判断条件为假。考虑到这两个点,有下面这种巧妙的做法:

#include <stdio.h>

void menu()
{
    printf("这是一个猜数字游戏\n");
    printf("请做出以下选择:> 1.play  0.exit\n");
    printf("请选择:>");
}

int main()
{
    int input = 0;
    //使用do while循环
    do
    {
        menu();
        scanf("%d", &input);
        switch(input)
        {
        case 1:
            game();
            break;
        case 0:
            printf("退出游戏\n");
            break;
        default:
            printf("输入错误,请重新输入\n");
            break;
        }
    }while(input)//使用input控制循环
    return 0;
}

  do while循环的特点是先执行一次。先打印菜单,根据玩家输入的值进入相应的分支,最后判断还要不要再循环使用input当do while判断条件的效果就是,当我们输入1或非法值后,判断条件仍为真,再次打印菜单让你选择。而当我们输入0选择退出游戏的时候,判断表达式刚好为假,退出。这个逻辑可以get到吧。 

5.游戏game函数的实现

  接下来就是实现game函数了,要做一个猜数字游戏。要有数字给我们猜吧,这个数字得具有随机的特性才好玩猜的时候要跟有相应玩家互动,比如猜的数比随机数大,要有提示,猜小也一样,一直猜下去,直到猜对才停下来猜对了游戏结束,选择再玩一把还是退出游戏

void game()
{
    //1.生成随机数
    int rom = rand();
    //2.一直猜数字,直到猜对,游戏结束
    int guess = 0;
    while(1)
    {
        printf("请猜数字:>");
        scanf("%d", &guess);
        if(guess > rom)
        {
             printf("猜大了\n");
        }
        else if(guess < rom)
        {
             printf("猜小了\n");
        }
        else
        {
             printf("恭喜,猜对了,随机数是%d\n", rom);
             break;//猜对了,跳出循环以结束游戏
        }
    }
    return 0;
}

  生成随机数是使用rand()函数,用一个变量存放起来创建另一个变量用来存放我们输入的值来和随机值进行比较

6.优化

  这时候的你觉得应该实现完这个小游戏了,实际上这里面还有些问题在,我们需要进行优化。rand()生成随机数,如果不搭配srand()函数是不行的;rand()生成的随机数范围太大了,从0-32767,将范围缩小点才有乐趣,不然猜到头皮发麻。

  • srand是一个随机数起点的生成器,在需要使用随机数的时候,调用一次srand函数。
int main()
{
    int input = 0;
    //srand()的参数要一个时刻会变的数
    //时间是一直在变的,我们使用time函数获取系统时间
    //time的参数要一个指针。我们传过去一个空指针NULL
    //time返回值是time_t,是long(长整型)的一个重命名。
    //我们强制转换成无符号int类型,因为srand要的是无符号整型当参数
    srand((unsigned int)time(NULL));
    //使用do while循环
    do
    {
        menu();
        scanf("%d", &input);
        switch(input)
        {
        case 1:
            game();
            break;
        case 0:
            printf("退出游戏\n");
            break;
        default:
            printf("输入错误,请重新输入\n");
            break;
        }
    }while(input)//使用input控制循环
    return 0;
}
  • rand()%100+1; 对rand()生成的随机数取模上100,得到的结果是在0-99(余数)之间,加上1,值的范围就在1-100之间,可玩性就高了。 
void game()
{
    int rom = rand()%100+1;
    int guess = 0;
    while(1)
    {
        printf("请猜数字:>");
        scanf("%d", &guess);
        if(guess > rom)
        {
             printf("猜大了\n");
        }
        else if(guess < rom)
        {
             printf("猜小了\n");
        }
        else
        {
             printf("恭喜,猜对了,随机数是%d\n", rom);
             break;//猜对了结束游戏
        }
    }
    return 0;
}

  补充:rand()和srand()函数的头文件是<stdlib.h>,time()函数的头文件是<time.h>函数。 

  这些优化的点一改,就可以玩啦~

  总结:相信读者可以从这篇文章中,可以感受到我们是在根据需求,需要什么就写什么。有个术语专门描述这种思路,TDD(test driven development)测试驱动开发,根据需要,敲出代码进行测试,这个过程就是在驱动我们进行开发

  希望读者从这篇博文中获取到的知识是:一个重复打印菜单选择玩游戏的的模块rand()和srand()搭配time()生成随机数以及巩固一下循环、选择语句。最后就是提升敲代码的能力


结语:希望读者读完有所收获!在学C的路上,祝福我们能越来越C!✔

  读者对本文不理解的地方,或是发现文章在内容上有误等,请在下方评论区留言告诉博主哟~,也可以对博主提出一些文章改进的建议,感激不尽!最后的最后!

  ❤求点赞,求关注,你的点赞是我更新的动力,一起努力进步吧。文章来源地址https://www.toymoban.com/news/detail-424151.html

到了这里,关于猜数字小游戏---C语言的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java编程指南】猜数字小游戏

    目录 一、前言 二、Random类 1.导包 2.创建对象 3.生成随机数 4.更改范围 5.演示 三、猜数字 1.需求 2.生成随机数范围 3.不限次数 4.规定次数 学习概述 :Java编程指南第6天、第7天我们学习了分支、循环结构,今天我们利用前面学过的知识点,加上一个 Random 类,动手完成一个 猜

    2023年04月08日
    浏览(45)
  • Python 猜数字1-100小游戏

    运行结果: 如需其他代码案例请参考: Python 猜数字1-100的小游戏_python1~100猜数字游戏代码_周华2022的博客-CSDN博客 作者:周华 创作日期:2023/9/24

    2024年01月23日
    浏览(49)
  • Python编写简易猜数字小游戏

    下面是Python编写的简易猜数字小游戏: 运行该程序,即可开始游戏。程序会生成一个1~100之间的随机数字,然后逐渐提示你输入你的猜测。如果你猜错了,程序会提示你猜小了或猜大了,直到你猜中为止。游戏结束后,程序会告诉你你猜了多少次才猜中了。

    2024年03月28日
    浏览(49)
  • Python编写简易猜数字小游戏(附完整代码)

    Python编写简易猜数字小游戏(附完整代码) 猜数字游戏是一款非常经典的小游戏,本文将介绍如何使用Python编写一个简易的猜数字游戏,并提供完整的源代码。 首先,让我们了解一下游戏规则。游戏开始时,程序会随机生成一个1到100之间的数字,玩家需要通过输入数字来猜

    2024年02月08日
    浏览(74)
  • 微信小程序之猜数字和猜拳小游戏

    目录 效果图 app.json 一、首页(index3)的代码 wxml代码 wxss代码 二、猜数字页面(index)代码 wxml代码 wxss代码 js代码 三.游戏规则页面(logs)代码 wxml代码 wxss代码 四.猜拳页面(q1)代码 wxml代码 wxss代码 js代码

    2024年04月16日
    浏览(59)
  • [C语言][小游戏][猜拳游戏]

    前言: 给大家演示一个简单小游戏,真的非常详细。 模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include \\\"XXX.h\\\"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移

    2024年02月15日
    浏览(49)
  • [C语言][小游戏][猜数游戏]

    带着梦想,带着好奇,带着执着,在C语言的世界里旅行。亲爱的朋友们,一起加油。 显示玩家从键盘输入的值和计算机事先准备的“目标数字”进行比较 1)本游戏的“目标数字”是7,用变量ans表示,从键盘输入的值则用变量no表示。 2)程序通过if来判断no和ans两个变量值的大

    2024年02月13日
    浏览(45)
  • 小游戏:人生中写的第一个小游戏——贪吃蛇(C语言)

            小编开了一个关于游戏的专栏,主要是运用easyx图形库进行的。        第一章:人生中写的第一个小游戏——贪吃蛇(C语言)         这个游戏的代码我在gitee上发布了,大家如果不嫌弃,可以进入这个网址进行查看和复制:https://gitee.com/rising-sun-1。      

    2024年02月09日
    浏览(60)
  • C语言扫雷小游戏

    扫雷的玩法:在一个9×9(初级)、16×16(中级)、16×30(高级)或自定义大小的方块矩阵中随机布置一定量的地雷(初级为10个,中级为40个,高级为99个),再由玩家逐个翻开方块,翻开的地方将显示周围八个雷的个数。以找出所有地雷为最终游戏目标。如果玩家翻开的方块

    2024年02月05日
    浏览(61)
  • 扫雷小游戏【C语言】

    目录 前言 一、基本实现逻辑 二、实现步骤 1. 我们希望在进入游戏时有一个菜单让我们选择 2. 我们希望可以重复的玩(一把玩完了还可以接着玩) 3. 采用多文件形式编程  4.要扫雷先得有棋盘(创建棋盘R*N) 5.初始化棋盘  6.打印棋盘 7.设置雷 8.排查雷 三、全部源码: 上期

    2024年02月11日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包