Ma è la GUI che deve comunicare alla Partita di avanzare tramite qualche azione svolta da un ActionListener.. solo che non so come.
Non so perché parli di ActionListener. L'avanzare della Partita, non sapendo nulla del tuo programma, può avvenire (per dire) perché l'utente ha fatto una mossa o il computer deve fare una mossa.
Allora immagino che Partita abbia dei metodi come:
void userPlay(PlayerAction action) // mi invento PlayerAction non sapendo cosa può fare un player
void computerPlay()

La GUI chiamerà userPlay() e computerPlay() quando l'utente muoverà una carta e quando avrà finito il suo turno.