2017-02-23 63 views
-2

Я создаю игровой графический интерфейс для удовольствия, используя кости. Код выглядит примерно так:Рекурсивно вызывающие игровые классы в Java

public class run { 
    //set up frame 
    Game game = new Game(); 
    game.run(); 
} 

public class Game { 

    public void run() { 
     Round round = new Round(); 
     int playerWhoLostADie = round.run(); 

     //handle if the game ends 
     //otherwise, call recursively 
     run(playerWhoLostADie); 
    } 
} 

public class Round { 

    public int run() { 
     Turn turn = new Turn(); 
     Bet bet = turn.run(); 

     //if the round is over 
     return(currentPlayer); 
     //otherwise, call recursively 
     run(bet); 
    } 
} 

public class Turn { 

    public Bet run() { 
     //handle betting 
     return bet; 
    } 
} 

Вызывает раунды и превращает рекурсивно разумный способ сделать это? Должен ли я использовать отдельные потоки, чтобы избежать замораживания GUI, и если да, то как?

+0

Нет, независимо от того, что вы делаете, ** не ** используйте рекурсию для любого из этого. И, вероятно, нет необходимости напрямую использовать потоки. Просто используйте Swing Timer. –

+0

Я знаком с использованием таймеров для отложенных задач. Как вы порекомендовали бы использовать их в этом случае? –

+0

Я не вижу никакого способа дать конкретный совет тому, что вы опубликовали, только общие рекомендации, как я уже сказал. Если вам нужен более конкретный ответ, вам нужно будет увеличить качество размещенной информации, включая предоставление нам гораздо лучшего представления о вашей структуре программы и более полезный код - [mcve], чтобы быть точным. –

ответ

-1

Зачем использовать рекурсию для реализации поворотов из игры? Я бы пошел с таким решением:

public class Main { 

    public static void main(String[] args) { 
     Game game = new Game(); 
     game.run(); 
    } 

} 


public class Game { 

    public void run() { 
     boolean gameOver = false; 

     while (!gameOver) { 
      Round round = new Round(); 
      int playerWhoLost = round.run(); 

      /* if the game ends, then gameOver = true */ 
     } 
    } 

} 


/* other classes related to the Game */ 

 Смежные вопросы

  • Нет связанных вопросов^_^