發(fā)布時(shí)間:2023-11-27 20:04:41 瀏覽量:104次
? 來源:linux.cn ? 作者:Jim Hall ? 譯者:qfzy1233 ?
(本文字?jǐn)?shù):2576,閱讀時(shí)長(zhǎng)大約:3 分鐘)
我在小學(xué)時(shí)就開始 自學(xué)編程 。我的第一個(gè)程序是在 Apple II 上編寫的,但最終,我還是通過看書和編程練習(xí)學(xué)會(huì)了 C 語言。練習(xí)編程的最佳方法是編寫示例程序,它能幫助你練習(xí)新知識(shí)。
在我學(xué)習(xí)一種新的編程語言時(shí),我喜歡編寫一個(gè)簡(jiǎn)單的“猜數(shù)字”游戲來練習(xí)。電腦從 1 到 100 中隨機(jī)挑選一個(gè)數(shù)字,你必須通過猜測(cè)來算出來。在另一篇文章中,我展示了如何用 Bash 語言編寫這個(gè) “猜數(shù)字”游戲 ,我的同事也寫了一些文章,介紹如何用 Java 、 Julia 和其他計(jì)算機(jī)語言編寫它。
“猜數(shù)字”游戲的偉大之處在于它踐行了幾個(gè)編程概念:如何使用變量、如何比較值、如何打印輸出以及如何讀取輸入。
整個(gè)夏天,我錄制了 一個(gè)系列視頻 ,教人們?nèi)绾斡?C 語言 編寫程序。從那以后,我聽到了很多人都在跟著它學(xué)習(xí) C 語言編程的消息。所以,我想接著用 C 語言寫一個(gè)“猜數(shù)字”的游戲。
從寫一個(gè)函數(shù)來選擇一個(gè)隨機(jī)數(shù)字來開始“猜數(shù)字”游戲。在編寫函數(shù)時(shí),優(yōu)秀的程序員會(huì)盡量使它們具有靈活性,這樣他們就可以重用它們來解決略有不同的問題。因此,與其硬編碼函數(shù)來選擇 1 到 100 之間的一個(gè)隨機(jī)數(shù),不如編寫函數(shù)來選擇 1 到某個(gè)整數(shù) maxval 之間的一個(gè)隨機(jī)數(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)調(diào)用 getrandom 來生成一系列隨機(jī)數(shù)。你可以在手冊(cè)頁中了解關(guān)于這個(gè)系統(tǒng)調(diào)用的更多信息,但請(qǐng)注意,getrandom 將用隨機(jī)的 0 和 1 填充變量。這意味著最終值可以是正的,也可以是負(fù)的,因此你需要在之后進(jìn)行測(cè)試,以確保 randnum 函數(shù)的結(jié)果是正值。
你可以用這個(gè)函數(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 之間選擇一個(gè)隨機(jī)數(shù)。在向用戶輸出一個(gè)提示后,程序進(jìn)入一個(gè) do-while 循環(huán),以便用戶可以猜測(cè)數(shù)字。
在循環(huán)的每次迭代中,程序測(cè)試用戶的猜測(cè)的數(shù)值。如果用戶的猜測(cè)小于隨機(jī)數(shù),程序?qū)⑤敵觥癟oo low”,如果猜測(cè)大于隨機(jī)數(shù),程序?qū)⑤敵觥癟oo high”。循環(huán)繼續(xù),直到用戶的猜測(cè)與隨機(jī)數(shù)相同。
當(dāng)循環(huán)退出時(shí),程序輸出 “That's right!”,然后立即結(jié)束:
$ 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!
在學(xué)習(xí)一門新的編程語言時(shí),這個(gè)“猜數(shù)字”游戲是一個(gè)很好的入門程序,因?yàn)樗砸环N非常直接的方式練習(xí)了幾個(gè)常見的編程概念。通過用不同的編程語言實(shí)現(xiàn)這個(gè)簡(jiǎn)單的游戲,你可以演示一些核心概念,并比較每種語言的細(xì)節(jié)。
你有最喜歡的編程語言嗎?你會(huì)如何用它來編寫“猜數(shù)字”游戲呢?關(guān)注本系列文章,查看你可能感興趣的其他編程語言的示例。
via: opensource.com
作者: Jim Hall 選題: lujun9972 譯者: qfzy1233 校對(duì): wxy
本文由 LCTT 原創(chuàng)編譯, Linux中國(guó) 榮譽(yù)推出
熱門資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計(jì)領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點(diǎn)擊咨詢報(bào)名。
2. 手機(jī)游戲如何開發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說明時(shí)代在進(jìn)步游戲在更新,更趨于方便化移動(dòng)化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費(fèi)、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費(fèi)、一鍵制作炫酷特效,適合新手小白??靵碓囋?!
4. Steam值得入手的武俠游戲盤點(diǎn),各具特色的快意江湖
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個(gè)抉定都將觸發(fā)更多愛恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動(dòng)
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點(diǎn),幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動(dòng)漫建模全過程,不是一般人能學(xué)的會(huì)的,會(huì)的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計(jì)圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動(dòng)畫軟件你知道幾個(gè)?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動(dòng)畫軟件或動(dòng)畫工具時(shí),指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動(dòng)畫的軟件程序。但是,在3D動(dòng)畫軟件中還包含了其他類型的...
?三昧動(dòng)漫對(duì)于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會(huì)推出《巫師4》。因?yàn)椤段讕煛废盗性诓邉澋臅r(shí)候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
9. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅(jiān)固
想讓你的3D打印模型更堅(jiān)固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計(jì)技巧,讓你輕松掌握!
10. Unity3D入門:手把手帶你開發(fā)一款坦克大戰(zhàn)的游戲
Unity工程創(chuàng)建完成后如圖所示: 接下來應(yīng)該導(dǎo)入此項(xiàng)目所需的Unity Package文件,要用到的Unity package文件大家可以去Unity3D的官方網(wǎng)站下載(地址:ht...
最新文章
同學(xué)您好!