2013-04-04 36 views
0

我正在嘗試製作棋盤遊戲。我必須輸入一個txt文件,並使其幾乎成了電網在兩個數組中輸入一個字符串,同時在中間添加不同的字符

F.F 
    ... 
....... 
SSSSSSS 
SSSSSSS 
    SSS 
    SSS 

而且有它出來作爲

7  F-.-F 
     |\|/| 
6  .-.-. 
     |/|\| 
5 .-.-.-.-.-.-. 
    |/|\|/|\|/|\| 
4 S-S-S-S-S-S-S 
    |/|\|/|\|/|\| 
3 S-S-S-S-S-S-S 
     |\|/| 
2  S-S-S 
     |/|\| 
1  S-S-S 
    a b c d e f g 

這有點什麼,我有這麼遠,但我只是失去了作爲如何添加人物其間在輸入的信息board.h board.cpp的

class BoardSet { 
public: 

    void startingBoard(std::string line, int row); 
    void print(); 

private: 
char board[6][6]; 

}; 

部分

部分main.cpp中

void initalizeBoard(istream& in, BoardSet& board) 
{ 
string line; 
int row = 0; 
getline(in, line); 
while(in) 
{ 
    board.startingBoard(line, row); 
    row++; 
    getline(in, line); 

} 
board.print(); 


} 

void BoardSet::startingBoard(std::string line, int row) 
{ 
for(int i = 0; i < 7; i++) 
{ 
    board[row][i] = line[i]; 

} 

} 

void BoardSet::print() 
{ 
int row = 7; 

for(int i = 0; i < 7; i++) 
{ 
    for(int j = 0; j < 7;j++) 
    { 
     cout << board[i][j]; 
    } 
    cout << endl; 
} 

} 

部分我需要的是一些指導或只是一個簡單的例子,我可以把它從那裏,我只是完全難住了,不知道是什麼去做。

+0

似乎格式是固定的。使用另一個數組,例如''output_board [14] [13]'',將輸入複製到新數組中的相應位置。 – gongzhitaao 2013-04-04 03:46:33

+0

但是我怎麼去添加第一個數組到另一個添加中間的字符? – UnhinderedLimpidity 2013-04-04 04:31:41

+0

如果輸入的文件格式像後面的例子那樣是固定的,那麼使用''const int pos [7] [7]''將位置從''input_board [7] [7]''映射到''output_board [13] [13]''; – gongzhitaao 2013-04-04 15:24:33

回答

0
char board[6][7]; 

for(int i = 0; i < 7; i++) 
{ 
    for(int j = 0; j < 7;j++) 
    { 
     cout << board[i][j]; 
    } 
    cout << endl; 
} 

你的數組是6個物品,其中每個物品都是7個物品! 但你正在循環7 x 7?

還是我錯過了觀點?

我看不到您在txt文件中讀取的位置。

我可不是信服......

void BoardSet::startingBoard(std::string line, int row) 
{ 
for(int i = 0; i < 7; i++) 
{ 
    board[row][i] = line[i]; 

} 

} 

我認爲這必須剎車......因爲you're循環7次...... 0,1,2,3,4,5, 6 ...和you're只填寫第一陣列

維數試試這個...

 void BoardSet::setupBoard() // edit 
     { 
     for(int i = 0; i < 6; i++) 
     { 
      for(int j = 0; j < 7;j++) 
      { 
       board[i][j] = line[i]; //////// board[i][j] = line[i]; 
      } 
     } 
     } 

     void BoardSet::startingBoard(std::string line, int row) 
     { 
      for(int i = 0; i < 6; i++) // 6 not 7 
      { 
       board[row][i] = line[i]; 

      } 
}  

    void BoardSet::print() 
    { 
    int row = 7; 

    for(int i = 0; i < 6; i++) 
    { 
     for(int j = 0; j < 7;j++) 
     { 
      cout << board[i][j]; 
     } 
     cout << endl; 
    } 
+0

我確實在數組中犯了一個錯誤,應該將它設置爲'board [6] [6]',所以它是正確的。我確實包含了讀取文件的函數。它是'void initalizeBoard(istream&in,BoardSet&board)'謝謝你的建議 – UnhinderedLimpidity 2013-04-04 04:30:40

相關問題