2016-02-04 1 views
-1

J'ai essayé de résoudre ce problème pendant plus d'une semaine. Ma mission est de cout (affichage) un grand tableau-morpion qui ressemble à ceci:Tic-Tac-Toe Carte BIG utilisant des fonctions et des tableaux 2D

0000 | 1111 | 2222 
0000 | 1111 | 2222 
0000 | 1111 | 2222 
0000 | 1111 | 2222 
------------------ 
3333 | 4444 | 5555 
3333 | 4444 | 5555 
3333 | 4444 | 5555 
3333 | 4444 | 5555 
------------------ 
6666 | 7777 | 8888 
6666 | 7777 | 8888 
6666 | 7777 | 8888 
6666 | 7777 | 8888 

Certaines fonctions proposées dans les instructions sont: « populateBigArray() // remplit le tableau 12X12 avec vales 0-8 assignValueToBigArray() // utilisé pour remplir la section 4X4 du tableau 12X12 qui correspond à un mouvement spécifique par l'homme ou l'ordinateur "

Je sens que je comprends les tableaux 2D et je suis capable de imprime un bloc de 4 x 4 chiffres. Cependant, tout ce que j'essaie fait que les blocs s'impriment directement, pas dans une structure 3x3 ou dans l'impression de tous les numéros sur une longue ligne. Le plus proche que j'ai obtenu est la fonction ci-dessous, cependant, ce n'est pas exactement en utilisant un tableau 2D qui est le point de l'affectation, et je sais essayer de manipuler un endroit une fois que le joueur l'a choisi n'est pas vraiment possible avec ça.

//Global constants 
const int BOARD_ROWS = 3; 
const int BOARD_COLS = 3; 
int main() 
{ 
    displayBoard(); 
    return 0; 
} 
    void displayBoard() 
    { 
     int spot = 0; 
     for (int row = 0; row < BOARD_ROWS; row++) 
     { 
      for (int col = 0; col < BOARD_COLS; col++) 
      { 
       cout << spot << spot << spot << spot 
        << " | " << (spot + 1) << (spot + 1) << (spot + 1) << (spot + 1) 
        << " | " << (spot + 2) << (spot + 2) << (spot + 2) << (spot + 2) 
        << endl; 
      } 
      cout << "------------------" << endl; 
      spot = spot + 3; 
     } 
    }//end displayBoard 

Je suis définitivement un débutant et apprécie toute aide. Merci!!!

+2

Lorsque vous utilisez le débogueur et exécuté les déclarations une à la fois, quelle déclaration cause le problème? –

+0

[Fonctionne ici] (http://ideone.com/0o7dCe). Quel est votre problème en fait? Que vous avez oublié de fournir une déclaration pour 'void displayBoard();' avant main? –

Répondre

0

Eh bien, vous ne l'avez pas écrit les fonctions proposées, ni utilisé un tableau 2D, « qui est le point de la mission » comme vous le dites ...

Peut-être que vous pouvez commencer à partir du tableau 2D et voir comment les fonctions peuvent ressembler à:

#include <iostream> 
using std::cout; 

const int BOARD_SIZE = 3; 
const int SECTION_SIZE = 4; 
constexpr int BIG_ARRAY_DIM = BOARD_SIZE * SECTION_SIZE; 

void populateBigArray(int b[][BIG_ARRAY_DIM]); 
void assignValueToBigArray(int b[][BIG_ARRAY_DIM], int r, int c, int val); 
void printBigArray(int b[][BIG_ARRAY_DIM]); 

int main() { 
    int board[BIG_ARRAY_DIM][BIG_ARRAY_DIM]; 

    populateBigArray(board); 

    printBigArray(board); 
    return 0; 
} 

Ensuite, vous pouvez mettre en œuvre ces fonctions, à commencer par quelque chose comme ceci:

void populateBigArray(int b[][BIG_ARRAY_DIM]) { 
    int k = 0; 
    for (int i = 0; i < BOARD_SIZE; ++i) { 
     for (int j = 0; j < BOARD_SIZE; ++j) { 
      assignValueToBigArray(b,i,j,k); 
      ++k; 
     } 
    } 
} 

void assignValueToBigArray(int b[][BIG_ARRAY_DIM], int r, int c, int val) { 
    int row = r * SECTION_SIZE; 
    int col = c * SECTION_SIZE; 
    for (int i = 0; i < SECTION_SIZE; ++i) { 
     for (int j = 0; j < SECTION_SIZE; ++j) { 
      b[row + i][col + j] = val; 
     } 
    } 
} 

void printBigArray(int b[][BIG_ARRAY_DIM]) { 
    for (int i = 0, l = 1; i < BIG_ARRAY_DIM; ++i, ++l) { 
     for (int j = 0, k = 1; j < BIG_ARRAY_DIM; ++j, ++k) { 
      cout << b[i][j]; 
      if (k == SECTION_SIZE) { 
       if (j == (BIG_ARRAY_DIM - 1)) { 
        cout << '\n'; 
       } else { 
        cout << " | "; 
        k = 0; 
       } 
      } 
     } 
     if (l == SECTION_SIZE && i != (BIG_ARRAY_DIM - 1)) { 
      cout << "------------------\n"; 
      l = 0; 
     } 
    } 
} 
+0

Merci. J'ai écrit plusieurs versions qui utilisaient un tableau 2D, cependant, la sortie n'était pas très proche de cela. Les blocs seraient simplement alignés les uns sous les autres ou je n'aurais qu'une seule ligne, pas un bloc 3x3 de numéros 4x4. Le code que j'ai posté était la seule version qui affichait le tableau correctement, bien que je n'aurais pas été capable de le manipuler. J'apprécie ton aide. J'étais dans la crainte de la fonction assignValueToBigArray. –

+0

@VanidadVelour Vous êtes les bienvenus, content que vous l'ayez aimé. Si vous pensez que cela répond à votre question, vous pouvez [accepter] (http://stackoverflow.com/help/accepted-answer) ou upvote si vous le trouvez utile. –