我正在用C ++制作一些东西,一个准确的文字游戏,无论如何我想知道如何制作一个Text Health Bar。 ' {'是开始,'}'是健康栏的终点,':'是健康,所以它像{:::::::}。所以我希望},在减去健康时保持原样。你会怎么做呢?
我之前尝试过的是重复一次':',根据生命值除以你的力量,但是'}'会遵循':'。我试图让一个for循环来重复空格 - 健康,然后打印出一个字符' '取决于应该有多少空间。但这些方法都没有奏效。
那么你如何用空格替换冒出的冒号以保持统一的长度。
答案 0 :(得分: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
修饰符,看它是否执行右对齐或左对齐填充。
其他方法涉及光标定位,这需要一个外部库。