I am trying to make a 2d game like mario.and I am doing a collision detection of the player with the bricks.so I made a class bricks.
here it is:
Code:
// CLASS BRICKS
class bricks{
float b_a;
float b_b;
public:
bricks(){};
//drawing brick function
void draw_brick(float brick_a,float brick_b){
b_a=brick_a;
b_b=brick_b;
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,_textureId_bricks);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glBegin(GL_POLYGON);
glTexCoord2f(0.0, 0.0);
glVertex2f(100.0+brick_a,100.0+brick_b);
glTexCoord2f(1.0, 0.0);
glVertex2f(200.0+brick_a,100.0+brick_b);
glTexCoord2f(1.0, 1.0);
glVertex2f(200.0+brick_a,130.0+brick_b);
glTexCoord2f(0.0,1.0);
glVertex2f(100.0+brick_a,130.0+brick_b);
glEnd();
glDisable(GL_TEXTURE_2D);
}
//collision detection check
void check(){
//xmid player's mid in horizontal direction
//ymid player's mid in vertical direction
if((xmid>(100.0+b_a) && xmid<(200.0+b_a) && ymid<=(130.0+b_b) && ymid>=(130.0+b_b)) || (xmid>0.0 && xmid<800 && ymid<=20 && ymid>=20))
downEnable=0;
else
downEnable=1;
}
};
Code:
//open gl my display function which is called after every 33ns.acts as a while loop.
void myDisplayFunction()
{
glClear( GL_COLOR_BUFFER_BIT );
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, _textureId);
//Bottom
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glBegin(GL_POLYGON);
glTexCoord2f( 0 , 0);
glVertex2f(0.0+x, 0.0);
glTexCoord2f( 1 , 0);
glVertex2f(800.0+x, 0.0);
glTexCoord2f( 1 , 1);
glVertex2f(800.0+x, 800.0);
glTexCoord2f( 0 , 1);
glVertex2f(0.0+x, 800.0);
glEnd();
texture t1;
xmid=float(player_x +player_x1)/2.0;
ymid=float(player_y+player_y2)/2.0;
b[0].draw_brick(50,50);
b[0].check();
//These are brick drawing functions!
b[1].draw_brick(200,200);
b[2].draw_brick(390,390);
//these are brick collision checking functions.
b[2].check();
b[1].check();
//not for ur use.
/* t1.display_scene();
p1.draw();
glDisable(GL_TEXTURE_2D);
glutSwapBuffers();
// i+=10;
g1.g(0.5);
printf("\n.");
*/
}
I want that Once I make a brick object.The collision detection code works for it.but it is working for one object only.
Help please.