[C语言][小游戏][猜数游戏]

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

目录:

带着梦想,带着好奇,带着执着,在C语言的世界里旅行。亲爱的朋友们,一起加油。

一、猜数判定

显示玩家从键盘输入的值和计算机事先准备的“目标数字”进行比较

#include <stdio.h>
int main()
{
    int no;//读取的数字
    int ans = 7;//目标数字
    printf("请输入0~9的数字:\n\n");
    printf("你猜是多少呢?:\n");
    scanf("%d", &no);
    if (no > ans)
        printf("\a再小一点。\n");
    else if (no < ans)
        printf("\a再大一点。\n");
    else
        printf("猜对了。");

    return  0;
}

1)本游戏的“目标数字”是7,用变量ans表示,从键盘输入的值则用变量no表示。
2)程序通过if来判断no和ans两个变量值的大小,根据判断结果显示“再小一点。”“再大一点。”“猜对了。”。
3)输出的字符串包含两个转义字符。一个是我们熟悉的\n,表示换行,另一个\a,表示警报。

二、重复到猜对为止

如果“猜数字游戏”只允许玩家输入一次数值,那就显得无趣。我们把程序改良一下,玩家可以一直重复输入,直到猜对了为止。

#include <stdio.h>
int main()
{
    int no;//读取的数字
    int ans = 7;//目标数字
    printf("请输入0~9的数字:\n\n");
    do
    {
        printf("你猜是多少呢?:\n");
    scanf("%d", &no);
    if (no > ans)
        printf("\a在小一点。\n");
    else if (no < ans)
        printf("\a再大一点。\n");
} while (ans!=no);//重复到猜对为止
printf("猜对了。\n");
    return  0;
}

1)do语句while(表达式);是通过先循环后判断重复进行处理的语句。
2)do和while围起来的语句叫做循环体。只要控制表达式的结果不为零,那么循环体就会一直重复执行下去。
3)我们把控制表达式设为no!=ans,当程序读取到的no和“目标数字”ans一样的值时,控制表达式的求值结果为0,循环就结束了,画面显示“猜对了。”,程序结束。

三、随机设定目标数字

前面的游戏,“目标数字”都是自己设置好的,为了提升这个游戏的趣味性,我们让这个值变化起来。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    //srand((unsigned)time(NULL));
    int no;//读取的数字
    int ans = rand()%1000+1;//目标数字
    printf("请输入1~1000的数字:\n\n");
    do
    {
        printf("你猜是多少呢?:\n");
    scanf("%d", &no);
    if (no > ans)
        printf("\a在小一点。\n");
    else if (no < ans)
        printf("\a再大一点。\n");
} while (ans!=no);//重复到猜对为止
printf("猜对了。\n");
    return  0;
}

1)rand函数(生成随机数):头文件为<stdlib.h>.rand函数生成的值是伪随机数,总会生成一个相同的随机数序列。
rand函数是对一个叫做“种子”的基准值加以运算得到随机数的。每次运行程序都会生成一个随机序列,rand函数默认种子为常量1。要生成不同的随机数,就要改变这个种子。负责执行这项任务的是srand函数。
[C语言][小游戏][猜数游戏],C语言,c语言,游戏,算法
[C语言][小游戏][猜数游戏],C语言,c语言,游戏,算法
2)srand函数(设置生成随机数的种子):srand函数是用来设置种子的,一但决定了种子,那么生成的随机数序列也就确定了。如果我们想每次运行程序的时候都能生成不同的随机数,那么就必须将种子的值从常数变成随机数
3)我们一般使用的方法是把运行程序的时间当做种子
srand((unsigned)time(NULL))。rand函数的范围是0~32767,所以rand函数要求使用unsigned类型。
time函数用到的头文件是<time.h>。
4)一般情况下,我们需要的是某个特定范围内的随机数
“目标数字”设定为1~1000如:
rand()%1000+1;

四、限制输入次数

只要不断输入数值,终会猜对,为了增加难度,也为了给玩家紧张感,我们把玩家最多输入的次数限制一下。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
     srand((unsigned)time(NULL));
    int no;//读取的数字
    int ans = rand() % 1000 + 1;//目标数字
    int max_s ;//最多输入的次数
    printf("最多输入几次:\n");
    scanf("%d", &max_s);
    int s = max_s;//还可以输入的次数
    printf("请输入1~1000的数字:\n\n");
    do
    {
        printf("还剩%d次机会,你猜是多少呢?\n", s);
        s--;
        scanf("%d", &no);
        if (no > ans)
            printf("\a在小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (ans != no && s > 0);
    if (ans == no)
    {
        printf("猜对了。\n");
        printf("你用了%d次猜中\n", max_s - s);
    }
    else
        printf("\a很遗憾,你猜错了\n");
    return  0;
}

[C语言][小游戏][猜数游戏],C语言,c语言,游戏,算法
1)max_s变量表示玩家最多可输入的次数,自己设置。
2)s表示还能输出的次数,,其初始值是max_s变量的值,每次玩家输入数值时,s就进行自减运算。
3)当s为0,或者在有限的次数内猜对了,就会跳出循环。
4)max_s 减去s就可以知道玩家是在第几次猜中了目标数字。

