2017-08-15 2 views
-5

私はC++のテキストゲームを作っていますが、とにかくテキストヘルスバーを作るにはどうしようもありませんでした。 '{'は開始点、 '}'はヘルスバーの終了点、 ':'は健康状態なので、{:::::::}のようになります。だから私は}、健康が減算されるときにそれがどこにとどまるかを望みます。あなたはこれについてどうやって行きますか?C++テキストのヘルスバーを作る方法

私が以前に試したことは、あなたの強さで分けた健康に基づいて ':'を繰り返していましたが、 '}'は ':'の後に続きます。私はスペースの量を繰り返すためのforループを持っていました - 健康状態をどれくらいのスペースがあるべきかに応じて、文字を印刷してください。しかし、これらの方法のどれも働いていません。

どのようにすれば、均一な長さを保つためにスペースで取り除くコロンを置き換えますか?

+2

何を試してみましたか? [編集]あなたの質問に[mcve]を含めることを検討してください – Tas

+0

一般的に何かを作るためにそれを試してみる必要があります。 –

+1

カーソルの位置を変更する必要がある場合は、* cursor positioning *ライブラリを使用する必要があります。 '\ r'を使ってキャリッジを行の先頭に戻すことができますが、コンソール(端末)のエミュレーションに依存します。 –

答えて

1

強度ポイントごとに:を印刷し、残りのスペース(容量)を入力する必要があります。いくつかの方法があります。

方法1:ループ

cout << '{'; 
for (unsigned int i = 0; i < capacity; ++i) 
{ 
    if (i < strength) 
    { 
    cout << ':'; 
    } 
    else 
    { 
    cout << ' '; 
    } 
} 

方法2:反復文字のストリング

const std::string strength_text(strength, ':'); 
const std::string filler_text(capacity-strength, ' '); 
cout << '{'; 
cout << strength_text << filler_text; 
cout << '}'; 

方法3:設定フィールド幅

const std::string strength_text(strength, ':'); 
cout << '{'; 
cout << setw(capacity) << strength_text; 
cout << '}'; 

setw修飾子を調べて、右詰めまたは左詰めの充填を実行するかどうかを調べる必要があります。

その他の方法には、外部ライブラリが必要なカーソルの配置が含まれます。

+0

なぜdownvote?私は3つの例を提供しました。 –

関連する問題