2017-08-15 70 views
-5

我正在C++中製作一些文本遊戲,無論如何,我想知道如何製作文本健康欄。 '{'是開始,'}'是健康狀況欄的終點,':'是健康狀況,因此它使得{_:::::}這樣的內容。所以我想讓這個}保持在它減去健康的地方。你會如何去做這件事?C++如何使文本健康欄

我以前試過的是重複':',根據健康除以你的實力,但'}'將遵循':'。我曾試圖做一個for循環來重複大量的空間 - 健康,並打印出一個字符'',這取決於應該有多少空間。但是這些方法都沒有奏效。

所以你會如何將我用空格取出的冒號替換爲保持統一的長度。

+2

你有什麼嘗試過,那麼它不起作用?考慮[編輯]你的問題,以包含[mcve] – Tas

+0

一般來說,你需要嘗試做出一些事情。 –

+1

如果您需要重新定位光標,則需要使用*光標定位*庫。您可以使用'\ 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個例子。 –