五、保存输入的记录

如果程序能够保持玩家输入的值,玩家就能在游戏结束时,确认自己猜的数字距离目标数字有多远

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
     srand((unsigned)time(NULL));
    int no;//输入的数字
    int ans = rand() % 1000 + 1;//目标数字
    int max_s ;//最多输入的次数
    int arr[1000];//存放输入的值
    int i = 0,j=0;
    printf("最多输入几次:\n");
    scanf("%d", &max_s);
    int s = max_s;//还可以输入的次数
    printf("请输入1~1000的数字:\n\n");
    do
    {
        printf("还剩%d次机会,你猜是多少呢?\n", s);
        s--;
        scanf("%d", &no);
        arr[i++] = no;
        if (no > ans)
            printf("\a在小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (ans != no && s > 0);
    if (ans == no)
    {
        printf("猜对了。\n");
        printf("你用了%d次猜中\n", max_s - s);
    }
    else
        printf("\a很遗憾,你猜错了\n");
    puts("\n---输入记录---");
    for(j=0;j<i;j++)
    printf("%2d:%4d %+4d\n", j + 1, arr[j], arr[j] - ans);
    return  0;
}

1)创建一个个数组arr[1000],用来存放输入的值;i+1表示第几次输入;arr[i]表示玩家输入的值;arr[i]-ans表示玩家输入的值与正确答案之差。
2)“%+d”表示数值即使是正值和0也会带符号。

六、测试小游戏

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
     srand((unsigned)time(NULL));
    int no;//输入的数字
    int ans = rand() % 1000 + 1;//目标数字
    int max_s ;//最多输入的次数
    int arr[1000];//存放输入的值
    int i = 0,j=0;
    printf("最多输入几次:\n");
    scanf("%d", &max_s);
    int s = max_s;//还可以输入的次数
    printf("请输入1~1000的数字:\n\n");
    do
    {
        printf("还剩%d次机会,你猜是多少呢?\n", s);
        s--;
        scanf("%d", &no);
        arr[i++] = no;
        if (no > ans)
            printf("\a在小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (ans != no && s > 0);
    if (ans == no)
    {
        printf("猜对了。\n");
        printf("你用了%d次猜中\n", max_s - s);
    }
    else
        printf("\a很遗憾,你猜错了\n");
    puts("\n---输入记录---");
    for(j=0;j<i;j++)
    printf("%2d:%4d %+4d\n", j + 1, arr[j], arr[j] - ans);
    return  0;
}

测试:
[C语言][小游戏][猜数游戏],C语言,c语言,游戏,算法
感觉游戏看着不太美观,我们再扩展一下:
1)加个界面:

void menu()
{
    printf("********************\n");
    printf("*****1.进入游戏*****\n");
    printf("*****0.退出游戏*****\n");
    printf("********************\n");
}

