目录

  • 前言
  • 猜数字游戏
    • 打印菜单
    • 处理玩家选择的操作
    • 编写猜数字游戏函数
      • 游戏中要猜数字从哪来?(配置随机数生成器)
      • 时间戳
      • 开始生成随机数
      • game函数内部编写
  • 完整代码
  • 总结

前言

好久不见,今天我要跟大家分享一个C语言猜数字小游戏,无聊的时候玩一玩这种小游戏,怡怡情,给自己的生活整天一点乐趣,哈哈~
话不多说,开干

猜数字游戏

打印菜单

一个游戏嘛,首先我们得打印一个菜单让玩家看到菜单栏,可以提供选择,代码如下:

void menu()
{printf("********************************\n");printf("*******欢迎来到猜数字游戏********\n");printf("************请选择>:************\n");printf("******1.play        0.exit******\n");printf("********************************\n");
}

用户输入1就是开始游戏,输入0就是退出游戏。
效果如下:

处理玩家选择的操作

根据玩家的选择,我们要对他们的玩家进行相应的处理,提供给玩家想要执行的操作,这就要用到一个选择语句,看代码:

//初始化用户输入值int input = 0;//接受用户输入值scanf("%d", &input);switch (input){case 1:三子棋游戏(一些代码)break;case 0:printf("退出游戏\n");break;default:printf("输入错误,请重新输入\n");break;}

这个游戏让玩家只玩一把多不好,万一玩家觉得不过瘾,得让他们多玩几把呀,为了满足广大游戏玩家的需求,我们得让这个有游戏一直可以玩下去,直到玩家知己不想玩退出为止,这就要用到循环语句,我们先看看实际是如何操作的:

//初始化用户输入值int input = 0;do{//打印游戏菜单menu();//接受用户输入值scanf("%d", &input);switch (input){case 1:三子棋游戏(一些代码)break;case 0:printf("退出游戏\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input);

根据玩家的选择,玩家如果输入1,那么游戏将一直可以玩下去,输入0则跳出循环,终止游戏。

编写猜数字游戏函数

用户选择1,则进入游戏,我们得正式开始编写一个游戏函数。

游戏中要猜数字从哪来?(配置随机数生成器)

猜数字游戏,数字从何而来,这是一个值得我们思考的问题。仔细思考,想到了库函数里面有一个随机数生成函数rand,

Returns a pseudo-random integral number in the range between 0 and RAND_MAX.
This number is generated by an algorithm that returns a sequence of apparently non-related >numbers each time it is called. This algorithm uses a seed to generate the series, which should >be initialized to some distinctive value using function srand.

这是我摘录rand函数的介绍内容。这个函数可以生成0-RAND_MAX的随机数,使用之前要初始化随机数生成器srand,否则会导致每次打开程序生成的随机数与上次一样,这就会让玩家很没有体验感。所以我们先来看一下srand函数:

void srand (unsigned int seed);

函数返回类型是void,形参是unsigned int类型的,seed这个变量也要是随机数,这就麻烦了,本来我们就是要配置随机数生成器,然后又有找一个随机数,这就麻烦了,这随机数上哪找呀,能不能找到一个随时都在变的数呢?

时间戳

时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。 Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。(来源:百度百科)
回到srand函数,我们发现:

In order to generate random-like numbers, srand is usually initialized to some distinctive runtime value, like the value returned by function time (declared in header ). This is distinctive enough for most trivial randomization needs.

时间是在不断变化的,这样我们就获取这样一个随机数,那这个问题就解决了
这里有一个time函数,可以获取当前日历时间,该由于函数返回类型是long long,srand函数要随机值,就得将time返回值强制类型转换一下,所以初始化随机数生成器如下:

srand((unsigned int)time(NULL));

配置好随机数生成器我们就要开始使用了。

开始生成随机数

生成1-100的随机数就可以这样写了:

//生成1~100的随机数int rand_num = rand() % 100 + 1;

game函数内部编写

根据上述条件,我们可以开始编写一个game函数了,如下:

void game()
{//生成1~100的随机数int rand_num = rand() % 100 + 1;//初始化玩家输入数字int chess_num = 0;//记录猜数字猜的次数int count = 0;//猜数字游戏while (1){printf("请输入猜的数字的大小(1-100)>:\n");scanf("%d", &chess_num);count++;if (chess_num > rand_num){printf("猜大了\n");}else if (chess_num < rand_num){printf("猜小了\n");}else{printf("恭喜你猜对了\n");print_score(count);break;}     }
}

每猜一次,系统都会提示猜到了小了,直到猜对了为止。
根据猜的次数的多少,我们可以给一个评价,如下:

void print_score(int count)
{if (1 == count){printf("猜数字小达人\n");}else if (count >= 2 && count <= 4){printf("相当不错,就被你猜到了\n");}else if (count >= 5 && count <= 8){printf("水平一般般,不行呀\n");}else{printf("没有发挥你的全部实力,运气有点差,再来一局吧\n");}
}

完整代码

根据分析,我们就可以把这样一个游戏编写完了。

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
//猜数字小游戏
void print_score(int count)
{if (1 == count){printf("猜数字小达人\n");}else if (count >= 2 && count <= 4){printf("相当不错,就被你猜到了\n");}else if (count >= 5 && count <= 8){printf("水平一般般,不行呀\n");}else{printf("没有发挥你的全部实力,运气有点差,再来一局吧\n");}
}
void menu()
{printf("********************************\n");printf("*******欢迎来到猜数字游戏*******\n");printf("************请选择>:************\n");printf("******1.play        0.exit******\n");printf("********************************\n");
}
void game()
{//生成1~100的随机数int rand_num = rand() % 100 + 1;//初始化玩家输入数字int chess_num = 0;//记录猜数字猜的次数int count = 0;//猜数字游戏while (1){printf("请输入猜的数字的大小(1-100)>:\n");scanf("%d", &chess_num);count++;if (chess_num > rand_num){printf("猜大了\n");}else if (chess_num < rand_num){printf("猜小了\n");}else{printf("恭喜你猜对了\n");print_score(count);break;}     }
}
int main()
{//初始化随机数生成器srand((unsigned int)time(NULL));//初始化用户输入值int input = 0;do{//打印游戏菜单menu();//接受用户输入值scanf("%d", &input);switch (input){case 1:game();Sleep(1000);break;case 0:printf("退出游戏\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

总结

今天这个小游戏主要用到了选择语句和循环语句,以及一些简单的函数编写,其中还提到了随机函数如何传产生的,讲到这里,大家的是不是想要赶快尝试一下,去吧,留下你的评论和小赞一枚,哈哈~

感谢感谢今天的分享就到这里了,感谢大家的点赞支持与指正~

教你如何用C语言设计一个有趣的猜数字小游戏相关推荐

  1. python实现简单小游戏_用python开发一个有趣的猜数字小游戏(实现简单的GUI界面学习)...

    文章目录 用python开发一个有趣的猜数字小游戏 用于字符串的格式化,通过 {} 和 : 来代替以前的 % 1. python的GUI编程 1.1 pythonGUI常用库对比 Python 提供了 ...

  2. python编写一个简单的猜数字小游戏

    该脚本包含了python基础的部分内容,python初学者既可以学习借鉴,也可以向朋友去装13. 本次编写的内容需要导入一个第三方模块random,可获得规定范围的随机数. 首先打开pycharm中下 ...

  3. 用while实现一个简单的猜数字小游戏

    中午闲着没事干,就写个小游戏吧,这个小游戏游戏规则就很简单,就是系统随机产出一个整数,然后用户输一个数字,如果输入的数字大于系统的整数就弹出输大了,如果小于,就弹出输小了,规则很简单就这样.下面见代码 ...

  4. PHP充值怎么打折,教大家如何用PHP语言写一个简单的商品打折小程序!

    注:php是嵌套在html里面使用的,本文仅是商品打折小程序的代码 效果图: 代码:html> 宗波尘客php代码演示P17 请输入商品折扣价: 折扣: 九折 八折 七折 六折 五折 $Orig ...

  5. c语言猜数字游戏新建,C语言编程 如何构建一个简单的猜数字小游戏

    #include//生成随机函数起点时用到time.h int main() { int number1 = 0, choice = 0, number2 = 0; printf("$$$$ ...

  6. c语言猜大小游戏的代码,C语言编程 如何构建一个简单的猜数字小游戏

    #include #include #include//生成随机函数起点时用到time.h int main() { int number1 = 0, choice = 0, number2 = 0; ...

  7. C语言详解系列——综合练习,猜数字小游戏

    文章目录 题目需求 思路分析 rand()库函数随机数的生成 游戏的试玩 题目需求 今天与大家分享一个简单的猜数字小游戏,当作我们前面学习的一个综合练习,我们的需求是: 1.可以自动生成一个1-100 ...

  8. 【c语言】和【Java】版本的猜数字小游戏

    目录 前言 一.c语言版本 1.游戏设计思路 2.rand()及srand()函数的使用 2.取模确定取值范围 3.条件运算符 4.利用二分法进行猜测 二.java版本 1.Math.random() ...

  9. 《C语言初阶》 猜数字小游戏

    大家好,这篇文章主要教大家写个小游戏,学习编程的时候我们肯定都有一个梦想就是想写出属于自己的游戏.这次,我们就从0到1开始写一个非常简单的猜数字小游戏,当你写完时和你的朋友一起玩吧! 首先,我们制定一 ...

最新文章

  1. Java字符串就该这样设计
  2. 机器学习中的数据标准化
  3. 用nagios检测内存
  4. Windows 7下实现×××连接自动创建
  5. ps -ef |grep -v 在shell sh 脚本中貌似无效?
  6. 【Elasticsearch】elasticsearch里面的关于批量读取mget的用法
  7. StopWatch工具
  8. 学python能做什么-学Python后到底能干什么?网友:我太难了
  9. 软件需求模式阅读笔记之一
  10. questasim编译报error: Declarations must precede statements. Look for stray semicolons.
  11. 【题解】LuoGu5369:[PKUSC2018]最大前缀和
  12. Mongodb- paly中操作mongodb记录
  13. 怎样与常见的9种人打交道
  14. vs 设置护眼背景颜色
  15. Android 手机设置 Charles 代理,pem 证书安装不上?
  16. 母亲产前压力、胎儿大脑连接和分娩时的胎龄之间的交互关系
  17. Virbox Protector AAB 加固-兼容 Google Play 上架
  18. Android一键加QQ群
  19. 如何用Python计算特征重要性?
  20. 2017年3月10日 星期五 --出埃及记 Exodus 23:28

热门文章

  1. Primavera P6 Professional 21.12 登录异常案例分享
  2. 3用计算机处理信息吗,第3课_用计算机处理信息.ppt
  3. 山东移动咪咕MG2000_KJ_S905L2B_RTL8822BS_线刷固件包
  4. Redist-Java 有序列表操作
  5. 现代远程教育入学指南(石油大学)--高等数学(二)在线作业
  6. U盘要求格式化怎么修复?看这里!
  7. MySQL索引机制(详细+原理+解析)
  8. C语言实现根据阳历(公历)显示农历,干支,生肖
  9. FreeModbus从站源码解析(portserial.c)
  10. 安装部署halo博客