Ahem, scusate il doppio post.
Sono riuscito definitivamente a risolvere il problema dei bordi.
Ora il codice è ottimizzato.
Lo posto (non mi permette di modificare il primo post, pertanto lo metto qui).

codice:
#include <iostream>
using namespace std;

// Variabili globali.
bool fineGioco = false;
char tastoMovimento;
char mappaDiGioco[10][10] =
                            {
                                {'"', '"', '"', '"', '"', '"', '"', '"', '"', '"'},
                                {'"', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '"'},
                                {'"', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '"'},
                                {'"', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '"'},
                                {'"', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '"'},
                                {'"', ' ', ' ', ' ', '*', ' ', ' ', ' ', ' ', '"'},
                                {'"', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '"'},
                                {'"', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '"'},
                                {'"', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '"'},
                                {'"', '"', '"', '"', '"', '"', '"', '"', '"', '"'},
                            };

// Funzioni (procedure).
void visualizzaMappa();
void movimentoPersonaggio();

int main()
{
    visualizzaMappa();
    movimentoPersonaggio();
    return 0;
}

// Questa funzione stampa a video la mappa.
void visualizzaMappa()
{
    int iRiga = 0;
    int iColonna = 0;

    system("cls");

    for (iRiga = 0; iRiga < 10; iRiga++)
    {
        for (iColonna = 0; iColonna < 10; iColonna++)
        {
            cout << mappaDiGioco[iRiga][iColonna];
        }
        cout << endl;
    }
    cout << endl;
}

// Questa funzione controlla l'input di movimento.
void movimentoPersonaggio()
{
    int iRiga = 0;
    int iColonna = 0;

    // Muovo il personaggio.
    do
    {
        cin >> tastoMovimento;
        for (iRiga = 0; iRiga < 10; iRiga++)
        {
            for (iColonna = 0; iColonna < 10; iColonna++)
            {
                if (mappaDiGioco[iRiga][iColonna] == '*')
                {
                    switch (tastoMovimento)
                    {
                        case 'w':
                        case 'W':
                            if (mappaDiGioco[iRiga-1][iColonna] != '"')
                            {
                                mappaDiGioco[iRiga][iColonna] = ' ';
                                mappaDiGioco[iRiga-1][iColonna] = '*';
                            }
                            break;
                        case 'a':
                        case 'A':
                            if (mappaDiGioco[iRiga][iColonna-1] != '"')
                            {
                                mappaDiGioco[iRiga][iColonna] = ' ';
                                mappaDiGioco[iRiga][iColonna-1] = '*';
                            }
                            break;
                        case 's':
                        case 'S':
                            if (mappaDiGioco[iRiga+1][iColonna] != '"')
                            {
                                mappaDiGioco[iRiga][iColonna] = ' ';
                                mappaDiGioco[iRiga+1][iColonna] = '*';
                            }
                            break;
                        case 'd':
                        case 'D':
                            if (mappaDiGioco[iRiga][iColonna+1] != '"')
                            {
                                mappaDiGioco[iRiga][iColonna] = ' ';
                                mappaDiGioco[iRiga][iColonna+1] = '*';
                            }
                            break;
                    }
                }
            }
        }
        visualizzaMappa();
    } while (fineGioco == false);
}
Ora il problema che mi pongo è lo scorretto funzionamento dei tasti S e D.
Mi correggo per quanto detto nel post precedente, non saltano solo tre posti, ben TUTTI, fino ad arrivare al blocco. Mah.
Suggerimenti?