game scoring

Started by
2 comments, last by phil67rpg 11 years, 1 month ago
I am almost done with my breakout game. I have a small problem with the scoring system. I have been able to print to the screen the numbers used in scoring. Basically I can print out 100 and then overwrite it with 200 points. What want to do is print the number then print black numbers to overwrite the text and then print the next highest score. here is my code.

void drawBitmapText(char *string,float x,float y,float z)
{
	char *c;
	glRasterPos3f(x, y,z);
	for (c=string; *c != '\0'; c++)
	{
		glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, *c);
	}
}

void brick_collision()
{
	GLint n=0;
	if(bricks[2][4]==true)
	{
		n+=100;
		str=itoa(n,buffer,10);
		drawBitmapText(str,4.0f,2.0f,0.0f);
	}
	if(bricks[2][3]==true)
	{
		n+=100;
		str=itoa(n,buffer,10);
		drawBitmapText(str,4.0f,2.0f,0.0f);
	}
	if(bricks[2][2]==true)
	{
		n+=100;
		str=itoa(n,buffer,10);
		drawBitmapText(str,4.0f,2.0f,0.0f);
	}
	if(bricks[2][1]==true)
	{
		n+=100;
		str=itoa(n,buffer,10);
		drawBitmapText(str,4.0f,2.0f,0.0f);
	}
	if(bricks[2][0]==true)
	{
		n+=100;
		str=itoa(n,buffer,10);
		drawBitmapText(str,4.0f,2.0f,0.0f);
	}
 
Advertisement

Because the first thing you do before you start drawing is clear your back buffer so that non of the old frame is there any more, you need to issue two draw calls for your effect one with the old score and one with your new score.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

how do you clear the back buffer?

well I have almost solved my problem. here is my code all I need is some tweaking

void
 
 
drawBitmapText(char *string,float x,float y,float z) 
{ 
char
 
 
*c;
glPushAttrib(
 
GL_CURRENT_BIT);
glColor3f(1.0f,1.0f,1.0f);
glRasterPos3f(
 
x, y,z);
for
 
 
(c=string; *c != '\0'; c++) 
{
glutBitmapCharacter(
 
GLUT_BITMAP_TIMES_ROMAN_24, *c);
}
glPopAttrib();
}
void
 
 
drawBitmapText_clear(char *string,float x,float y,float z) 
{ 
char
 
 
*c;
glPushAttrib(
 
GL_CURRENT_BIT);
glColor3f(0.0f,0.0f,0.0f);
glRasterPos3f(
 
x, y,z);
for
 
 
(c=string; *c != '\0'; c++) 
{
glutBitmapCharacter(
 
GLUT_BITMAP_TIMES_ROMAN_24, *c);
}
glPopAttrib();
}
void
 
 
brick_collision()
{
 
 
GLint n=0;
 
 
if(bricks[2][4]==true)
{
n+=100;
str=itoa(n,buffer,10);
drawBitmapText_clear(str,0.0f,2.0f,0.0f); 
drawBitmapText(str,0.0f,2.0f,0.0f);
}
 
 
if(bricks[2][3]==true)
{
n+=100;
str=itoa(n,buffer,10);
drawBitmapText_clear(str,0.0f,2.0f,0.0f); 
drawBitmapText(str,0.0f,2.0f,0.0f); 
}
 
 
if(bricks[2][2]==true)
{
n+=100;
str=itoa(n,buffer,10);
drawBitmapText_clear(str,0.0f,2.0f,0.0f); 
drawBitmapText(str,0.0f,2.0f,0.0f); 
}
 
 
if(bricks[2][1]==true)
{
n+=100;
str=itoa(n,buffer,10);
drawBitmapText_clear(str,0.0f,2.0f,0.0f); 
drawBitmapText(str,0.0f,2.0f,0.0f); 
}
 
 
if(bricks[2][0]==true)
{
n+=100;
str=itoa(n,buffer,10);
drawBitmapText_clear(str,0.0f,2.0f,0.0f); 
drawBitmapText(str,0.0f,2.0f,0.0f); 
}
 
 

This topic is closed to new replies.

Advertisement