【发布时间】:2017-08-10 12:18:08
【问题描述】:
我一直在开发 Pong 克隆游戏。快完成了,就在我认为一切都完美的时候。 SDL_ttf.h 库似乎很痛苦。
为了简单起见,我将给出一个总体概述,而不是整个代码。 我用过-
int PlayerScore=0;
int AIScore=0;
这是在 SDL 中呈现文本的语法。
SDL_Surface *TTF_RenderText_Solid(TTF_Font *font, const char *text, SDL_Color fg);
现在,看到 const char* 文本了吗?那就是我需要在那里提供我的 PlayerScore/AIScore 的地方。 PlayerScore/AIScore 是整数类型,但它们应该是 const char* 类型。因此,经过数小时的浏览和研究,我发现有这个 sstream 库可以用来将整数转换为 const char*
我声明我的表面为 imgTxt;
SDL_Surface* imgTxt;
std::stringstream strm;
strm << PlayerScore;
...
imgTxt = TTF_RenderText_Solid( font, strm.str().c_str(), fColor );
SDL_BlitSurface(imgTxt,NULL,screen,null);
你猜怎么着?转换成功。但是我遇到了一个不同的问题,就在我擦掉表面的时候。它将分数显示为 0000000000000000000000000000 并继续运行,一段时间后字体消失并且没有任何反应。 我不知道为什么会这样,也许字符串在每个循环中都附加了分数?这是屏幕截图。
对于为什么会发生这种情况,有什么解决方案吗?任何帮助将不胜感激。提前致谢。
【问题讨论】: