我正试图在一个小而非常基本的游戏中向屏幕显示一个分数。
我使用此功能显示单词Score:
:
void drawBitmapText(char *string, int score, float r, float g, float b, float x,float y,float z) {
char *c;
glColor3f(r,g,b);
glRasterPos3f(x,y,z);
for (c=string; *c != '\0'; c++) {
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, *c); }
}
我使用:function()
drawBitmapText("score: ",score,0,1,0,10,220,0);
它成功地显示了单词Score:
并在正确的位置,但我遇到的问题是包含代表其旁边分数的实际int
。
如何合并要显示的int
?我成功通过了。
我尝试将其转换为string/char
并添加/连接它但它只显示随机字母...谢谢。
答案 0 :(得分:1)
由于您正在使用C ++,因此开始使用C ++库来处理字符串会更容易。您可以使用std::stringstream
来连接标题和分数。
using namespace std;
void drawBitmapText(string caption, int score, float r, float g, float b,
float x,float y,float z) {
glColor3f(r,g,b);
glRasterPos3f(x,y,z);
stringstream strm;
strm << caption << score;
string text = strm.str();
for(string::iterator it = text.begin(); it != text.end(); ++it) {
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, *it);
}
}
答案 1 :(得分:0)
使用std::stringstream
例如
std::stringstream ss;
ss << "score: " << score;
然后致电
ss.str().c_str();
输出c字符串
答案 2 :(得分:0)
您可以使用snprintf
创建格式化字符串,就像使用printf将格式化字符串打印到控制台一样。这是重写它的一种方法:
void drawBitmapText(char *string, int score, float r, float g, float b, float x,float y,float z) {
char buffer[64]; // Arbitrary limit of 63 characters
snprintf(buffer, 64, "%s %d", string, score);
glColor3f(r,g,b);
glRasterPos3f(x,y,z);
for (char* c = buffer; *c != '\0'; c++)
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_10, *c);
}