Печать колоды карт бок о бок

0

У меня есть карточная колода, которая будет печатать карты на терминале по одному за раз. Однако из-за того, как работает терминал, они печатаются вертикально. Есть ли способ или функция, чтобы заставить их печатать бок о бок? Вот пример моего кода.

cout << "---------" << endl;
cout << "|"<<"6"<<setw(7)<<"|"<<endl;
cout << "|"<<setw(4)<< "S" << setw(6)<<"S"<<setw(2)<<"|"<<endl;
cout << "|"<<setw(8)<<"|"<<endl;
cout << "|"<<setw(8)<<"|"<<endl;
cout << "|"<<setw(4)<< "S" << setw(6)<<"S" <<setw(2)<<"|"<<endl;
cout << "|"<<setw(8)<<"|"<<endl;
cout << "|"<<setw(8)<<"|"<<endl;
cout << "|"<<setw(4)<< "S" << setw(6)<<"S"<<setw(2)<<"|"<<endl;
cout << "|"<<setw(7)<<"6"<<"|"<<endl;
cout << "---------" << endl;
  • 4
    Вы знаете, что endl перемещает вас на следующую строку, верно?
Теги:
console
output

2 ответа

0

В поток нет ничего, что могло бы помочь вам печатать вещи по размеру, но вы могли бы представлять каждую карту как массив форматированных std::strings а затем печатать карты бок о бок, печатайте каждую строку для всех карт. Например:

class card {
public:
    std::string get_row(int row) const {
        switch (row) {
            case 0: case 10: return "---------";
            case 1: return "|6      |";
            // ...
        }
    }
    // ...
};
std::vector<card> deck;
// fill the deck
for (int i(0); i != 11; ++i) {
    for (auto const& card: deck) {
        std::cout << card.get_row(i);
    }
    std::cout << '\n';
}

Очевидно, что вы не хотите форматировать карту из константы, но я хотел передать идею, а не заблудиться в деталях форматирования каждой карты. Конечно, вы не хотите использовать std::endl но это боковое шоу.

  • 0
    хм .. интересно. Я должен изучить это больше.
0

endl вставляет символ новой строки и очищает выходной поток. Если вы хотите вставить новую строку, вы можете использовать символ "\n". Если вы хотите очистить его (что я сомневаюсь, вы хотите), вы можете использовать std :: flush, и если вы не хотите ни одного из этих двух, вам не нужны std :: endl, '\n' или std :: flush, поэтому вы делаете не использовать их.

Что такое C++ iostream endl fiasco?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню