君兮_的个人主页

勤时当勉励 岁月不待人

C/C++ 游戏开发


Hello米娜桑,这里是君兮_,今天又抽空为大家更新我们的主线0基础C语言啦!鉴于最近讲解了非常多的选择语句与循环语句,咱们今天就来讲讲两者结合的一个简单的实战应用。
同时如果你是0基础小白的话,建议先看看下面两篇博客哦!以下是链接:

【C语言初阶】万字解析,带你0基础快速入门C语言(上)
【C语言初阶】万字解析,带你0基础快速入门C语言(下)

  • 废话不多说咱们直接开始吧!!

项目实战讲解

  • 猜数字游戏
    • 一.生成随机数
      • 随机数的生成
    • 二. 猜数字
      • 打印菜单
      • 游戏的编写
    • 三.源码
  • 总结

猜数字游戏

  • 现在我们想实现这样一个功能:
  • 1.生成一个随机数,这个随机数大小在1-100之间
  • 2.用户输入数字,如果输入的数字比随机数小,就提示玩家猜小了,输入的数字比随机数大,就提示猜大了,直至找到我们的随机数
  • 结合上面两点,就成了我们今天要实现的第一个小项目,猜数字游戏,我们分步来分析。

一.生成随机数

  • 为了让电脑能生成的数随时在变化,我们必须找到一个在随时变化的东西传进去不断的生成数
  • 此时我们想到,有一个东西正无时无刻不在发生变化,那就是时间,恰好符合我们的要求。
  • 接下来先讲讲怎么通过时间戳生成随机数。

随机数的生成

  • 什么是时间戳?
  • 时间戳是计算机科学中常见的术语,是指一种记录时间的方式,通常用于记录某个事件的发生时间或者文件的创建、修改时间等信息。简单的说,时间戳就是一串数字,表示从某个固定时间点(1970年1月1日00:00:00)开始到现在的时间长度,通常以秒为单位计算。
  • 生成随机数的函数
#include<stolib>//使用该函数所需的头文件
rand()
  • 我们通过msdn来认识一下它

  • rand的返回值为一个整型,注意最后一句话哦:

  • 也就是说,在使用rand之前,我们得先调用一下srand为其设定生成随机数的起点(或者生成器)”
  • srand函数msdn定义如下:
  • 当我们调用srand函数时,必须满足的条件是传给它的值是一个变化的值,此时就可以用我们前面讲到的时间戳了
#include<time.h>//使用time函数所需头文件
srand((unsigned int)time(NULL));//把时间函数置空传给srand同时由于srand要求参数必须为unsigned int型,把time(NULL)强制类型转换一下
  • 注意,rand生成的其实是一个伪随机数。

二. 猜数字

随机数的问题搞定了,现在开始解决具体问题

打印菜单

  • 在开始游戏前,我们得先打印一个菜单来提醒一下玩家怎么进入游戏。
  • 这一步其实是非常简单的,代码如下
void menu()//打印菜单
{printf("*****************************\n");printf("*********** 1.play **********\n");printf("*********** 0.exit **********\n");printf("*****************************\n");}
  • 好了,一个简单的菜单就写好了,但是此时的1和0是没有任何的选择效果的,我们接下来就让我们的菜单真正能做到输入1开始输入0结束的效果。
