gpt4 book ai didi

c++ - 如何在 C++ 中将给定数字显示为图形数字

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:00 26 4
gpt4 key购买 nike

我有一个关于将数字打印为图形元素的严重问题,我使用 c++ 开发了一个游戏,面向对象编程,当玩家获胜时他会获得一定的分数,所以我想按顺序转换这些点图形数字。

例如:

首先,玩家有 0 分。他赢得了 1 级并获得 100 分,所以我想像这样显示 4 位数字:

  1. 首先:0000

enter image description here

  1. 获胜:100 分到 0100

enter image description here

游戏使用整数,我所做的是:创建一个图形数组,其中包含从 0 到 9 的所有图形数字。

gGraphic digits[10];

gGraphic 是创建和绘制对象的类..,因此 digits[0] 是表示 0 的图形元素,digits[1] 表示 1, digits[2] 表示 2...连续...例如,如果我想绘制数字 1,如 0001,这就是我所做的:

digits[0].draw(Xposition, Yposition);
digits[0].draw(Xposition + digits[0].ObtainScaleX(), Yposition);
digits[0].draw(Xposition + digits[0].ObtainScaleX()*2, Yposition);
digits[1].draw(Xposition + digits[0].ObtainScaleX()*3, Yposition);

如您所见,我没有更改位置 Y,但我更改了位置 X,这样我可以获得 X 轴上表示的数字序列,函数 ObtainScaleX() 返回对象的宽度比例。

问题是我怎么能得到 1000 分、1234 分或 3409 分???,有成千上万种可能性,if 语句或 switch case 行不通,我真的需要一个解释,一个基本的想法,我必须使用指针吗?

最佳答案

对于您的问题,最简单的解决方案是将有问题的数字转换为 std::string 并从转换后的字符值中检索单个数字:

std::ostringstream oss;
oss << value;
int scale = 0;
for(std::string::const_iterator it = oss.str().begin();
it != oss.str().end();
++it, ++scale) {
int drawDigitIndex = *it - `0`;
digits[drawDigitIndex].draw(Xposition +
digits[drawDigitIndex].ObtainScaleX() * scale
, Yposition);
}

关于c++ - 如何在 C++ 中将给定数字显示为图形数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29974247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com