2016-03-09 51 views
-1

我的任務是使用數組在我的編程類中創建一個Sudoku遊戲。我正在用C++創建一個數獨遊戲,我需要顯示遊戲板。我如何顯示一個數組與charcters分隔?

我做了一個非常凌亂嘗試顯示9x9陣列與「 - 」之間的3x3廣場。

代碼編譯但板的顯示已關閉,「 - 」位於它不應該放置的位置,有時不應該放在該位置。

我對C++相當陌生,感謝您的幫助!以下是我對顯示功能:

for (int x = 0; x < 11; x++) 
{ 
for (int y = 0; y < 11; y++) 
{ 
    if(board[x][y] == 0) 
    { 
     cout << setw(2) << " "; 
    } 
    else 
    { 
    if (x > 3 && x < 7 && y > 3 && y < 7 && board[x-1][y-1] != 0) 
    { 
     cout << setw(2) << board[(x-1)][(y-1)] << " "; 
    } 
    else if (x > 3 && x < 7 && y < 3 && board[x-1][y] != 0) 
    { 
     cout << setw(2) << board[(x-1)][(y)] << " "; 
    } 
    else if (x > 7 && y < 3 && board[x-2][y] != 0) 
    { 
     cout << setw(2) << board[(x-2)][(y)] << " "; 
    } 
    else if (x < 3 && y > 3 && y < 7 && board[x][y-1] != 0) 
    { 
     cout << setw(2) << board[(x)][(y-1)] << " "; 
    } 
    else if (x < 3 && y > 7 && board[x][y-2] != 0) 
    { 
     cout << setw(2) << board[(x)][(y-2)] << " "; 
    } 
     else if (x > 3 && x < 7 && y > 7 && board[x-1][y-2] != 0) 
    { 
     cout << setw(2) << board[(x-1)][(y-2)] << " "; 
    } 
    else if (x > 7 && y > 7 && board[x-2][y-2] != 0) 
    { 
     cout << setw(2) << board[(x-2)][(y-2)] << " "; 
    } 
    else if (x > 7 && y > 3 && y < 7 && board[x-2][y-1] != 0) 
    { 
     cout << setw(2) << board[(x-2)][(y-1)] << " "; 
    } 

    else if (x < 3 && y < 3) 
    { 
     cout << setw(2) << board[x][y] << " "; 
    } 
    else 
    { 
     cout << setw(2) << "-" << " "; 
    } 
    } 
} 
cout << endl; 
} 
+0

找出程序不工作的最佳方法是使用**調試器**。 –

+0

你說你的程序是一個9x9的數組,那麼爲什麼你的for循環從0到11? – kfsone

+0

您需要將_view_數據與_model_分開。董事會應該存儲爲整數,這就是數獨數字。 9x9網格,具體來說。然後,你應該寫一個函數來把這個網格轉換成你想要的格式。 – Tanner

回答

0

我不明白的複雜性:

static const char row_separator[] = 
    "+---+---+---+---+---+---+---+---+---+\n"; 
for (unsigned int board_row = 0; board_row < 9; ++board_row) 
{ 
    std::cout << row_separator; 
    cout << "| "; 
    for (unsigned int board_column = 0; 
     board_column < 9; 
     ++board_column) 
    { 
     std::cout << board[board_row][board_column] << " |"; 
    } 
    cout << "\n"; 
} 
std::cout << row_separator; 

許多sudoko板聲明:

unsigned int board[9][9]; 

因爲它是一個2維陣列,可以使用2個for循環打印所有插槽。

使電路板成爲具有空格和其他字符的字符數組會使程序複雜化。保留印刷功能的間距。

+0

應該'std :: cout << board [board_row] [board_column] <<「|」;'是'std :: cout << board [board_row] [board_column] <<「|」;''後面有空格|使對齊正確? – Tuffwer

+0

@Tuffwer:可能是,我沒有測試過代碼。 –

相關問題