通过编写一个简单的游戏学习 C 语言
当你学习一门新的编程语言时,这个 猜数字 游戏是一个很好的入门程序。下面是如何用 C 语言来编写它。
我在小学时就开始 自学编程。我的第一个程序是在 Apple II 上编写的,但最终,我还是通过看书和编程练习学会了 C 语言。练习编程的最佳方法是编写示例程序,它能帮助你练习新知识。
在我学习一种新的编程语言时,我喜欢编写一个简单的 猜数字 游戏来练习。电脑从 1 到 100 中随机挑选一个数字,你必须通过猜测来算出来。在另一篇文章中,我展示了如何用 Bash 语言编写这个 猜数字 游戏,我的同事也写了一些文章,介绍如何用 Java、Julia 和其他计算机语言编写它。
猜数字 游戏的伟大之处在于它践行了几个编程概念:如何使用变量、如何比较值、如何打印输出以及如何读取输入。
整个夏天,我录制了一个系列视频,教人们如何用 C 语言编写程序。从那以后,我听到了很多人都在跟着它学习 C 语言编程的消息。所以,我想接着用 C 语言写一个 猜数字 的游戏。
去取一个随机数从写一个函数来选择一个随机数字来开始 猜数字 游戏。在编写函数时,优秀的程序员会尽量使它们具有灵活性,这样他们就可以重用它们来解决略有不同的问题。因此,与其硬编码函数来选择 1 到 100 之间的一个随机数,不如编写函数来选择 1 到某个整数 maxval 之间的一个随机数:
#include stdio.h #include sys/random.h randnum(int maxval) /* pick a random number from 1 to maxval */ int randval; getrandom( randval, sizeof(int), GRND_NONBLOCK); /* could be negative, so ensure its positive */ if (randval 0) { return (-1 * randval % maxval + 1); else { return (randval % maxval + 1);
该函数使用 Linux 的系统调用 getrandom 来生成一系列随机数。你可以在手册页中了解关于这个系统调用的更多信息,但请注意,getrandom 将用随机的 0 和 1 填充变量。这意味着最终值可以是正的,也可以是负的,因此你需要在之后进行测试,以确保 randnum 函数的结果是正值。
你可以用这个函数来写你的 猜数字 程序:
#include stdio.h #include sys/random.h randnum(int maxval) main(void) int number; int guess; number = randnum(100); puts("Guess a number between 1 and 100"); do { scanf("%d", guess); if (guess number) { puts("Too low"); else if (guess number) { puts("Too high"); } while (guess != number); puts("Thats right!"); return 0;
程序首先使用 randnum 函数从 1 到 100 之间选择一个随机数。在向用户输出一个提示后,程序进入一个 do-while 循环,以便用户可以猜测数字。
在循环的每次迭代中,程序测试用户的猜测的数值。如果用户的猜测小于随机数,程序将输出 Too low ,如果猜测大于随机数,程序将输出 Too high 。循环继续,直到用户的猜测与随机数相同。
当循环退出时,程序输出 That s right! ,然后立即结束:
$ gcc -o guess -Wall guess.c $ ./guess Guess a number between 1 and 100 Too high Too low Too low Too high Too low Too low Thats right!
在学习一门新的编程语言时,这个 猜数字 游戏是一个很好的入门程序,因为它以一种非常直接的方式练习了几个常见的编程概念。通过用不同的编程语言实现这个简单的游戏,你可以演示一些核心概念,并比较每种语言的细节。
你有最喜欢的编程语言吗?你会如何用它来编写 猜数字 游戏呢?关注本系列文章,查看你可能感兴趣的其他编程语言的示例。
via: https://opensource.com/article/21/1/learn-c
作者:Jim Hall 选题:lujun9972 译者:qfzy1233 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/49942.html
javalinux程序员相关文章
- vue新春游戏-拼手速抢车票,学习玩乐两不误(可在线体验)
- dota2无限寻找服务器中,Win10玩《DOTA2》提示“已连接至DOTA2游戏协调服务器,正在登陆中”的解决方案…
- Pygame学习笔记 6 —— 3D游戏
- Unity 3D游戏开发学习教程
- 博弈论学习笔记(六)纳什均衡之约会游戏与古诺模型
- 【深度学习】4090测评首发!性能炸裂,一款真正的8K游戏显卡
- Android游戏激活成功教程 入门级零基础起步学习激活成功教程!MT管理器+修改器使用方法 小白看了绝对有用
- UE4 如何用命令行来打包你的游戏
- 使用机器学习训练你的游戏AI
- 云游戏三重门:体验、生态和硬件
- 第06步《前端篇》第2章打造游戏界面第1课
- 【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 )
- AIGC大模型时代下,该如何应用高性能计算PC集群打造游戏开发新模式?
- 玩手机到荒废学习!孩子游戏成瘾,家长们该怎么办?
- 买了279元的东京奥运会官方游戏后 我觉得自己被骗了……
- Netflix进军视频游戏领域,但这不是尽头
- 妈妈再也不用担心我的编程 学习游戏CodeCombat开源
- 如何向你的 Python 游戏中添加一个敌人
- Bash 学习的快乐之旅:3 个命令行游戏
- 通过编写“猜数字”游戏学习 Lua
- Dropbox先前泄露的6800万账号影响大;外泄的黑客服务清单;黑客游戏《Hackmud》学习游戏两不误
- 增强游戏体验:Redis作为游戏数据库(redis游戏数据库)
- 玩转Linux命令行——趣味游戏大乱斗(linux命令行游戏)
- 棋牌游戏搭配Redis解锁新魅力(棋牌游戏 redis)
- 英特尔通过预测变量实现策略性强化学习,夺冠 Doom 游戏竞赛 | ICLR 2017
- 解析Android游戏中获取电话状态进行游戏暂停或继续的解决方法
- PHP网页游戏学习之Xnova(ogame)源码解读(一)
- PHP网页游戏学习之Xnova(ogame)源码解读(三)
- PHP网页游戏学习之Xnova(ogame)源码解读(四)
- PHP网页游戏学习之Xnova(ogame)源码解读(九)
- C#实现洗牌游戏实例