cassandra

03-09-2010, 01:04 AM

i'm doing a very simple 2D battleship game. I want to make the ship moves forward so i use glTranslatef(10,0,0) and the enemies move towards the battleship using glTranslatef(-20,0,0). However, the battleship and enemies move together to the left. I tried many ways to move each of them separately but still cannot do it.... Can someone please help me?

my code:

void drawBattleShip()

{

glColor3f(1.0, 1.0, 1.0);

glBegin(GL_POLYGON);

glVertex2i((75+X), (248+Y));

glVertex2i((85+X), (225+Y));

glVertex2i((115+X), (225+Y));

glVertex2i((125+X), (248+Y));

glEnd();

glBegin(GL_POLYGON);

glColor3f(1.0f, 0.0f, 0.0f);

for(float angle1=0; angle1<PI; angle1+=STEP)

glVertex2f((100.0+X) + 55.0 * cos(angle1), (275+Y) + 35.0 * sin(angle1));

glEnd();

glBegin(GL_POLYGON);

glColor3f(1.0f, 1.0f, 1.0f);

for(float angle2=0; angle2<PI; angle2+=STEP)

glVertex2f((100.0+X) + 55.0 * cos(angle2), (275+Y) + 15.0 * sin(angle2));

glEnd();

glBegin(GL_POLYGON);

glColor3f(1.0f, 0.0f, 0.0f);

for(float angle3=0; angle3<PI; angle3+=STEP)

glVertex2f((48.0+X) + 15.0 * cos(angle3), (275+Y) + 5.0 * sin(angle3));

glEnd();

}

void drawEnemies()

{

glColor3f(r1, g1, b1);

glBegin(GL_POLYGON);

glVertex2i(720, 520);

glVertex2i(720, 560);

glVertex2i(760, 560);

glVertex2i(760, 520);

glEnd();

glColor3f(r2, g2, b2);

glBegin(GL_POLYGON);

glVertex2i(800, 420);

glVertex2i(800, 460);

glVertex2i(840, 460);

glVertex2i(840, 420);

glEnd();

}

void drawScene()

{

glClear(GL_COLOR_BUFFER_BIT);

// glLoadIdentity();

glPushMatrix();

glTranslatef(10.0, 0.0, 0.0);

drawBattleShip();

glPopMatrix();

glPushMatrix();

glTranslatef(-10.0, 0.0, 0.0);

drawEnemies();

glPopMatrix();

glFlush();

}

void init(void)

{

glClearColor (0.0, 0.0, 0.0, 0.0);

glMatrixMode (GL_PROJECTION);

glLoadIdentity();

glOrtho (0.0, 900.0, 0.0, 700.0, 0.0, 1.0);

}

my code:

void drawBattleShip()

{

glColor3f(1.0, 1.0, 1.0);

glBegin(GL_POLYGON);

glVertex2i((75+X), (248+Y));

glVertex2i((85+X), (225+Y));

glVertex2i((115+X), (225+Y));

glVertex2i((125+X), (248+Y));

glEnd();

glBegin(GL_POLYGON);

glColor3f(1.0f, 0.0f, 0.0f);

for(float angle1=0; angle1<PI; angle1+=STEP)

glVertex2f((100.0+X) + 55.0 * cos(angle1), (275+Y) + 35.0 * sin(angle1));

glEnd();

glBegin(GL_POLYGON);

glColor3f(1.0f, 1.0f, 1.0f);

for(float angle2=0; angle2<PI; angle2+=STEP)

glVertex2f((100.0+X) + 55.0 * cos(angle2), (275+Y) + 15.0 * sin(angle2));

glEnd();

glBegin(GL_POLYGON);

glColor3f(1.0f, 0.0f, 0.0f);

for(float angle3=0; angle3<PI; angle3+=STEP)

glVertex2f((48.0+X) + 15.0 * cos(angle3), (275+Y) + 5.0 * sin(angle3));

glEnd();

}

void drawEnemies()

{

glColor3f(r1, g1, b1);

glBegin(GL_POLYGON);

glVertex2i(720, 520);

glVertex2i(720, 560);

glVertex2i(760, 560);

glVertex2i(760, 520);

glEnd();

glColor3f(r2, g2, b2);

glBegin(GL_POLYGON);

glVertex2i(800, 420);

glVertex2i(800, 460);

glVertex2i(840, 460);

glVertex2i(840, 420);

glEnd();

}

void drawScene()

{

glClear(GL_COLOR_BUFFER_BIT);

// glLoadIdentity();

glPushMatrix();

glTranslatef(10.0, 0.0, 0.0);

drawBattleShip();

glPopMatrix();

glPushMatrix();

glTranslatef(-10.0, 0.0, 0.0);

drawEnemies();

glPopMatrix();

glFlush();

}

void init(void)

{

glClearColor (0.0, 0.0, 0.0, 0.0);

glMatrixMode (GL_PROJECTION);

glLoadIdentity();

glOrtho (0.0, 900.0, 0.0, 700.0, 0.0, 1.0);

}