SDL:制作静态文本变量
SDL: Making Static Text Variables
我正在使用SDL制作扫雷器,因此我必须使用文本将每个图块标记为代表该瓷砖周围有多少矿山的数字。我现在将使用数字1-4,并且显示每个数字的方式是恒定的,因为每个数字始终具有相同的文本,字体,大小和颜色。颜色在数字1-4中的每个之间有所不同,但是数字1始终是蓝色的,数字2始终是绿色的。我想为1-4中的每个数字都有一个静态变量,以便可以轻松地设置瓷砖的值。这是我所做的:
std::map<std::string, Text> Text::numbers; // statically defined
Text::Text(...) {
...
initNumbers();
}
void Text::initNumbers() {
numbers["1"] = Text("res/arial.ttf", 20, "1", { 0, 0, 255, 255 });
numbers["2"] = Text("res/arial.ttf", 20, "2", { 0, 255, 0, 255 });
numbers["3"] = Text("res/arial.ttf", 20, "3", { 255, 0, 0, 255 });
numbers["4"] = Text("res/arial.ttf", 20, "4", { 0, 0, 150, 255 });
}
Text
类仅用于制作文本并将其放在屏幕上。无论如何,我制作了一个称为numbers
的std::map
,我可以如下访问:Text::numbers["2"]
,它将返回一个文本对象,在这种情况下,该对象将显示为数字2。我通过在Text
类的构造函数中调用initNumbers()
来初始化地图。
在瓷砖类中,有一个成员变量Text number
,用于显示该图块对象周围的矿山的数字(1-4)。例如,当我将其初始化为Text::numbers["2"]
时,该数字不会显示在屏幕上。当我手动将其初始化为Text("res/arial.ttf", 20, "2", { 0, 255, 0, 255 })
时,数字确实会显示。
我无法弄清楚问题是什么或如何解决此问题。也许这与TTF_Init()
被调用时有关;即,在std::map<...> numbers
初始化之后,它会被调用(这是不好的(因为在库初始化后需要初始化文本)。尽管我本质上是在main
开始时调用TTF_Init()
,但之后才开始制作瓷砖对象。有什么建议么?谢谢。
initNumbers
在构造Text
对象时被调用。如果您从不创建使用该构造函数的Text
对象,则不会发生numbers
的初始化。
Text::initNumbers
应与其他应用程序初始化代码一起调用。
- 如何使用文件中的文本,例如变量
- C++将文本从.txt文件解析为变量
- 遍历对象向量,并找到与从文本文件中提取的对象匹配的变量
- 文本 0 和 0 作为变量如何使用函数 __builtin_clz 产生不同的行为?
- 在C++中,从构造函数中将字符串文本分配给成员const char*变量时会发生什么
- 为什么 mfc 中静态文本工具中的变量未定义
- c++ 添加具有写入文件错误的文本变量
- 将文本文件读入类变量 - c++
- C++文本宏中的字符串变量
- 如何从文本文件中读取一行并将其分为不同的变量
- 是否有一种方法可以从文本文件中读取并将单个数据存储为不同的变量
- c ofstream写入变量到文本文件中
- 尝试使用文本文件初始化多个结构变量
- 如何在C++的文本变量中添加变量值
- fstream 变量获取文本文件中的所有行
- 声明具有常量引用与常量变量的常量文本字符串
- SDL:制作静态文本变量
- 如何在 Cv::Mat 图像中放置一些文本(变量)
- opengl在屏幕菜单上打印文本变量
- 在编译的代码中包含一个大的文本变量是个好主意吗