I'm trying to learn as I go. I found a simple game in a graphics book that I've been messing with to learn about graphics. The game originally put a ship "<--*-->" (that's the ship) on the very top of a window and you could move it from left to right while stars would pass by making it look like it was moving through space.

I want to move the ship down about 10 spaces to the middle of the console window just to know that I can do it.

It's a console application. Here is the code.

The line that makes the ship is:

Draw_String(player_x,5,"<--*-->")

Instead of 5, it used to be 0 which placed it at the top. The way I have it now does the job somewhat but there is still "residue" leftover and you can still see the ship behind it as it moves. I want to get rid of the leftover graphic from the ship.

Code:
// PROG2_1.CPP - A simple console based game to illustrate
// a generic game loop

// INCLUDES ///////////////////////////////////////////////

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h> 
#include <conio.h>
#include <windows.h>
#include <time.h>

// DEFINES ////////////////////////////////////////////////

#define MAX_X        77  // maximum x position for player
#define SCROLL_POS   24  // the point that scrolling occurs
  
// PROTOTYPES /////////////////////////////////////////////

void Init_Graphics(void);
inline void Set_Color(int fcolor, int bcolor);
inline void Draw_String(int x,int y, char *string);

// GLOBALS ////////////////////////////////////////////////

CONSOLE_SCREEN_BUFFER_INFO con_info;   // holds screen info

HANDLE hconsole;         // handle to console
int    game_running = 1; // state of game, 0=done, 1=run

// FUNCTIONS //////////////////////////////////////////////

void Init_Graphics(void)
{
// this function initializes the console graphics engine

COORD console_size = {80,25}; // size of console

// seed the random number generator with time
srand((unsigned)time(NULL));

// open i/o channel to console screen
hconsole=CreateFile("CONOUT$",GENERIC_WRITE | GENERIC_READ,
         FILE_SHARE_READ | FILE_SHARE_WRITE,
         0L, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0L);

// make sure we are in 80x25
SetConsoleScreenBufferSize(hconsole,console_size);

// get details for console screen                       
GetConsoleScreenBufferInfo(hconsole,&con_info);

} // end Init_Graphics

///////////////////////////////////////////////////////////

inline void Set_Color(int fcolor, int bcolor=0) 
{
// this function sets the color of the console output
SetConsoleTextAttribute(hconsole,(WORD)((bcolor << 4) | 
                        fcolor));

} // Set_Color

///////////////////////////////////////////////////////////

inline void Draw_String(int x,int y, char *string)
{
// this function draws a string at the given x,y

COORD cursor_pos; // used to pass coords

// set printing position
cursor_pos.X = x;
cursor_pos.Y = y;
SetConsoleCursorPosition(hconsole,cursor_pos);

// print the string in current color
printf("%s",string);

} // end Draw_String

///////////////////////////////////////////////////////////

inline void Clear_Screen(void)
{
// this function clears the screen

// set color to white on black
Set_Color(15,0);

// clear the screen
for (int index=0; index<=25; index++)
    Draw_String(0, SCROLL_POS,"\n");

} // end Clear_Screen

// MAIN GAME LOOP /////////////////////////////////////////

void main(void)
{
char key;            // player input data
int  player_x = 40;  // player's x position

// SECTION: initialization

// set up the console text graphics system
Init_Graphics();

// clear the screen


// SECTION: main event loop, this is where all the action  
// takes place, the general loop is erase-move-draw

while(game_running)
     {
     // SECTION: erase all the objects or clear screen


     // nothing to erase in our case   

     // SECTION: get player input
     if (kbhit())
        {
        // get keyboard data, and filter it
        key = toupper(getch());

        // is player trying to exit, if so exit
        if (key=='Q' || key==27)
           game_running = 0; 

        // is player moving left        
        if (key=='A')
           player_x--;
           
        // is player moving right
        if (key=='S')
           player_x++;

        } // end if   

     // SECTION: game logic and further processing
     
     // make sure player stays on screen 
     if (++player_x > MAX_X)
        player_x=MAX_X;     

     if (--player_x < 0)
        player_x=0;     

     // SECTION: draw everything

     // draw next star at random position
     Set_Color(15,0);
     Draw_String(rand()%80, SCROLL_POS, ".\n");
     
     // draw player 
     Set_Color(2,0);
     
     Draw_String(player_x,5,"<--*-->");
     Set_Color(0,0);
	 Draw_String(player_x,4,"<<<<<--*-->>>>>");

	 
       

     // SECTION: synchronize to a constant frame rate
     Sleep(40);   
Clear_Screen();
     } // end while

// SECTION: shutdown and bail


printf("\nG A M E  O V E R \n\n");

} // end main