2013-04-04 40 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

相关问题