Package aplicacio

Source Code of aplicacio.Controlador

/*
* Controlador.java
*/
package aplicacio;

import domini.Carta;
import domini.Jugador;
import domini.Marcador;
import domini.Partida;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JButton;
import presentacio.Gui;

/**
* Modela el controlador façana de l'aplicació.
* @author acots jamoros
*/
public class Controlador implements Runnable {

    private List<Gui> llistaGuis;
    private Partida partida;
    private List<Jugador> jugadors;  //No sé si ho hauria de posar aquí
    private List<CartaTapet> cartesTapet; //posaré les 4 cartes del tapet

    public Controlador() {
        //creo els 4 jugadors
        jugadors = new LinkedList();
        for (int i = 0; i < 4; i++) {
            jugadors.add(new Jugador()); //lhaure de definir judador per tenir més informació
        }

        //creo les 4 gui  (hauria de passar informació dels jugadors..)
        llistaGuis = new LinkedList<Gui>();

        //Creo les cartes del tapet (s'ahuria de fer una classe amb gui-jugador i cartaTapet??? No pq nomès tindré una gui
        cartesTapet = new LinkedList<CartaTapet>();
       
        EventQueue.invokeLater(this);
        this.run();
    }

    public void run() {
        iniciarComponents();
        //He d'haver creat els jugadors i passar-li'
        //partida = new Partida();

    }

    //Activa les cartes que no han estat tirades de la gui
/*    private void activarJbCartes(Gui gui) {
    //Afegir un if getJbCarta..getIcon != null
    gui.getJbCarta1().setEnabled(true);
    gui.getJbCarta2().setEnabled(true);
    gui.getJbCarta3().setEnabled(true);
    gui.getJbCarta4().setEnabled(true);
    gui.getJbCarta5().setEnabled(true);
    gui.getJbCarta6().setEnabled(true);
    gui.getJbCarta7().setEnabled(true);
    gui.getJbCarta8().setEnabled(true);
    gui.getJbCarta9().setEnabled(true);
    gui.getJbCarta10().setEnabled(true);
    gui.getJbCarta11().setEnabled(true);
    gui.getJbCarta12().setEnabled(true);

    }
     */
    private void iniciarComponents() {
        /*//PQ S'EXECUTA 2 VEGADES I LES I I LES EOID NO COINCIDEIXEN??
        for (int i = 0; i < 4; i++) {
        Gui g = new Gui(i, this);
        llistaGuis.add(g);
        System.out.println(g.getEoid() +" eiods " + llistaGuis.get(i).getEoid() + " "+ i);
        }
        for (Gui g : llistaGuis){
        System.out.println("De la llista" + g.getEoid());
        }
         */

        //així és molt cutre però si ho faig amb for tinc problemes amb el eoid de la gui
        Gui g1 = new Gui(0, this);
        Gui g2 = new Gui(1, this);
        Gui g3 = new Gui(2, this);
        Gui g4 = new Gui(3, this);
        llistaGuis.add(g1);
        llistaGuis.add(g2);
        llistaGuis.add(g3);
        llistaGuis.add(g4);

        /*        //Crea una llista de 8 guis, però amb les eoid que toca. COMPROVACIÓ
        System.out.println("size llistaGuis " + llistaGuis.size());
        for (int i = 0; i < 4; i++){
        System.out.println(llistaGuis.get(i).getEoid());
        }
         */
        //FALTA POSAR BÉ UTILITZANT L'ARRAI
        llistaGuis.get(0).getJlParella1NomJugador1().setOpaque(true);
        llistaGuis.get(0).getJlParella1NomJugador1().setForeground(Color.red);
        llistaGuis.get(2).getJlParella1NomJugador2().setForeground(Color.red);
        llistaGuis.get(1).getJlParella2NomJugador1().setForeground(Color.red);
        llistaGuis.get(3).getJlParella2NomJugador2().setForeground(Color.red);
        llistaGuis.get(0).setLocation(10, 20);
        llistaGuis.get(1).setLocation(160, 20);
        llistaGuis.get(2).setLocation(310, 20);
        llistaGuis.get(3).setLocation(460, 20);
        llistaGuis.get(0).setVisible(true);
        llistaGuis.get(1).setVisible(true);
        llistaGuis.get(2).setVisible(true);
        llistaGuis.get(3).setVisible(true);

        //Creo un arrai de cartesTapet (poso una cartatapet per cada jugador)
        for (int i = 0; i < 4; i++) {
            cartesTapet.add(new CartaTapet(llistaGuis, i));
        }

        //inicialitzo les 4 cartaTapet a null
        for (int i = 0; i < 4; i++) {
            cartesTapet.get(i).pintaCartaTapet(null);
        }

        //Creo un marcador perqè la partida encara no s'ha creat
        Marcador m = new Marcador();
        pintaMarcador(m);
    }

