2014-10-05 29 views
-3

我目前正在嘗試將棋盤遊戲作爲一個C++程序在一些簡單的代碼(仍然學習C++,但我知道基礎和一些先進的東西在這裏和那裏)和我我正試圖在遊戲中做一些事情,我不太確定該怎麼做。我有一個二維10×10陣列作爲當前董事會,看起來是這樣的:用戶輸入預定義變量的名稱/字符

int board[10][10]={ 
{0,1,2,3,4,5,6,7,8,9}, 
{10,11,12,13,14,15,16,17,18,19}, 
{20,21,22,23,24,25,26,27,28,29}, 
{30,31,32,33,34,35,36,37,38,39}, 
{40,41,42,43,44,45,46,47,48,49}, 
{50,51,52,53,54,55,56,57,58,59}, 
{60,61,62,63,64,65,66,67,68,69}, 
{70,71,72,73,74,75,76,77,78,79}, 
{80,81,82,83,84,85,86,87,88,89}, 
{90,91,92,93,94,95,96,97,98,99} }; 

這是目前設置的方式,每一行數和列數關聯與每個數字,分別是第一和第二位,所以:

board[4][5] //This is 45 

現在我知道我可以讓用戶輸入的協調統稱爲「4」和「5」,但希望更傳統的遊戲,我想弄清楚如何使這些行按字母順序標記,所以「45」在技術上實際上是「d5」。我的第一次嘗試是這樣的:

int d=4, x, y; 
cout <<"Input Desired Coordinates"; 
cin >> x; 
cin >> y; 
cout << board[x][y]; 

我的意圖是,如果用戶輸入「d」,這將轉化爲變量「d」,它具有爲4的值,但顯然C++不起作用那麼,是否有任何(相當簡單)的方式能夠輸入字母並讓程序將其解釋爲變量並將其替換爲預定義變量的值?提前感謝!

回答

0

這應該足以讓你開始:

char c; 
cin >> c;   # If this is the character 'd', 
int n = c - 96; # then this will be the number 4. 

看,如果一個字節包含01100100,那麼如果我們把它解釋爲一個,這是100,但如果我們把它解釋爲字符,它是'd'。

+0

這是完美的我需要什麼,非常感謝,與我以爲我會減去97,因爲如MKAROL指出,數組從0開始,所以我想我的「一個'值爲0. – lXGaimMasterXl 2014-10-05 18:56:13

0

你必須明白C++中的數組從0開始。所以「d」應該相等3.同時檢查X和Y是否在數組的範圍內。 d是ASCII下十進制數97

unsigned int boardWidth = 10; 
    unsigned int boardHeight = 10; 
    int X; 
    int Y; 
    char mid; 
    cout << "Input coordinates"; 
    cin >> mid; 
    cin >> Y; 
    X = static_cast<int>(mid) - 97; 
    if (X < boardWidth && Y < boardHeigth && X > 0 && Y > 0) { 
     cout << board[X][Y]; 
    } 
+0

啊,是的,我知道數組的起點爲0,對不起,這只是一個錯誤的嘗試在我的腦海中快速算術。 – lXGaimMasterXl 2014-10-05 17:41:12

+0

我喜歡這個解決方案和Beta版本,但是我會說這對我的需求來說太複雜了,但是謝謝你(並且提醒我,我的心理數學已經關閉了)。 – lXGaimMasterXl 2014-10-05 18:54:47

相關問題