2017-09-10 13 views
0

ポーカーを作るために使うデッキを作る必要があります。カードを並べて表示する

void deck::cardKing(){ 
cout << "----------" << endl; 
cout << "|K " << setw(7) << "|" << endl; 
cout << "|" << setw(9) << "|" << endl; 
cout << "|" << setw(9) << "|" << endl; 
cout << "|" << setw(9) << "|" << endl; 
cout << "|" << setw(9) << "|" << endl; 
cout << "|" << setw(9) << "|" << endl; 
cout << "|" << setw(9) << "|" << endl; 
cout << "|" << setw(9) << "|" << endl; 
cout << "|" << setw(9) << "K|" << endl; 
cout << "----------" << endl; 
} 

私の問題は、今のように私はプリントアウトしたときにということである:私はそうのように定義されたカードの出力を持つ

---------- 
|K  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  K| 
---------- 

:画面上でプリントアウトしたときに、私はこのように見えるようにカードを作成しましたそのような彼らはダウン(垂直)ラインであり、全体のデッキ:私はそうのようにそれらを表示する必要が

---------- 
|3  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  3| 
---------- 
---------- 
|10  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  10| 
---------- 
---------- 
|K  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  | 
|  K| 
---------- 

--------- --------- 
|K  | |2  | 
|  | |  | 
|  | |  | 
|  | |  | 
|  | |  | 
|  | |  | 
|  | |  | 
|  | |  | 
|  K| |  2| 
--------- --------- 

カードを縦置きではなく横置きで表示するにはどうすればよいでしょうか?カードをスクリーンに印刷するのではなく、写真を使用することはできますか?この周り

+0

すべてのカードを一度に描画するか、端末のカーソル位置を制御する機能が必要です。後者は標準のC++関数を使って行うことはできません。そのためには_ncurses_のようなライブラリが必要です。 – user0042

+0

「カードの絵を使うことはできますか?」というのは、GUIフレームワークでは、簡単だと言っています。 –

+0

@MartinJames私の教授は、Linux上の端末にカードの画像を表示している人の例を示しました。このプロジェクトは、ターミナルにあります、とにかくこれを行うにはありますか? –

答えて

1

一つの方法は、あなたが必要なときにcardline

void Deck::CardKing() 
{ 
    cardline[eEdge] << "--------- "; 
    cardline[eTop] << "|K  | "; 
    cardline[eMid] << "|  | "; 
    cardline[eBot] << "|  K| "; 
} 

を更新し、代わりに、画面への書き込み、各カードについて各ライン

enum { eEdge, eTop, eMid, eBot, eMax }; 
std::ostringstream cardline[eMax]; 

の内容を集めることであろうあなたはカード

0の新しい行をしたいとき、そして、

std::cout << cardline[eEdge].str() << std::endl; 
std::cout << cardline[eTop].str() << std::endl; 
for (int ii = 2; ii < 9; ++ii) 
    std::cout << cardline[eMid].str() << std::endl; 
std::cout << cardline[eBot].str() << std::endl; 
std::cout << cardline[eEdge].str() << std::endl; 

を印刷します

for (int ii = 0; ii < eMax; ++ii) 
    cardline[ii].str(); 
関連する問題