I think these puts and getting the name should be part of the game itself.

So it should just be:
game = Game.new
game.start

Inside the start method, you can call:
- show_intro (and include rules in that)
- get_name (and get the name)
- run (which is a separate method outside of start that does the loop)

If you're wondering why i think the loop should be outside of start -- lets think about that. It's a game loop, and represents the game "running". Is the loop of the game really what we are doing in a method called "start"? Probably not, we just want to start the game, which involves showing an intro and then invoking "run", which then runs the game.

Hope that makes sense.