Implementing 2D rendering in a 3X3 LED display.

First off, what does this indicate?

"Expert level: ??????????"

Just curious.

I would do this in two pieces.
Make a section of code that reads columns of data from an array and outputs them to the LEDs in a multiplexed fashion every 5mS or so.
This will be easy expand to a larger array later (or send to a MAX7219, or 2x2 grid of MAX7219s, etc).
Here's a 5x5 example. Drive the anode from array data, sink current in one cathode. When 5mS have gone by, turn the cathode off, drive the anodes with next set of data, turn on next cathode.

During the 5mS wait, you can be doing the next part of the code.
The 2nd part reads the input switches/buttons, or a joystick (really just two potentiometers), whatever the user input is, and maps those inputs into an array position movememt, and moves the "computer" player into position. Somehow you decide when the player is out of room.