2016-12-15 70 views
-1

我目前正試圖解決一個有趣的電腦遊戲挑戰,我設定了自己,但我遇到了困難。如何使用for循環爲2D數組中的元素設置數據值?

我打算創建一個小遊戲,其中一個玩家在10x10的tileset上生成(1,1)。該玩家必須使用WASD移動,朝向在集合中隨機產生的怪物。隨着每個玩家的移動,怪物都會隨機移動一個空間。當玩家移動到怪物上時,該怪物被擊敗。

到目前爲止的代碼:

using namespace std; 

int tileset[10][10];    //Initializing 2D Array 
int n = 10;       //Initializing amount of turns to spawn enemy 
int y = 0;       //Initializing turn clock 

class Square { 
private: 

public: 

int squarePositionX, squarePositionY; 
enum squareContents {BOTH , PLAYER , MONSTER , NONE}; 

}; 

int main() { 

} 

我正在試圖創建一個類來表示二維數組「地形設置」中每平方,然後用一個for循環使用這個類來初始化X &每個方格的y值,但我不確定如何做到這一點。

另外,我是否完全錯誤的方式去完成這項任務?這是我自己設定的一個很酷的小挑戰,我認爲這是解決這個問題的最好方法,但也許我太過複雜了。

並非常感謝幫助! 〜Dean。

+0

您需要考慮的一些問題:董事會是否包含「Square」或「整數」?您發佈的代碼顯示了一個整數的「tileset」。 –

+0

董事會在理念上是​​我的頭,是10x10瓷磚,每個瓷磚都有x協調,y協調和內容的值。這正是我試圖拼命加入的原因。什麼是更合適的數組類型? – ProgrammerDope

+0

你想讓你的棋盤類型爲'Square',如'Square board [10] [10];' –

回答

3

我會先讓遊戲變得非常簡單,然後再增加規則。也許tic-tac-toe會是一個更好的起點?

與您的遊戲設計一起,我會盡量保持簡單並提供一些有用的建議,因爲您是新手。

這是一個典型的矩陣(2D陣列)初始化。起始值可以是行和列索引i和j的非常數函數。

for (int i = 0; i < 10; ++ i) { 
    for (int j = 0; j < 10; ++ j) { 
     tileset[i][j] = 0; 
    } 
} 

如果枚舉意味着是地形設置的可能值的枚舉,那麼它是枚舉類型,該2維陣列應而非INT。

上面的初始化可能會在您的類的構造函數中完成,並且可能會爲您的初始化值使用非零的值。它可以將i和j的函數分配給起始遊戲狀態的位置。另外,除非你希望你的成員變量可以從課堂外直接訪問,否則你可能希望它們在私人部分而不是公共部分。你的主要方法可能會構造遊戲對象(假設「Square」是它的名稱),然後調用Game對象的方法,如「simulatePlay()」或「makeMove(move)」。

在更復雜的遊戲中,您可能會製作SquareContents並從Square移動單獨的類(再次假設您的遊戲名稱)。

+1

我建議使用''''和'}來顯示新手良好的編碼實踐。 :-) –

+0

托馬斯,我總是使用敏捷的只是當我需要它的哲學與代碼分組,托馬斯,但我遵循你的建議出於尊重,因爲我知道我在少數與那個意見。 :) – FauChristian

+0

Downvoter,也許你可以給新手一些恩典?我認爲他們的努力是最初的嘗試,他們可能會進一步回答上述問題,而沒有更多的互動。 – FauChristian

相關問題