Nie bardzo wiem, co dla ciebie znaczy pokazanie pozycji X. Do żadnej komórki nie przypisujesz 'X'. Jeśli tak zrobisz, to przy wypisywaniu X będzie widoczny.
Po drugie
mapa[i][y] = 2;
znak ascii o wartości 2, to jakiś START OF TEXT. Nie wiem co to jest, ale wątpie, żeby o to ci chodziło. Jeśli program ma wypisać 2, to do komórki przypisz '2'. Inna sprawa, że nie rozumiem dlaczego wypełniasz tablice podczas wypisywania. To raczej powinny być 2 osobne mechanizmy (wypełnianie tablicy bazuje na logice gry, ale wyświetlanie to wyświetlanie).