Rotate only one object in 2D

Hello, I am trying to recreate the classic game Asteroid using OpenGL. So far I have drawn a ship, some text and a test asteroid. I have set up controls such that UP arrow moves the ship forwards, LEFT and RIGHT keys rotate the ship.


The problem lies in the rotation. When I attempt to rotate the ship, everything in the screen rotates as well.


However I only want the ship to move. How can I do this?

Here is my draw function:

void draw() {
	glClear(GL_COLOR_BUFFER_BIT); // Clear display window.


	char *score = {"Score: "};
	glRasterPos2f(1, 14);
	print_bitmap_string(GLUT_BITMAP_9_BY_15, score);

	myWorld.shipType[selection]->rotate(myWorld.shipType[selection]->center[0], myWorld.shipType[selection]->center[1],angle);


and the rotation function looks like this:

void Shape2D::rotate(GLfloat rx, GLfloat ry, GLfloat angle){
	// rx and ry is the coordinate for the center point of the ship
	glTranslatef(rx, ry, 0);
	glRotatef(angle, 0., 0., 1.);
	glTranslatef(-rx, -ry, 0);

myWorld.draw_world just simply draws the ship onto the screen:

void World::draw_world() {
        //draw triangle
	if (selection == 0) {
        // draw square
        else if (selection == 1) {
	} else if (selection == 2) {
        // draw test asteroid

Push your current matrix, manipulate it with the translatef / rotatef calls, draw the sprite you want to have rotated and then pop the matrix again before drawing the other sprites.