Non sarebbe una brutta cosa anche limitare gli spostamenti della "navicella" in modo che non superi mai i limiti del "campo di gioco". Per avere dei dati conosciuti e controllabili ci sono altre funzioni della console in Windows che possono tornare utili. Ad esempio, in C (e non in C++) mi son venute in mente queste "regolazioni" (tutte da verificare, perché 
io ci gioco, col codice, mica ci lavoro):
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#define W_CONSOLE       50
#define H_CONSOLE       15
#define CHAR_NAVICELLA  '+'
HANDLE gHndConsole = GetStdHandle( STD_OUTPUT_HANDLE );
void show_console_cursor( bool show ) {
    CONSOLE_CURSOR_INFO ci;
    GetConsoleCursorInfo( gHndConsole, &ci );
    ci.bVisible = show ? TRUE : FALSE;
    SetConsoleCursorInfo( gHndConsole, &ci );
}
void set_console_size( SHORT wConsole, SHORT hConsole ) {
    COORD dim = { wConsole, hConsole };
    SMALL_RECT sr = { 0, 0, wConsole, hConsole };
    SetConsoleScreenBufferSize( gHndConsole, dim );
    SetConsoleWindowInfo( gHndConsole, TRUE, &sr );
}
void set_console_color( WORD color ) {
    SetConsoleTextAttribute( gHndConsole, color );
}
void init_console( SHORT wConsole, SHORT hConsole ) {
    set_console_size( wConsole, hConsole );
    set_console_color( FOREGROUND_GREEN|FOREGROUND_INTENSITY );
    show_console_cursor( false );
}
void gotoxy( SHORT x, SHORT y ){
    COORD coord = { x, y };
    SetConsoleCursorPosition( gHndConsole, coord );
}
void show_char_at( SHORT x, SHORT y, char c ) {
    gotoxy(x,y); putchar(c);
    gotoxy(x-1,y); putchar(' ');
    gotoxy(x+1,y); putchar(' ');
    gotoxy(x,y-1); putchar(' ');
    gotoxy(x,y+1); putchar(' ');
}
int main(){
    SHORT x = W_CONSOLE/2;
    SHORT y = H_CONSOLE-1;
    init_console( W_CONSOLE, H_CONSOLE );
    show_char_at( x, y, CHAR_NAVICELLA );
    while(1 != 0){
        char tasto = getch();
        switch( tasto ) {
            case 75: x = x-1>=0 ? x-1 : x; break;
            case 77: x = x+1<W_CONSOLE ? x+1 : x; break;
            case 72: y = y-1>=0 ? y-1 : y; break;
            case 80: y = y+1<H_CONSOLE ? y+1 : y; break;
            default: ;
        }
        show_char_at( x, y, CHAR_NAVICELLA );
    }
}