發(fā)布時間:2023-11-27 20:04:41 瀏覽量:111次

? 來源:linux.cn ? 作者:Jim Hall ? 譯者:qfzy1233 ?
(本文字數(shù):2576,閱讀時長大約:3 分鐘)
我在小學時就開始 自學編程 。我的第一個程序是在 Apple II 上編寫的,但最終,我還是通過看書和編程練習學會了 C 語言。練習編程的最佳方法是編寫示例程序,它能幫助你練習新知識。
在我學習一種新的編程語言時,我喜歡編寫一個簡單的“猜數(shù)字”游戲來練習。電腦從 1 到 100 中隨機挑選一個數(shù)字,你必須通過猜測來算出來。在另一篇文章中,我展示了如何用 Bash 語言編寫這個 “猜數(shù)字”游戲 ,我的同事也寫了一些文章,介紹如何用 Java 、 Julia 和其他計算機語言編寫它。
“猜數(shù)字”游戲的偉大之處在于它踐行了幾個編程概念:如何使用變量、如何比較值、如何打印輸出以及如何讀取輸入。
整個夏天,我錄制了 一個系列視頻 ,教人們?nèi)绾斡?C 語言 編寫程序。從那以后,我聽到了很多人都在跟著它學習 C 語言編程的消息。所以,我想接著用 C 語言寫一個“猜數(shù)字”的游戲。
從寫一個函數(shù)來選擇一個隨機數(shù)字來開始“猜數(shù)字”游戲。在編寫函數(shù)時,優(yōu)秀的程序員會盡量使它們具有靈活性,這樣他們就可以重用它們來解決略有不同的問題。因此,與其硬編碼函數(shù)來選擇 1 到 100 之間的一個隨機數(shù),不如編寫函數(shù)來選擇 1 到某個整數(shù) maxval 之間的一個隨機數(shù):
#include <stdio.h>
#include <sys/random.h>
int
randnum(int maxval)
{
/* pick a random number from 1 to maxval */
int randval;
getrandom(&randval, sizeof(int), GRND_NONBLOCK);
/* could be negative, so ensure it's positive */
if (randval < 0) {
return (-1 * randval % maxval + 1);
}
else {
return (randval % maxval + 1);
}
}
該函數(shù)使用 Linux 的系統(tǒng)調用 getrandom 來生成一系列隨機數(shù)。你可以在手冊頁中了解關于這個系統(tǒng)調用的更多信息,但請注意,getrandom 將用隨機的 0 和 1 填充變量。這意味著最終值可以是正的,也可以是負的,因此你需要在之后進行測試,以確保 randnum 函數(shù)的結果是正值。
你可以用這個函數(shù)來寫你的“猜數(shù)字”程序:

#include <stdio.h>
#include <sys/random.h>
int
randnum(int maxval)
{
...
}
int
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("That's right!");
return 0;
}
程序首先使用 randnum 函數(shù)從 1 到 100 之間選擇一個隨機數(shù)。在向用戶輸出一個提示后,程序進入一個 do-while 循環(huán),以便用戶可以猜測數(shù)字。
在循環(huán)的每次迭代中,程序測試用戶的猜測的數(shù)值。如果用戶的猜測小于隨機數(shù),程序將輸出“Too low”,如果猜測大于隨機數(shù),程序將輸出“Too high”。循環(huán)繼續(xù),直到用戶的猜測與隨機數(shù)相同。
當循環(huán)退出時,程序輸出 “That's right!”,然后立即結束:
$ gcc -o guess -Wall guess.c
$ http://www.toutiao.com/a6917264430015742475/guess
Guess a number between 1 and 100
50
Too high
30
Too low
40
Too low
45
Too high
42
Too low
43
Too low
44
That's right!
在學習一門新的編程語言時,這個“猜數(shù)字”游戲是一個很好的入門程序,因為它以一種非常直接的方式練習了幾個常見的編程概念。通過用不同的編程語言實現(xiàn)這個簡單的游戲,你可以演示一些核心概念,并比較每種語言的細節(jié)。
你有最喜歡的編程語言嗎?你會如何用它來編寫“猜數(shù)字”游戲呢?關注本系列文章,查看你可能感興趣的其他編程語言的示例。
via: opensource.com
作者: Jim Hall 選題: lujun9972 譯者: qfzy1233 校對: wxy
本文由 LCTT 原創(chuàng)編譯, Linux中國 榮譽推出

熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設計領域和數(shù)字藝術教育的重要性,歡迎點擊咨詢報名。
2. 手機游戲如何開發(fā)(如何制作傳奇手游,都需要準備些什么?)
?如何制作傳奇手游,都需要準備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時代在進步游戲在更新,更趨于方便化移動化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費、一鍵制作炫酷特效,適合新手小白??靵碓囋嚕?/span>
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結局,不限主線發(fā)展,高自由...
?三昧動漫對于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應并不會推出《巫師4》。因為《巫師》系列在策劃的時候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
6. 3D動畫軟件你知道幾個?3ds Max、Blender、Maya、Houdini大比拼
當提到3D動畫軟件或動畫工具時,指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術動畫的軟件程序。但是,在3D動畫軟件中還包含了其他類型的...
想讓你的3D打印模型更堅固?不妨嘗試一下Cura參數(shù)設置和設計技巧,讓你輕松掌握!
8. 虛幻引擎5節(jié)省存儲空間用這招!緩存的清理與設置
眾所周知,虛幻引擎5(下面簡稱UE5)特別占用存儲空間,僅一個版本安裝好的文件就有60G,這還不包括我們在使用時保存的工程文件和隨之產(chǎn)生的緩存文件。而...
9. Bigtime加密游戲經(jīng)濟體系揭秘,不同玩家角色的經(jīng)濟活動
Bigtime加密游戲經(jīng)濟模型分析,探討游戲經(jīng)濟特點,幫助玩家更全面了解這款GameFi產(chǎn)品。
10. 3D動漫建模全過程,不是一般人能學的會的,會的多不是人?
步驟01:面部,頸部,身體在一起這次我不準備設計圖片,我從雕刻進入。這一次,它將是一種純粹關注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
最新文章
同學您好!