2017-08-15 3 views
-5

Ich mache etwas in C++, ein Textspiel, um genau zu sein, jedenfalls fragte ich mich, wie würde ich eine Text Health Bar machen. '{' ist der Anfang, '}' ist der Endpunkt der Gesundheitsbalken, ':' ist der Gesundheitszustand und macht so etwas wie {:::::::}. Also möchte ich das}, wo es ist, wenn die Gesundheit subtrahiert wird. Wie würdest du das machen?C++ Wie mache ich Text Gesundheit bar

Was ich vorher versucht habe, war ein ':' zu wiederholen, basierend auf der Gesundheit geteilt durch deine Stärke, aber das '}' würde dem ':' folgen. Ich hatte versucht, eine for-Schleife zu haben, um die Anzahl der Leerzeichen zu wiederholen - Gesundheit, und einen Buchstaben '' auszudrucken, abhängig davon, wie viel Platz es sein sollte. Aber keine dieser Methoden hat funktioniert.

Also, wie würdest du die Doppelpunkte, die ich nehme, durch Leerzeichen ersetzen, um eine einheitliche Länge zu behalten.

+2

Was haben Sie versucht, und was ist damit nicht funktioniert? Überlegen Sie, ob Ihre Frage eine [mcve] – Tas

+0

enthält, um etwas zu erstellen. –

+1

Wenn Sie den Cursor neu positionieren müssen, müssen Sie eine Bibliothek * Cursor-Positionierung * verwenden. Sie können möglicherweise '\ r' verwenden, um den Wagen an den Anfang der Zeile zurückzugeben, hängt jedoch von der Konsolen (Terminal) -Emulation ab. –

Antwort

1

Sie müssen für jeden Stärkepunkt : drucken und die restlichen mit Leerzeichen (Kapazität) füllen. Es gibt mehrere Methoden.

Methode 1: Die Schleife

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

Methode 2: String von wiederholten Zeichen

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

Methode 3: Einstellen Feldbreite

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

Sie sollten den Modifikator setw untersuchen, um zu sehen, ob er eine rechtsbündige oder linksbündige Füllung durchführt.

Andere Methoden beinhalten Cursorpositionierung, die eine externe Bibliothek erfordert.

+0

Warum der Downvote? Ich habe 3 Beispiele geliefert. –