int main()
{srand((unsigned int)time(NULL));int input = 0;do {menu();printf("请选择:> ");scanf("%d",&input);switch (input){case 1:game(); //进入游戏  break;case 0:printf("退出游戏\n");break;default:printf("输入错误,请重新输入\n");//输入的非0非1时break;}}while(input);return 0;
}
  • 来测试一下我们这个菜单的效果

  • 非常完美,菜单算是打印完成了,我们进行下一步。

游戏的编写

  • 前面我们已经分析了该游戏的逻辑,现在我们就来根据我们游戏的逻辑来编写这段代码:
void game()
{int random_num = rand() % 100 + 1;//产生1-100的随机数int input = 0;while (1){printf("请输入猜的数字>:");//玩家输入scanf("%d", &input);if (input > random_num)//输入的数字比生成随机数大{printf("猜大了\n");}else if (input < random_num)//生成的数字比随机数小{printf("猜小了\n");}else{printf("恭喜你,猜对了\n");break;}}
}
  • 唯一要解释一下的是随机数生成的范围是怎么设定在0-100的
int random_num = rand() % 100 + 1;
  • 看下这段代码,我们把生成的随机数对100取余,那么此刻是不是随机数的值就一定在0-99之间了?(大于100的话会进1的),然后我们对这个数再+1,那么此时随机数的范围就被定在1-100了?
  • 这个项目并不算太难,大家看代码自己分析一下相信就能想明白,其他的我就不过多解释了,咱们来直接试试游戏的效果。
  • 没啥问题吧?话说我两次就猜对了今天是不是该去买彩票呢?

三.源码

  • 源码给大家放这啦,有需要的自取哦!
#include<stdlib.h>
#include<time.h>
void menu()//打印菜单
{printf("*****************************\n");printf("*********** 1.play **********\n");printf("*********** 0.exit **********\n");printf("*****************************\n");}
void game()
{int random_num = rand() % 100 + 1;int input = 0;while (1){printf("请输入猜的数字>:");scanf("%d", &input);if (input > random_num){printf("猜大了\n");}else if (input < random_num){printf("猜小了\n");}else{printf("恭喜你,猜对了\n");break;}}
}int main()
{srand((unsigned int)time(NULL));int input = 0;do {menu();printf("请选择:> ");scanf("%d", &input);switch (input){case 1:game();    //进入游戏  break;case 0:printf("退出游戏\n");break;default:printf("输入错误,请重新输入\n");//输入的非0非1时break;}} while (input);return 0;
}

总结

  • 以上就是今天要讲的所有内容啦,说实话我一开始压根没打算更新这个项目的,因为大家看代码就知道真的非常非常的简单。但是为了照顾有些真的是0基础的小白,嗯,咱们还是从简单的开始吧。

  • 如果你觉得自己的基础还不错,想看稍微有点难度的实战项目的话,可以看看下面这两篇博客哦!
    【C语言】万字教学,带你分步实现扫雷游戏(内含递归函数解析),剑指扫雷,一篇足矣
    【C语言】三子棋详解(包教包会的那种)

  • 如果你对文章的内容有任何疑问欢迎在评论区或者私信博主指出哦,博主看到都会第一时间回复的!

  • 大噶(家)下次再见啦!

新人博主创作不易,如果感觉文章内容对你有所帮助的话不妨三连一下这个新人博主再走呗。你们的支持就是我更新的动力!!!

(可莉请求你们三连支持一下博主!!!点击下方评论点赞收藏帮帮可莉吧)

【C语言】第一个C语言项目——“猜数字”游戏(内附源码)相关推荐

  1. Java实现自制猜数游戏(附源码)

    这里是Java系列文章,主要介绍有Java的使用及Java相关的,如Java语言本身以及Java等级考试 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继 ...

  2. 一个快速测试PlayCanvas Demo 的工程(内附源码)

    PlayCanvas Paoject 一个快速测试PlayCanvas Demo 的工程. 源码下载: PlayCanvas Paoject下载地址 操作说明: 1.安装依赖 npm install ...

  3. 如何使用javascript制作一个网页端3D贪吃蛇游戏(附源码及链接)

    先来看游戏的最终效果: 3D网页版贪吃蛇游戏 下面来具体讲一下如何实现. 该游戏使用Hightopo的SDK制作,总共100多行代码,没有WebGL基础的同学们也可很快掌握. 场景初始化 首先,我们对 ...

  4. Java实训项目一一拼图游戏(附源码)

    1 实训基本信息 1.1 实训项目名称 (1)拼图游戏 1.2 实训环境 本次实训内容主要针对专业学生,实训形式以实战讲解为主导.实训课程由实训老师主讲,实训老师教学严谨又平易近人,讲解的内容非常细致 ...

  5. python成语游戏代码_用python的TK模块实现猜成语游戏(附源码)

    1 classGameWindow(object):2 """创建游戏运行窗口并加载相关的控件""" 3 4 def __init__(se ...

  6. C语言小游戏大全,C语言贪吃蛇小游戏(附源码)

    一.C语言小游戏大全,C语言贪吃蛇小游戏(附源码) 贪吃蛇小游戏源码和更多C语言课设项目小游戏源码免 费 下 载 链 接 如下: c语言项目课设小游戏源码资料压缩包.zip-C文档类资源-CSDN下载 ...

  7. Java毕设项目在线答题系统计算机(附源码+系统+数据库+LW)

    Java毕设项目在线答题系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...

  8. Java毕设项目便利店库存管理计算机(附源码+系统+数据库+LW)

    Java毕设项目便利店库存管理计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecl ...

  9. Java毕设项目信贷管理系统计算机(附源码+系统+数据库+LW)

    Java毕设项目信贷管理系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ecli ...

最新文章

  1. Kubernetes集群部署(yum部署)
  2. 无语!你竟然连CompletableFuture都不知道,还天天说在jdk8原地踏步~
  3. JS中的面向对象编程
  4. 最大值减去最小值小于或等于num的子数组数量
  5. Apollo 8 — ConfigService 异步轮询接口的实现
  6. lg手机历史机型_华为后,又一中国芯崛起!国际手机巨头LG都采用它的芯片了...
  7. C++算法一:交换算法
  8. python每隔30s检查一次_Python的全局解释器锁
  9. 抖音电商发布创作者管理总则 近八万名带货达人因违规被罚
  10. 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_4、快速创建SpringBoot应用之自动创建web应用...
  11. Handler机制的理解与使用
  12. 中国电子学会c语言考试题库,计算机基础考试试题及答案
  13. 算法设计与分析基础——假币问题(三分法)
  14. 2019微商城系统源码 可封装成app
  15. 企业实现均衡生产,车间管理系统来支持
  16. Python——飞机大战源码(含飞机爆炸效果动图)
  17. 基于聚类算法的城市餐饮数据分析与店铺选址
  18. OMAP 3 图像信号处理器 (ISP) 驱动
  19. 迈出数据安全建设的第一步|公安数据分类分级建设案例实践
  20. 高通Camera数字成像系统简介

热门文章

  1. 北京内推 | OPPO研究院语音语义研究部招聘NLP研究型实习生
  2. 电机驱控芯片:TMC5160介绍与使用
  3. 3DSMAX 卸载工具,完美彻底卸载清除干净3dsmax各种残留注册表和文件
  4. vue中pc端大屏怎么进行rem适配(lib-flexible + postcss-pxtorem)
  5. swift cell的高度是动态的 三个文件:控制器 cell Frame类
  6. DBeaver Community
  7. 利用HashSet给list去重
  8. Android图灵聊天机器人-薇尔莉特
  9. 截至6月,5G基站共建41万个!揭秘BATH巨头企业如何借“5G布局
  10. 火影为什么一直服务器未响应,究极风暴4一直未响应 | 手游网游页游攻略大全...