    public void gestionarAccioBotoCarta1(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 1 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta1());
    }

    public void gestionarAccioBotoCarta2(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 2 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta2());
    }

    public void gestionarAccioBotoCarta3(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 3 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta3());
    }

    public void gestionarAccioBotoCarta4(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 4 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta4());
    }

    public void gestionarAccioBotoCarta5(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 5 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta5());
    }

    public void gestionarAccioBotoCarta6(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 6 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta6());
    }

    public void gestionarAccioBotoCarta7(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 7 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta7());
    }

    public void gestionarAccioBotoCarta8(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 8 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta8());
    }

    public void gestionarAccioBotoCarta9(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 9 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta9());
    }

    public void gestionarAccioBotoCarta10(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 10 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta10());
    }

    public void gestionarAccioBotoCarta11(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 11 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta11());
    }

    public void gestionarAccioBotoCarta12(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de la carta 12 del jugador" + gui.getEoid());
        tirarJBCarta(gui, gui.getJbCarta12());
    }

    public void gestionarAccioBotoCantarOros(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de cantar oros.");
        accioCantarTrumfo(0, gui);
    }

    public void gestionarAccioBotoCantarCopes(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de cantar Copes.");
        accioCantarTrumfo(1, gui);
    }

    public void gestionarAccioBotoCantarEspases(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de cantar Espases.");
        accioCantarTrumfo(2, gui);
    }

    public void gestionarAccioBotoCantarBastos(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de cantar Bastos.");
        accioCantarTrumfo(3, gui);
    }

    public void gestionarAccioBotoCantarButifarra(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de cantar Butifarra.");
        accioCantarTrumfo(4, gui);
    }

    public void gestionarAccioBotoPassar(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de cantar Passar.");
        //desactivem els botons del trumfo i del propi botó passar
        desActivarBotonsCantar(gui);
        gui.getJbPassar().setEnabled(false);

        //activem els botons de cantar trumfo del company
        int company = (gui.getEoid() + 2) % 4;
        Gui guiCompany = llistaGuis.get(company);
        activarBotonsCantar(guiCompany);
    }

    public void gestionarAccioBotoContrar(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de cantar Contar.");
    }

    //Nomès estarà actiu pel jugador quiComenca (variable del datActual)
    //Activarà les seves cartes perquè pugui clicar-les
    public void gestionarAccioBotoNovaBasa(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de cantar nova Basa.");

        //Primer mirem si ja és la última basa (s'ha d'apretar el botó una vegada s'han acabat les cartes)
        //ACABEM EL DAT
        if (partida.getDatActual().sHaAcabatElDat()) {
            System.out.println("S'ha acabat el dat.");
            //retirem les cartes del tapet
            retirarCartesTapet();

            //Em falta repassar a tot arreu on faig quiReparteix%4 !!!!!!
            //S'ha d'activar el botó de qui repartirà desprès
            llistaGuis.get((partida.getQuiReparteix() + 1) % 4).getJbRepartir().setEnabled(true);

            //desactivar el botó de nova baza (els desactivo tots) fins que no es torni a repartir
            for (Gui g : llistaGuis) {
                System.out.println("deasctivant novA BASA n: " + g.getEoid());
                g.getJbNovaBasa().setEnabled(false);
            }

            //Actualitzo el marcador de la partida
            partida.actualitzaMarcador();
            pintaMarcador(partida.getMarcador());
            System.out.println("Marcador de la partida: " + partida.getMarcador());
        }
        //Si no és la última, faig la basa
        else {
            System.out.println("Ha de començar el jugador" + partida.getDatActual().getjugadorQueComenca());
            //Activem les cartes del jugador quiComenca (Nomès les que no s'han tirat)
            //activarJbCartes(llistaGuis.get(partida.getDatActual().getjugadorQueComenca()));

            retirarCartesTapet();

            //Fem una baza
            partida.getDatActual().baza();

            //Desactivar el botó novaBasa  (Activar el del que ha guanyat ho fan les cartes)
            gui.getJbNovaBasa().setEnabled(false);
        }
    }

    public void gestionarAccioIniciarPartida(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó de iniciar la partida.");
        partida = new Partida(jugadors);
        partida.iniciaPartida();
        //Falta desactivar tots els botons excepte el de repartir del jugador 0
        //que es quiReparteix de moment
        System.out.println("Comencem la partida, reparteix " + partida.getQuiReparteix());
        //Desactivem els botons iniciarPartida de totes les gui

        for (Gui a : llistaGuis) {
            a.getJbSIniciarPartida().setEnabled(false);

        }
        int nosecomferquivullquecomenci = 0;
        //Activem el botó de repartir les cartes del quiReparteix (del jugador 0)
        llistaGuis.get(nosecomferquivullquecomenci).getJbRepartir().setEnabled(true);
        //ATENCIO: en comptes del 0 hi hauria d'haver
        // partida.getQuiReparteix() però no em va bé pq quiReparteix està inicialitzat a -1

        //
    }

    //Hauria de dir-se Nou Dat
    //Nomès estarà actiu pel jugador (quiReparteix) (el que reparteix)
    public void gestionarAccioBotoRepartir(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click al botó repartir.");

        //Falta treure les cartes del tapet

        partida.nouDat();
        //Pinto les cartes per cada gui
        for (int i = 0; i < 4; i++) {
            pintaCartes(llistaGuis.get(i), jugadors.get(i));
        }
        System.out.println("Comencem el dat, reparteix " + partida.getQuiReparteix());

         //desactivar el botó repartir que estava activat
        llistaGuis.get(partida.getQuiReparteix()).getJbRepartir().setEnabled(false);

        //gestionar els botons contro, passo
        activarBotonsCantar(gui);
        gui.getJbPassar().setEnabled(true);

    }

    //Hauria de començar la partida aquí
    public void gestionarAccioMenuItemNovaPartiva(Gui gui, ActionEvent evt) {
        System.out.println("S'ha fet un click menú item Nova Partida.");
    }

    public static void main(String args[]) {
        new Controlador();
    }

    private void pintaCartes(Gui gui, Jugador jugador) {
        //Per cada carta la posem al seu botó
        //No controlem exceptions perquè segur que n'hi ha 12
        //System.out.println(cartes12.get(0));
        List<Carta> cartes12 = jugador.getCartesJugador();
        gui.getJbCarta1().setIcon((cartes12.get(0).getImatge()));
        gui.getJbCarta2().setIcon((cartes12.get(1).getImatge()));
        gui.getJbCarta3().setIcon((cartes12.get(2).getImatge()));
        gui.getJbCarta4().setIcon((cartes12.get(3).getImatge()));
        gui.getJbCarta5().setIcon((cartes12.get(4).getImatge()));
        gui.getJbCarta6().setIcon((cartes12.get(5).getImatge()));
        gui.getJbCarta7().setIcon((cartes12.get(6).getImatge()));
        gui.getJbCarta8().setIcon((cartes12.get(7).getImatge()));
        gui.getJbCarta9().setIcon((cartes12.get(8).getImatge()));
        gui.getJbCarta10().setIcon((cartes12.get(9).getImatge()));
        gui.getJbCarta11().setIcon((cartes12.get(10).getImatge()));
        gui.getJbCarta12().setIcon((cartes12.get(11).getImatge()));
    }

    private void tirarJBCarta(Gui gui, JButton jBCarta) {

        //Miro de quin jugador és la gui (AQUI NECESSITARIA LA CLASSE GUIjUGADOR)
        int jugadorQueTira = gui.getEoid();

        //pinto la carta a tots els tapets en la posició del eoid
        cartesTapet.get(jugadorQueTira).pintaCartaTapet(jBCarta.getIcon());

        //afegeixo la carta a la llista de la basa
        Carta c = new Carta(jBCarta.getIcon());
        partida.getDatActual().getBasaActual().add(c);

        //trec la icona del botó de la carta de la gui que l'acciona
        jBCarta.setIcon(null);

        //si és l'última carta de la basa, gestiono el que s'ha de fer
        //ACABEM LA BASA
        if (partida.getDatActual().eslUltimaCartaDeLaBasa()) {
            System.out.println("S'ha acabat la basa");
            partida.getDatActual().acabarBasa();

            //activo novaBasa del guanyador
            llistaGuis.get(partida.getDatActual().getjugadorQueComenca()).getJbNovaBasa().setEnabled(true);
        }
    }

    private void pintaMarcador(Marcador m) {
        String pNos = new Integer(m.getNos()).toString();
        String pVos = new Integer(m.getVos()).toString();
        for (Gui gui: llistaGuis){
            gui.getJlParella1Punts().setText(pNos);
            gui.getJlParella2Punts().setText(pVos);
        }
    }

     //Activo tots els botons dels possibles trumfo
    private void activarBotonsCantar(Gui gui){
       gui.getJbCantarBastos().setEnabled(true);
       gui.getJbCantarButifarra().setEnabled(true);
       gui.getJbCantarCopes().setEnabled(true);
       gui.getJbCantarEspases().setEnabled(true);
       gui.getJbCantarOros().setEnabled(true);
    }
   
     //Activo tots els botons dels possibles trumfo
    private void desActivarBotonsCantar(Gui gui){
       gui.getJbCantarBastos().setEnabled(false);
       gui.getJbCantarButifarra().setEnabled(false);
       gui.getJbCantarCopes().setEnabled(false);
       gui.getJbCantarEspases().setEnabled(false);
       gui.getJbCantarOros().setEnabled(false);
    }

    private void accioCantarTrumfo(int pal, Gui gui){
        //Poso el trumfo del dat
        partida.getDatActual().setTrumfo(pal);
       
        //activo i desactivo els botons pertinents
        desActivarBotonsCantar(gui);
        gui.getJbPassar().setEnabled(false);
       
        //Ha de posar-se actiu nomès el botó novaBasa de quiReparteix + 1
        llistaGuis.get((partida.getQuiReparteix() + 1) % 4).getJbNovaBasa().setEnabled(true);
    }

    public void retirarCartesTapet(){
            for (int i = 0; i < 4; i++) {
                cartesTapet.get(i).pintaCartaTapet(null);
            }
    }
}
TOP

Related Classes of aplicacio.Controlador

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.