2016-04-30 10 views
-2
char[][] moveup() 
{ 
for (int i=0;i<3;i++) 
{ 
for (int j=0;j<3;j++) 
    { 

    if(board[i][j]=='X' && board [i-1][j]=='!') { 
    board [i][j]='!'; 
    board [i-1][j]='X'; 
    } 
    } 
    } 
    return board; 
    } 

をアップチックタックつま先タイプのゲームを作り、これが私の動きでありますポインタポインタを使わずに2次元配列を返すことはできません!イムので、私は使用せずに2次元配列ボードを返すようにしたい私は、ベクトル</em>にして、この2次元配列を渡したいこれは私のコードと<em>ある機能

+4

いいえ、あなたは配列を返すことはできません。これを行うには、別の言語を選択するか、構造体で配列をラップします。 – MikeCAT

+1

* CまたはC++のいずれかを選択すると良いでしょう。 – MikeCAT

+0

@MikeCAT IMO、それは両方のタグを持つことは完全に有効です。配列は、CとC++の両方でほぼ同じように動作します。 – HolyBlackCat

答えて

1

あなたは配列への参照を返すことができます:ここで

char(&moveup())[3][3] 
{ 
    for (int i=0; i<3; i++) { 
     for (int j=0; j<3; j++) { 

      if (board[i][j]=='X' && board[i-1][j]=='!') { 
       board[i][j]='!'; 
       board[i-1][j]='X'; 
      } 
     } 
    } 
    return board; 
} 

は参照によって配列を渡す完全なプログラムです。参照はポインタと寸法に減衰していないと型が保存されているので、我々は今の要素を反復処理するループのためのベースの範囲を使用する方法注意:

#include <iostream> 
#include <vector> 

class Board { 

public: 
    char(&moveup())[3][3] 
    { 
     for (int i=0; i<3; i++) { 
      for (int j=0; j<3; j++) { 

       if (board[i][j]=='X' && board[i-1][j]=='!') { 
        board[i][j]='!'; 
        board[i-1][j]='X'; 
       } 
      } 
     } 
     return board; 
    } 

    char board[3][3]; 
}; 



int main() 
{ 
    Board board{ 
     '.','!','x', 
     'o','X','x', 
     '.','o','x' 
    }; 

    auto& sameboard = board.moveup(); 

    for (auto& row : sameboard) { 
     for (auto& element : row) { 
      std::cout << element; 
     } 
     std::cout << '\n'; 
    } 

    return 0; 
} 
1

ベクトルを渡してこの関数に入力します。

関連する問題