Package aplicacio

Source Code of aplicacio.Controlador

/*
* Controlador.java
*/
package aplicacio;

import domini.Carta;
import domini.Jugador;
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 Joaquim Laplana
*/
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>();
        /*      for (int i = 0; i < 4; i++) {
        cartesTapet.add(new Carta());
        }
         */


        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);
        }


    }

    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.");
    }

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

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

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

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

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

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

    //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.");
        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()));

        //retirem les cartes del tapet
        for (int i = 0; i < 4; i++) {
            cartesTapet.get(i).pintaCartaTapet(null);
        }

        //Fem una baza
        partida.getDatActual().baza();
        System.out.println("num de baza: " + partida.getDatActual().getNumBasa());
        //Miro les cartes abans de xafar-les
        System.out.println(partida.getDatActual().getBasaActual());

        //inicialitzo l'arrai de cartes de la basa
        partida.getDatActual().inicialitzaBaza();
        System.out.println(partida.getDatActual().getBasaActual());

        //Quan acabi la basa:
        //No caldrà desactivar les cartes perquè es van desactivant a mesura que es tiren
        //Desactivar el botó novaBasa  Activar el del que ha guanyat ho fan les cartes)
        gui.getJbNovaBasa().setEnabled(false);

        //A la última basa (comptar 12)
        if (partida.getDatActual().getNumBasa() == 3) {
            System.out.println("S'ha acabat el dat. Ara s'ha de tornar a repartir");
            //actualitzar el marcador

            //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);
            }
        }
    }

    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());
        //Aqui faltaria inicialitzaDat que gestionés els botons contro, passo
        //Etc i que s'activéssin segons toca

        //Ha de posar-se actiu nomès el botó novaBasa de quiReparteix + 1
        llistaGuis.get((partida.getQuiReparteix() + 1) % 4).getJbNovaBasa().setEnabled(true);

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

    //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
        if (partida.getDatActual().getBasaActual().size() == 4) {
            System.out.println("S'ha acabat la basa");
            //miro qui ha guanyat
            int g = partida.getDatActual().acabarBasa();

            //activo novaBasa del guanyador
            llistaGuis.get(g).getJbNovaBasa().setEnabled(true);
        }

    }
}
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.