Предполагая, что у вас много операций, подобных приведенному примеру, вы можете рассмотреть интерфейсный подход, описанный Richie_W, но создать одну подпрограмму для каждой операции, а не общие методы "in / out".
Например:
public interface IGameInteraction
{
public String askForMove( String prompt );
public boolean askAreYouSure( String prompt );
}
Ваша реализация командной строки понятна; теперь ваша реализация GUI может использовать соответствующий диалог для каждой логической операции, а не просто текстовую область, которая на самом деле является версией командной строки.
Кроме того, проще писать модульные тесты, потому что в своих тестах вы можете заглушить эти процедуры любым способом.