天天看點

在終端上用 C++ 簡單編寫一個的猜謎遊戲!

C++ 語言很複雜,但它可以教會你很多關于資料類型、記憶體管理和代碼連結的知識。

學習一門程式設計語言有幾種方法。如果你是編碼新手,你通常會學習一些基本的計算機編碼概念,并嘗試應用它們。如果你已經知道如何用另一種語言進行編碼,你可以重新學習編碼概念在新語言中是如何表達的。

不管是哪種情況,學習這些新原理的便捷方法是建立一個簡單的猜謎遊戲。這會迫使你了解一門語言如何接收輸入和發送輸出,如何比較資料,如何控制程式的流程,以及如何利用條件來影響結果。

它還確定你知道一門語言是如何組織其代碼的;例如,Lua 或Bash可以很容易地作為腳本運作,而Java則需要你建立一個類。

在本文中,我将示範如何用C++在終端上實作猜謎遊戲。

安裝依賴關系

要跟上本文的步伐,你需要 C++ 和一個編譯器。

在 Linux 上,你可以通過從你的發行版軟體倉庫中安裝 Qt Creator IDE 來獲得你所需要的一切。

在 Fedora、CentOS 或 RHEL 上:

$ sudo dnf install qt-creator
在 Debian、Ubuntu、Chromebook 或類似的系統上:
$ sudo apt install qtcreator
本文并沒有使用 Qt Creator IDE,但它是一個安裝你所需要的一切的簡單方法,對于複雜的 C++ 項目(包括那些帶有 GUI 的項目),它是一個必不可少的工具。在 macOS 或 Windows 上,按照 Qt 網站上的安裝說明進行安裝。

設定包含和命名空間

C++ 的核心語言是精簡的。即使是一個簡單的應用程式也需要使用額外的庫。這個應用程式使用iostream來獲得對cout和cin關鍵字的通路。

另外,確定程式使用std命名空間:

#include <iostream>

using namespace std;

這并不是絕對必要,但如果不将命名空間設定為std,所有來自iostream庫的關鍵字都需要一個命名空間字首。例如,我不能寫作cout,而是要寫作std::cout。

C++ 中的語句以分号結束。

建立一個函數

每個 C++ 應用程式至少需要一個函數。

一個 C++ 應用程式的主函數必須稱為main,它必須傳回一個整數(int),這符合POSIX的期望,即一個程序在成功時傳回 0,而在失敗時傳回其他值。你可以通過為它提供傳回類型和名稱來建立一個新函數。

int main() {

 // code goes here

}

實作程式邏輯

遊戲代碼必須首先産生一個随機數供玩家猜測。在 C++ 中,你可以通過建立一個用于生成僞随機數的種子來實作。

一個簡單的種子就是目前的時間。一旦有了種子,你就可以得到一個在 1 和 100 之間的數字。通過調用rand函數,并設定上限值 100 來産生一個從 0 到 99 的随機數,是以無論選擇了什麼數字都要加 1,并将結果配置設定給一個名為number的變量。

你還必須聲明一個變量來儲存玩家的猜測值。為了清楚起見,我稱這個變量為guess。

這個示例代碼還包括一個調試語句,告訴你随機數到底是什麼。這對于猜測遊戲來說不是很好,但它使測試速度快了很多。以後,你可以删除這一行,或者直接在行前面用//注釋出來:

srand (time(NULL));

int number = rand() % 100+1;

int guess = 0;

cout << number << endl; //debug

增加 do-while 和 if 語句

C++ 中的 do-while 語句以關鍵字 do 開頭,并将你希望 C++ 做的所有事情用括号括起來。用while關鍵字結束語句,後面是必須滿足的條件(括号内):

do {

 // code here

} while ( number != guess );

遊戲代碼出現在if、else if和else語句之間,為玩家提供提示。

————————————

首先,用cout語句提示玩家猜測。cout函數将輸出列印到stdout上。因為cout語句沒有連着endl(endline)函數,是以沒有換行。緊接着這個cout語句,通過使用cin函數告訴 C++ 等待輸入。正如你所猜測的那樣,cin等待來自stdin的輸入。

接下來,程式進入if控制語句。如果玩家的猜測大于number變量中包含的僞随機數,那麼程式就會列印出一個提示,後面是一個換行符。這就中斷了if語句,但 C++ 仍然被困在do-while循環中,因為它的條件(number變量等于guess)還沒有滿足。

如果玩家的猜測小于number變量中包含的僞随機數,那麼程式就會列印出一個提示,後面是一個換行符。這再次中斷了if語句,但程式仍然被困在do-while循環中。

當guess等于number時,最終滿足關鍵條件,觸發else語句,do-while循環結束,程式結束:

  cout << "Guess a number between 1 and 100: ";

  cin >> guess;

  if ( guess > number) { cout << "Too high.\n" << endl; }

  else if ( guess < number ) { cout << "Too low.\n" << endl; }

  else {

    cout << "That's right!\n" << endl;

    exit(0);

  } // fi

return 0;

} // main

建構代碼和玩遊戲

你可以用 GCC 建構你的應用程式:
$ g++ -o guess.bin guess.cpp
運作二進制檔案試試:

$ ./guess.bin

74

Guess a number between 1 and 100: 76

Too high.

Guess a number between 1 and 100: 1

Too low.

Guess a number between 1 and 100: 74

That's right!

成功了!

試試 C++ 吧

C++ 語言很複雜。為終端編寫 C++ 應用程式可以讓你學到很多關于資料類型、記憶體管理和代碼連結的知識。

試着用 C++ 編寫一個有用的實用程式,看看你能發現什麼!

—————————————

- End -

不管你是轉行也好,初學也罷,進階也可,如果你想學程式設計,進階程式員~

【值得關注】我的 編 程 學 習 交 流 俱 樂 部 !【點選進入】

C語言入門資料(網盤連結免費分享):

C語言推薦書籍(PDF免費分享):

繼續閱讀