2017-02-23 2 views
-4

Je sais dessiner un rectangle en C++, mais je ne sais pas comment écrire à l'intérieur de ce rectangle - ou de n'importe quelle forme.créer des formes avec du texte à l'intérieur en C++

int rows = 10, cols = 10; 
for (int x = 0; x<rows; x++) { 
    for (int y = 0; y<cols; y++) { 
     if (x == 0 || x == 9 || y == 0 || y == 9) { 
      cout << "*"; 

     } 

     else { 
      cout << " "; 
     } 
     cout << "Hello"; 
    } 

    cout << endl; 
} 
+0

Vous avez oublié de poser une question. – George

+1

Plutôt que d'imprimer "", imprimez du texte et voyez ce qui se passe. –

+0

Débogueur. Apprenez à utiliser un débogueur. Un débogueur vous permettra de voir chaque ligne telle qu'elle est imprimée. –

Répondre

0

Vous pouvez avoir vecteur de chaînes et « dessiner » votre image/texte là:

int rows = 10, cols = 10; 
std::vector<std::string> strs(rows, std::string(cols, ' ')); 
for (int x = 0; x<rows; x++) 
    for (int y = 0; y<cols; y++) 
     if (x == 0 || x == 9 || y == 0 || y == 9) 
      strs[y][x] = '*'; // only issue you have to address row/column not column/row 

std::string text = "foo"; 
strs[rows/2].replace((cols - text.length())/2, text.length(), text); 

for(const auto &str : strs) 
    std::cout << str << std::endl; 

live example

vous pouvez aller de fantaisie et l'envelopper dans la classe et ajouter des méthodes comme mettre le texte verticalement, diagonalement etc.

1

Vous n'irez pas très loin sans une bibliothèque de console telle que curses ou conio qui vous permet d'écrire sur x, y sur la fenêtre de la console s. C++ stdout est basé sur les flux, il est conçu pour un monde où la sortie de texte est un télétype. Alors que vous pouvez passer des écrans qui contiennent du texte intégré, c'est presque un abus du système.

Pendant ce temps, configurez un tampon d'écran 80 x 25. Ensuite, écrivez le code pour l'imprimer. Ensuite, vous pouvez sortir les caractères à x, y de votre choix dans ce tampon, puis imprimer le lot entier en utilisant votre routine d'impression de tampon.