代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
    printf("********************\n");
    printf("*****1.进入游戏*****\n");
    printf("*****0.退出游戏*****\n");
    printf("********************\n");
}
void game()
{
    int no;//输入的数字
    int ans = rand() % 1000 + 1;//目标数字
    int max_s;//最多输入的次数
    int arr[1000];//存放输入的值
    int i = 0, j = 0;
    printf("最多输入几次:\n");
    scanf("%d", &max_s);
    int s = max_s;//还可以输入的次数
    printf("请输入1~1000的数字:\n\n");
    do
    {
        printf("还剩%d次机会,你猜是多少呢?\n", s);
        s--;
        scanf("%d", &no);
        arr[i++] = no;
        if (no > ans)
            printf("\a在小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (ans != no && s > 0);
    if (ans == no)
    {
        printf("猜对了。\n");
        printf("你用了%d次猜中\n", max_s - s);
    }
    else
        printf("\a很遗憾,你猜错了\n");
    puts("\n---输入记录---");
    for (j = 0; j < i; j++)
        printf("%2d:%4d %+4d\n", j + 1, arr[j], arr[j] - ans);
}
int main()
{
     srand((unsigned)time(NULL));
     int n;

     while (1)
     { 
         menu();
     scanf("%d", &n);
     if (n == 1)
         game();
      else if (n == 0)
         break;
     else
         printf("输错了,请重新输入:\n");
     }

    return  0;
}

测试:[C语言][小游戏][猜数游戏],C语言,c语言,游戏,算法
2)加个Sleep函数和system函数
Sleep函数用来休眠,单位是毫秒;system函数可以执行系统命令,system(“cls”)清理屏幕,达到闪烁的目的。
代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
void menu()
{
    printf("********************\n");
    printf("*****1.进入游戏*****\n");
    printf("*****0.退出游戏*****\n");
    printf("********************\n");
}
void game()
{
    int no;//输入的数字
    int ans = rand() % 1000 + 1;//目标数字
    int max_s;//最多输入的次数
    int arr[1000];//存放输入的值
    int i = 0, j = 0;
    printf("最多输入几次:\n");
    scanf("%d", &max_s);
    int s = max_s;//还可以输入的次数
    printf("请输入1~1000的数字:\n\n");
    do
    {
        printf("还剩%d次机会,你猜是多少呢?\n", s);
        s--;
        scanf("%d", &no);
        arr[i++] = no;
        if (no > ans)
            printf("\a在小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
        Sleep(1000);//x休眠的意思,单位是毫秒
        system("cls");//清屏
    } while (ans != no && s > 0);
    if (ans == no)
    {
        printf("猜对了。\n");
        printf("你用了%d次猜中\n", max_s - s);
    }
    else
        printf("\a很遗憾,你猜错了\n");
    puts("\n---输入记录---");
    for (j = 0; j < i; j++)
        printf("%2d:%4d %+4d\n", j + 1, arr[j], arr[j] - ans);
}
int main()
{
     srand((unsigned)time(NULL));
     int n;
     while (1)
     { 
         menu();
     scanf("%d", &n);
     if (n == 1)
         game();
      else if (n == 0)
         break;
     else
         printf("输错了,请重新输入:\n");
     }
    return  0;
}

测试:
这样看着就很简介
[C语言][小游戏][猜数游戏],C语言,c语言,游戏,算法文章来源地址https://www.toymoban.com/news/detail-533981.html

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

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

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

相关文章

  • C语言简易小游戏

    本篇博客将带领大家自己动手写一下一些C语言小游戏;以增加对于C语言的兴趣😀😀😀😀😀 首先呢我们先来简单介绍一下这个小游戏: 通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字,不能让猜的人知道。猜的人就可以开始猜。 如正确答案为

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

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

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

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

    2024年02月11日
    浏览(30)
  • C语言小游戏 - 猜凶手

    日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词 : A说:不是我。 // 说话为真 , 结果 是不是就 为1 , 否则 0 B说:是C。 C说:是D。 //D说:C在胡说 已知3个人说了真话,1个人说的是假话。// 也就是说以上四个条件,有 三

    2023年04月11日
    浏览(14)
  • 【C语言】小游戏-三字棋

    大家好,我是深鱼~ 目录 一、游戏介绍  二、文件分装  三、代码实现步骤 1.制作简易游戏菜单  2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑随机下棋 6.判断输赢 7.判断棋盘是否满了  四、完整代码 game.h(相关函数的声明,整个代码要引用的头文件以及宏定义) game.c(实现游戏的

    2024年02月13日
    浏览(17)
  • c语言小游戏之扫雷

    目录 一:游戏设计理念及思路 二:初步规划的游戏界面 三:开始扫雷游戏的实现 注:1.创建三个文件,test.c用来测试整个游戏的运行,game.c用来实现扫雷游戏的主体,game.h用来函数声明和包含头文件 2.为方便定位坐标,在展示数组时添加行号和列号 四:谢谢观看  听说看到

    2024年01月23日
    浏览(27)
  • 猜数字小游戏---C语言

    目录 前言:  猜数字游戏: 1.打印选项 2.玩家输入选项 3.根据玩家输入的值进行选择 4.重复游戏的实现 5.游戏game函数的实现 6.优化 ❤博主CSDN:啊苏要学习   ▶专栏分类:C语言◀   C语言的学习,是为我们今后学习其它语言打好基础,C生万物!   开始我们的C语言之旅吧!✈

    2023年04月24日
    浏览(26)
  • 【C语言小游戏--猜数字】

    猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏,下面我将详细介绍该游戏的实现和编程逻辑。玩小游戏的同时,也能对C语言控制语句有更好的认识。 电脑随机生成一个1-100的数字,玩家来猜。玩家可以根据自己需要,设置每次猜的次数。如果

    2024年02月08日
    浏览(22)
  • C语言:三子棋小游戏

    目标很简单:实现一个 三子棋小游戏。三子棋大家都玩过,规则就不提及了。本博文中实现的三子棋在对局中,电脑落子是随机的,不具有智能性,玩家的落子位置使用键盘输入坐标。下面开始详细介绍如何实现一个简单的三子棋游戏。 想要实现一个小游戏,第一件事就是

    2024年02月09日
    浏览(38)
  • C语言——贪吃蛇小游戏

    目录 一、ncurse 1.1 为什么需要用ncurse: 1.2 ncurse的输入输出: 1.2.1 如何使用ncurse: 1.2.2 编译ncurse的程序: 1.2.3 测试输入一个按键ncurse的响应速度: 1.3 ncurse上下左右键获取: 1.3.1 如何查看宏定义的.h文件: 1.3.2 ncurse上下左右键获取: 二、地图规划 2.1 地图规划算法显示第一

    2024年02月07日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包