Klasy zdecydowanie za dużo robią, np. klasa Game nie powinna się zajmować generowaniem planszy. Od tego stworzyłbym osobną klasę, GameBoard. Tak samo w Player nie powinno być obsługi inputu ze strony użytkownika – to też przerzuciłbym do osobnej klasy.
Zależności są sztywno ustalone, np. klasa Player ma de facto zaszytą integrację z klasą Weapon i dodatkowo na sztywno określa, jaką broń ma użytkownik. Wszystkie zależności bym wstrzykiwał do konstruktora przy pomocy mechanizmu DI. Tak samo informacje o ekwipunku – osobna klasa wstrzykiwana do konstruktora.