public void actionPerformed(ActionEvent ae) {
    String comando = ae.getActionCommand();

    if (comando.equals("Salir")) cerrarVentana();
    else if (comando.equals("Iniciar")) {
      continuarAnimacion();
      vista.getBtnPausar().setText("Pausar");
    } else if (comando.equals("Pausar")) {
      detenerAnimacion();
      vista.getBtnPausar().setText("Continuar");
    } else if (comando.equals("Continuar")) {
      continuarAnimacion();
      vista.getBtnPausar().setText("Pausar");
    } else if (comando.equals("No mostrar barras")) {
      mostrarBarras(false);
      vista.getBtnMostrar().setText("Mostrar barras");
    } else if (comando.equals("Mostrar barras")) {
      mostrarBarras(true);
      vista.getBtnMostrar().setText("No mostrar barras");
    } else if (comando.equals("Próxima ronda")) {
      detenerAnimacion();
      torneo.siguienteRonda();
      continuarAnimacion();
      crearPanelesTanque();
      vista.getBtnMostrar().setText("No mostrar barras");
      mostrarBarras(true);
    } else if (comando.equals("Finalizar")) {
      new VistaResultadoTorneo(vista, vista.getAplicacion(), torneo);
      cerrarVentana();
    }
  }
  private void crearPanelesTanque() {
    vista.getPanelesJugadores().clear();
    for (Tanque tanque : torneo.getTanques())
      vista.getPanelesJugadores().add(crearPanelJugador(tanque));

    vista.getPanelTanques().removeAll();
    for (JPanel panel : vista.getPanelesJugadores()) vista.getPanelTanques().add(panel);
  }
  public void windowOpened(WindowEvent e) {

    torneo.addPropertyChangeListener(this);

    for (Ronda ronda : torneo.getRondas()) ronda.addPropertyChangeListener(this);

    for (Tanque tanque : torneo.getTanques()) tanque.addPropertyChangeListener(this);

    crearPanelesTanque();

    repintar();

    animador = new PAnimador(vista.getPanelJuego());
    animador.setFps(24);
    animador.antialiasing(true);
    animador.setFondo(Color.GRAY);
    animador.agregarAnimable(torneo);
  }
 public void propertyChange(PropertyChangeEvent evento) {
   if (evento.getSource().getClass() == Ronda.class)
     if (enUltimaRonda) vista.getBtnMostrar().setText("Finalizar");
     else vista.getBtnMostrar().setText("Próxima ronda");
   else if (evento.getSource().getClass() == Tanque.class) {
     int indice = torneo.getTanques().indexOf(evento.getSource());
     if (evento.getPropertyName().equals("vida")) {
       actualizarDatosTanque(indice, 5, evento.getNewValue().toString());
       if (evento.getNewValue().equals(0)) desactivarTanque(indice);
     } else if (evento.getPropertyName().equals("energia"))
       actualizarDatosTanque(indice, 6, evento.getNewValue().toString());
     else if (evento.getPropertyName().equals("puntuacion"))
       actualizarDatosTanque(indice, 7, evento.getNewValue().toString());
   } else if (evento.getSource().getClass() == Torneo.class) enUltimaRonda = true;
 }
 public void continuarAnimacion() {
   animador.iniciar();
   vista.setTitle("Miniguerras - Ronda " + torneo.getNumeroRondaActual());
 }
 public void mostrarBarras(boolean condicion) {
   for (Tanque tanque : torneo.getRondaActual().getTanques()) tanque.setEstadoBarras(condicion);
 }