1

だから私はこれが本当に初めてで、関数でローカル変数を渡す方法を考えていました(初期化に関して)。たとえば、for ループで使用する 2 つの変数 (t_row と t_column) を宣言して初期化する 1 つの関数 (move) があり、そのループ内に、特定の条件が満たされた場合に呼び出される別の関数 (swap) があります。 . これらの変数をスワップ関数で使用するにはどうすればよいですか。それらを宣言する必要があることはわかっていますが、swap 関数でのそれらの初期化は、for ループ swap のどの反復が呼び出されたかによって異なります。助けてくれてありがとう!

bool move(int tile)
{
    for (int t_row = 0; t_row < d; t_row++)
    {
        for (int t_column = 0; t_column < d; t_column++)
        {
            if (tile == board[t_row][t_column])
            {
                if (0 < t_row && board[t_row - 1][t_column] == 0)
                {
                    swap(t_row - 1, t_column);
                    return true;
                }
            }
        }
    }
        return false;
}

void swap(int row_new, int column_new)
{
    int t_row;
    int t_column;        
    int hold = board[t_row][t_column];
    board[t_row][t_column] = 0;
    board[row_new][column_new] = hold;
}
4

1 に答える 1

3

これを行う最も簡単な方法は、古い行と列の値を渡すことです。

void swap(int row_new, int col_new, int row_old, int col_old) {
    int hold = board[row_old][col_old];
    board[row_old][column_old] = 0;
    board[row_new][column_new] = hold;
}
于 2016-09-20T20:14:55.663 に答える