First off, what does this indicate?"Expert level: ?"
This is similar to computer programming.
Start by making an array:This is your 'board'. Think of it like a chessboard with squares. In there you can put letters to represent things in the game, eg 'p' for 'player'. This is what you manipulate with your program. When you move a monster you look in the screen to see if there's a 'p' where the monster is moving too. When you get up to a 16x16 board you can start putting in 'w' for a wall, etc.Next you need a function to copy/translate the board to the LED display. You call this function on every pass through 'loop()'. For single color LEDs you can have different characters come out with different brightnesses. If you change to RGB LEDs you can have 'p', 'w' and 'm' come out as different colors. All that changes is the board->display function. This separation of board and display gives you great flexibility.
Why are you using char?
digitalWrite( pin[x][y], HIGH);