Salve.
Vengo subito al dunque: sto creando una orribile e vomitevole copia di The Sims (videogioco di simulazione di vita reale) in forma testuale (via char) per MSDOS, utilizzando il C++.

[...]

Non sono pazzo.
Non sono pazzo.
Non sono pazzo.

Bene, ora che avete appurato che non sono pazzo, posso continuare il discorso.
Avevo intenzione di sfruttare un array bidimensionale di char "mappaDiGioco[10][10]" per ricreare in forma grafica una sorta di mappa.
Bene.
Il problema sta nella gestione. Vi incollo la parte di codice interessata (le parti non necessarie le ho tolte).

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;

    // Controllo la posizione del personaggio.
    do
    {
        cin >> tastoMovimento;
        for (iRiga = 0; iRiga < 10; iRiga++)
        {
            for (iColonna = 0; iColonna < 10; iColonna++)
            {
                if (mappaDiGioco[iRiga][iColonna] == '*')
                {
                    if (((mappaDiGioco[(iRiga+1) || (iRiga-1)][iColonna]) && (mappaDiGioco[iRiga][(iColonna+1) || (iColonna-1)])) == '"')
                    {
                        movimentoPersonaggio();
                    }
                    else
                    {
                        switch (tastoMovimento)
                        {
                            case 'w':
                            case 'W':
                                mappaDiGioco[iRiga][iColonna] = ' ';
                                mappaDiGioco[iRiga-1][iColonna] = '*';
                                break;
                            case 'a':
                            case 'A':
                                mappaDiGioco[iRiga][iColonna] = ' ';
                                mappaDiGioco[iRiga][iColonna-1] = '*';
                                break;
                            case 's':
                            case 'S':
                                mappaDiGioco[iRiga][iColonna] = ' ';
                                mappaDiGioco[iRiga+1][iColonna] = '*';
                                break;
                            case 'd':
                            case 'D':
                                mappaDiGioco[iRiga][iColonna] = ' ';
                                mappaDiGioco[iRiga][iColonna+1] = '*';
                                break;
                            default:
                                break;
                        }
                    }
                }
            }
        }
        visualizzaMappa();
    } while (fineGioco == false);
}
Innanzitutto, non funziona.
Premendo i tasti W e A l'asterisco si muove come stabilito rispettivamente su e a sinistra.
Mentre S e D non funzionano. In parole non molto tecniche, mangiano la maggior parte dei caratteri presenti nell'array.

Inoltre, vorrei che, una volta volta arrivato al carattere ' " ', l'asterisco si fermi. Non faccia niente. Proprio niente.
Ma a quanto pare così non funziona.
Ho ipotizzato che mi sfugge qualcosa sul controllo degli array bidimensionali.

La mia domanda è: dove sbaglio?

Grazie e buona vita.