Już dawno nie robiłem komuś code review, ale podrzucę ci co wypadało by zmienić.
1. nazwy katalogów zaczynaj z małej litery. przykład z twojego kodu (View i Menus) - "package View.Menus;"
2. "public abstract class AMenu" - Tworzenie prefiksu A przed klasą abstrakcyjną jest już przestarzałe i nie powinno się tego już używać. To samo z I dla Interfejsów. Czasami jeszcze dodaje się sufix impl by implementacja z interfejsem się tak samo nie nazywały ale to wyjątek
3."int selectedMenuItemIndex;" - Używaj modyfikatorów dostępu, chyba że naprawdę potrzebujesz by zmienna była widziana per pakiet.
4. public static String[][] readPlayerScoresFromFile(String fileName) - Masz język obiektowy więc rozdzielaj każdą operacje do innej metody. W tej metodzie nie odczytujesz z pliku tylko otwierasz go, odczytujesz, dzielisz na playerName i score, i jeszcze coś dodatkowo w pętli robisz, postaraj się wyrzucić to do metod prywatnych. Może i tu się trochę za bardzo czepiam ale przeczytaj sobię książkę clean code. Dobra jest.
5. public class ArrowAction extends AbstractAction - Nie używaj klas wewnętrznych wydaje mi się że lepiej to zrobić w odddzielnym pliku. Wyjątkiem mogą być jakieś patterny jak naprzykład builder.
Droga przez code review jest dobrą drogą by stać się dobrym programistą, szacunek za to bo nikt z nas nie lubi być krytykowanym za swój kod. Wypisałem ci co mi się na początku rzuciło w oczy, kodu nie uruchamiałem i tylko wzrokiem przeleciałem co jest nie tak. Sam mam dopiero 1,5 roku doświadczenia w tym i nie jestem jakimś specem. Pozdro