Advertisement
MrChrHD

Gioco Tris

Feb 17th, 2018
679
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 24.04 KB | None | 0 0
  1. //Main.java
  2. package gioco;
  3.  
  4. /**
  5.  *
  6.  * @author Christian V.
  7.  * @version 1.0 del 17/02/2018
  8.  */
  9. public class Main
  10. {
  11.     /**
  12.      * Main.
  13.      * @param args
  14.      */
  15.     public static void main(String[] args)
  16.     {
  17.         Gioco gioco = new Gioco();
  18.     }
  19. }
  20.  
  21. //Gioco.java
  22. package gioco;
  23.  
  24. import java.awt.*;
  25. import javax.swing.*;
  26. import java.awt.event.*;
  27.  
  28. /**
  29.  * @author Christian V.
  30.  * @version 1.0 del 17/02/2018
  31.  */
  32. public class Gioco extends JFrame implements ActionListener
  33. {
  34.     /**
  35.      * Indica di quale giocatore e' il turno in corso.
  36.      */
  37.     private String Giocatore = "G1"; //VIENE MODIFICATO DOPO IL CLICK SU UN TASTO
  38.    
  39.     /*
  40.      * G1 = Giocatore 1 = X
  41.      * G2 = Giocatore 2 = O
  42.      */
  43.    
  44.    
  45.    
  46.     /**
  47.      * Finestra di vittoria per il Giocatore 1.
  48.      */
  49.     Vittoria VittoriaG1 = new Vittoria("G1");
  50.    
  51.     /**
  52.      * Finestra di vittoria per il Giocatore 2.
  53.      */
  54.     Vittoria VittoriaG2 = new Vittoria("G2");
  55.    
  56.    
  57.    
  58.     /**
  59.      * Pannello contenente i pulsanti del tris, dove i giocatori mettono il proprio segno.
  60.      */
  61.     private JPanel griglia = new JPanel();
  62.    
  63.     /**
  64.      * Pannello contenente sia la griglia che il pulsante di reset.
  65.      */
  66.     private JPanel tuttiBottoni = new JPanel();
  67.    
  68.    
  69.    
  70.     /**
  71.      * Array bidimensionale di bottoni. Sarebbe la griglia dove i giocatori mettono il proprio segno.
  72.      */
  73.     private JButton[][] bottoni = new JButton[3][3];
  74.    
  75.     /**
  76.      * Pulsante reset per ricominciare la partita.
  77.      */
  78.     private JButton reset = new JButton("Reset");
  79.    
  80.    
  81.    
  82.     /**
  83.      * Scritta "Tris" posta al centro della finestra. Il titolo, praticamente.
  84.      */
  85.     private JLabel titolo = new JLabel("Tris", SwingConstants.CENTER);
  86.    
  87.    
  88.     /**
  89.      * Costruttore, imposta il titolo e chiama i metodi di generazione della finestra.
  90.      */
  91.     public Gioco()
  92.     {
  93.         super("Tris!");
  94.        
  95.         generaBottoni();
  96.         generaPannelloBottoni();
  97.         generaFinestra();
  98.    
  99.     }
  100.    
  101.    
  102.     /*
  103.      *          #### GRIGLIA ####
  104.      * [0,0] [0,1] [0,2] // [1] [2] [3]
  105.      * [1,0] [1,1] [1,2] // [4] [5] [6]
  106.      * [2,0] [2,1] [2,2] // [7] [8] [9]
  107.      */
  108.    
  109.     /**
  110.      * Ascoltatore. Vede quali pulsanti sono stati premuti, ed in base a cio' viene eseguita un'azione.
  111.      */
  112.     public void actionPerformed(ActionEvent E)
  113.     {
  114.        
  115.         String PULSANTE = E.getActionCommand();
  116.        
  117.         /*
  118.          * #### FUNZIONAMENTO PULSANTI TRIS ####
  119.          *
  120.          * if(PULSANTE.equals("TESTO DEL PULSANTE")) --> Dal testo si riesce anche a ricavare la posizione
  121.          * {
  122.          *      boolean exe = false; --> Si crea una variabile bool exe per indicare se il tasto sia gia' stato premuto
  123.          *     
  124.          *      if(Giocatore.equals("G1") && exe == false) --> Controlla se sia il turno del giocatore 1 e se il tasto sia gia' stato premuto
  125.          *      {
  126.          *          bottoni[R][C].setText("X"); --> Cambia il testo del bottone in "X"
  127.          *          bottoni[R][C].setForeground(Color.green); --> Cambia il colore del testo in verde
  128.          *          Giocatore = G2; --> Cambia il turno in G2
  129.          *          exe = true; --> Imposta il tasto come gia' premuto
  130.          *      }
  131.          *     
  132.          *      if(Giocatore.equals("G2") && exe == false) --> Controlla se sia il turno del giocatore 2 e se il tasto sia gia' stato premuto
  133.          *      {
  134.          *          bottoni[C][R].setText("O"); --> Cambia il testo del bottone in "O"
  135.          *          bottoni[C][R].setForeground(Color.red); --> Cambia il colore del testo in rosso
  136.          *          Giocatore = "G1"; --> Cambia il turno in G1
  137.          *          exe = true; --> Imposta il tasto come gia' premuto
  138.          *      }
  139.          *
  140.          *      //Controlla se ha vinto qualcuno
  141.          *
  142.          *      //VINCE PER RIGA
  143.          *      if(bottoni[R][C].getText().equals("X") && bottoni[R][C].getText.equals("X") && bottoni[R][C].getText.equals("X")) --> Controlla se la riga contiene pulsanti tutti "X"
  144.          *      {
  145.          *          VittoriaG1.setVisible(true); --> Mostra la schermata di vittoria per il Giocatore 1
  146.          *          postVittoria(); --> Avvia l'esecuzione del metodo post vittoria
  147.          *      }
  148.          *      if(bottoni[R][C].getText().equals("O") && bottoni[R][C].getText.equals("O") && bottoni[R][C].getText.equals("O")) --> Controlla se la riga contiene pulsanti tutti "O"
  149.          *      {
  150.          *          VittoriaG2.setVisible(true); --> Mostra la schermata di vittoria per il Giocatore 2
  151.          *          postVittoria(); --> Avvia l'esecuzione del metodo post vittoria
  152.          *      }
  153.          *     
  154.          *      //VINCE PER DIAGONALE
  155.          *      if(bottoni[R][C].getText().equals("X") && bottoni[R][C].getText().equals("X") && bottoni[R][C].getText().equals("X")) --> Controlla se la diagonale corrispondente contiene pulsanti tutti "X"
  156.          *      {
  157.          *          VittoriaG1.setVisible(true); --> Mostra la schermata di vittoria per il Giocatore 1
  158.          *          postVittoria(); --> Avvia l'esecuzione del metodo post vittoria
  159.          *      }
  160.          *      if(bottoni[R][C].getText().equals("O") && bottoni[R][C].getText().equals("O") && bottoni[R][C].getText().equals("O"))  --> Controlla se la diagonale corrispondente contiene pulsanti tutti "O"
  161.          *      {
  162.          *          VittoriaG2.setVisible(true); --> Mostra la schermata di vittoria per il Giocatore 2
  163.          *          postVittoria(); --> Avvia l'esecuzione del metodo post vittoria
  164.          *      }
  165.          *
  166.          *      //VINCE PER COLONNA
  167.          *      if(bottoni[R][C].getText().equals("X") && bottoni[R][C].getText().equals("X") && bottoni[R][C].getText().equals("X")) --> Controlla se la colonna contiene pulsanti tutti "X"
  168.          *      {
  169.          *          VittoriaG1.setVisible(true); --> Mostra la schermata di vittoria per il Giocatore 1
  170.          *          postVittoria(); --> Avvia l'esecuzione del metodo post vittoria
  171.          *      }  
  172.          *      if(bottoni[R][C].getText().equals("O") && bottoni[R][C].getText().equals("O") && bottoni[R][C].getText().equals("O")) --> Controlla se la colonna coneiene pulsanti tutti "O"
  173.          *      {
  174.          *          VittoriaG2.setVisible(true); --> Mostra la schermata di vittoria per il Giocatore 2
  175.          *          postVittoria(); --> Avvia l'esecuzione del metodo post vittoria
  176.          *      }      
  177.          * }
  178.          */
  179.        
  180.         if(PULSANTE.equals("1"))
  181.         {
  182.             boolean exe = false;
  183.            
  184.             if(Giocatore.equals("G1") && exe == false)
  185.             {
  186.                 bottoni[0][0].setText("X");
  187.                 bottoni[0][0].setForeground(Color.green);
  188.                 Giocatore = "G2";
  189.                 exe = true;
  190.             }
  191.             if(Giocatore.equals("G2") && exe == false)
  192.             {
  193.                 bottoni[0][0].setText("O");
  194.                 bottoni[0][0].setForeground(Color.red);
  195.                 Giocatore = "G1";
  196.                 exe = true;
  197.             }
  198.            
  199.             //Controlla se ha vinto qualcuno
  200.            
  201.             //VINCE PER RIGA
  202.             if(bottoni[0][0].getText().equals("X") && bottoni[0][1].getText().equals("X") && bottoni[0][2].getText().equals("X"))
  203.             {
  204.                 VittoriaG1.setVisible(true);
  205.                 postVittoria();
  206.             }
  207.             if(bottoni[0][0].getText().equals("O") && bottoni[0][1].getText().equals("O") && bottoni[0][2].getText().equals("O"))
  208.             {
  209.                 VittoriaG2.setVisible(true);
  210.                 postVittoria();
  211.             }
  212.            
  213.             //VINCE PER DIAGONALE
  214.             if(bottoni[0][0].getText().equals("X") && bottoni[1][1].getText().equals("X") && bottoni[2][2].getText().equals("X"))
  215.             {
  216.                 VittoriaG1.setVisible(true);
  217.                 postVittoria();
  218.             }
  219.             if(bottoni[0][0].getText().equals("O") && bottoni[1][1].getText().equals("O") && bottoni[2][2].getText().equals("O"))
  220.             {
  221.                 VittoriaG2.setVisible(true);
  222.                 postVittoria();
  223.             }
  224.            
  225.             //VINCE PER COLONNA
  226.             if(bottoni[0][0].getText().equals("X") && bottoni[1][0].getText().equals("X") && bottoni[2][0].getText().equals("X"))
  227.             {
  228.                 VittoriaG1.setVisible(true);
  229.                 postVittoria();
  230.             }  
  231.             if(bottoni[0][0].getText().equals("O") && bottoni[1][0].getText().equals("O") && bottoni[2][0].getText().equals("O"))
  232.             {
  233.                 VittoriaG2.setVisible(true);
  234.                 postVittoria();
  235.             }      
  236.         }
  237.         if(PULSANTE.equals("2"))
  238.         {
  239.             boolean exe = false;
  240.            
  241.             if(Giocatore.equals("G1") && exe == false)
  242.             {
  243.                 bottoni[0][1].setText("X");
  244.                 bottoni[0][1].setForeground(Color.green);
  245.                 Giocatore = "G2";
  246.                 exe = true;
  247.             }
  248.             if(Giocatore.equals("G2") && exe == false)
  249.             {
  250.                 bottoni[0][1].setText("O");
  251.                 bottoni[0][1].setForeground(Color.red);
  252.                 Giocatore = "G1";
  253.                 exe = true;
  254.             }
  255.            
  256.             //Controlla se ha vinto qualcuno
  257.             //VINCE PER RIGA
  258.             if(bottoni[0][1].getText().equals("X") && bottoni[0][0].getText().equals("X") && bottoni[0][2].getText().equals("X"))
  259.             {
  260.                 VittoriaG1.setVisible(true);
  261.                 postVittoria();
  262.             }
  263.             if(bottoni[0][1].getText().equals("O") && bottoni[0][0].getText().equals("O") && bottoni[0][2].getText().equals("O"))
  264.             {
  265.                 VittoriaG2.setVisible(true);
  266.                 postVittoria();
  267.             }
  268.            
  269.             //VINCE PER COLONNA
  270.             if(bottoni[0][1].getText().equals("X") && bottoni[1][1].getText().equals("X") && bottoni[2][1].getText().equals("X"))
  271.             {
  272.                 VittoriaG1.setVisible(true);
  273.                 postVittoria();
  274.             }  
  275.             if(bottoni[0][1].getText().equals("O") && bottoni[1][1].getText().equals("O") && bottoni[2][1].getText().equals("O"))
  276.             {
  277.                 VittoriaG2.setVisible(true);
  278.                 postVittoria();
  279.             }
  280.         }
  281.         if(PULSANTE.equals("3"))
  282.         {
  283.             boolean exe = false;
  284.            
  285.             if(Giocatore.equals("G1") && exe == false)
  286.             {
  287.                 bottoni[0][2].setText("X");
  288.                 bottoni[0][2].setForeground(Color.green);
  289.                 Giocatore = "G2";
  290.                 exe = true;
  291.             }
  292.             if(Giocatore.equals("G2") && exe == false)
  293.             {
  294.                 bottoni[0][2].setText("O");
  295.                 bottoni[0][2].setForeground(Color.red);
  296.                 Giocatore = "G1";
  297.                 exe = true;
  298.             }
  299.            
  300.             //Controlla se ha vinto qualcuno
  301.             //VINCE PER RIGA
  302.             if(bottoni[0][2].getText().equals("X") && bottoni[0][0].getText().equals("X") && bottoni[0][1].getText().equals("X"))
  303.             {
  304.                 VittoriaG1.setVisible(true);
  305.                 postVittoria();
  306.             }
  307.             if(bottoni[0][2].getText().equals("O") && bottoni[0][0].getText().equals("O") && bottoni[0][1].getText().equals("O"))
  308.             {
  309.                 VittoriaG2.setVisible(true);
  310.                 postVittoria();
  311.             }
  312.            
  313.             //VINCE PER DIAGONALE
  314.             if(bottoni[0][2].getText().equals("X") && bottoni[1][1].getText().equals("X") && bottoni[2][0].getText().equals("X"))
  315.             {
  316.                 VittoriaG1.setVisible(true);
  317.                 postVittoria();
  318.             }
  319.             if(bottoni[0][2].getText().equals("O") && bottoni[1][1].getText().equals("O") && bottoni[2][0].getText().equals("O"))
  320.             {
  321.                 VittoriaG2.setVisible(true);
  322.                 postVittoria();
  323.             }          
  324.            
  325.             //VINCE PER COLONNA
  326.             if(bottoni[0][2].getText().equals("X") && bottoni[1][2].getText().equals("X") && bottoni[2][2].getText().equals("X"))
  327.             {
  328.                 VittoriaG1.setVisible(true);
  329.                 postVittoria();
  330.             }  
  331.             if(bottoni[0][2].getText().equals("O") && bottoni[1][2].getText().equals("O") && bottoni[2][2].getText().equals("O"))
  332.             {
  333.                 VittoriaG2.setVisible(true);
  334.                 postVittoria();
  335.             }
  336.         }
  337.         if(PULSANTE.equals("4"))
  338.         {
  339.             boolean exe = false;
  340.            
  341.             if(Giocatore.equals("G1") && exe == false)
  342.             {
  343.                 bottoni[1][0].setText("X");
  344.                 bottoni[1][0].setForeground(Color.green);
  345.                 Giocatore = "G2";
  346.                 exe = true;
  347.             }
  348.             if(Giocatore.equals("G2") && exe == false)
  349.             {
  350.                 bottoni[1][0].setText("O");
  351.                 bottoni[1][0].setForeground(Color.red);
  352.                 Giocatore = "G1";
  353.                 exe = true;
  354.             }
  355.            
  356.             //Controlla se ha vinto qualcuno
  357.             //VINCE PER RIGA
  358.             if(bottoni[1][0].getText().equals("X") && bottoni[1][1].getText().equals("X") && bottoni[1][2].getText().equals("X"))
  359.             {
  360.                 VittoriaG1.setVisible(true);
  361.                 postVittoria();
  362.             }
  363.             if(bottoni[1][0].getText().equals("O") && bottoni[1][1].getText().equals("O") && bottoni[1][2].getText().equals("O"))
  364.             {
  365.                 VittoriaG2.setVisible(true);
  366.                 postVittoria();
  367.             }  
  368.            
  369.             //VINCE PER COLONNA
  370.             if(bottoni[1][0].getText().equals("X") && bottoni[0][0].getText().equals("X") && bottoni[2][0].getText().equals("X"))
  371.             {
  372.                 VittoriaG1.setVisible(true);
  373.                 postVittoria();
  374.             }  
  375.             if(bottoni[1][0].getText().equals("O") && bottoni[0][0].getText().equals("O") && bottoni[2][0].getText().equals("O"))
  376.             {
  377.                 VittoriaG2.setVisible(true);
  378.                 postVittoria();
  379.             }
  380.         }
  381.         if(PULSANTE.equals("5"))
  382.         {
  383.             boolean exe = false;
  384.            
  385.             if(Giocatore.equals("G1") && exe == false)
  386.             {
  387.                 bottoni[1][1].setText("X");
  388.                 bottoni[1][1].setForeground(Color.green);
  389.                 Giocatore = "G2";
  390.                 exe = true;
  391.             }
  392.             if(Giocatore.equals("G2") && exe == false)
  393.             {
  394.                 bottoni[1][1].setText("O");
  395.                 bottoni[1][1].setForeground(Color.red);
  396.                 Giocatore = "G1";
  397.                 exe = true;
  398.             }
  399.            
  400.             //Controlla se ha vinto qualcuno
  401.             //VINCE PER RIGA
  402.             if(bottoni[1][1].getText().equals("X") && bottoni[1][0].getText().equals("X") && bottoni[1][2].getText().equals("X"))
  403.             {
  404.                 VittoriaG1.setVisible(true);
  405.                 postVittoria();
  406.             }
  407.             if(bottoni[1][1].getText().equals("O") && bottoni[1][0].getText().equals("O") && bottoni[1][2].getText().equals("O"))
  408.             {
  409.                 VittoriaG2.setVisible(true);
  410.                 postVittoria();
  411.             }
  412.            
  413.             //VINCE PER DIAGONALE 1
  414.             if(bottoni[1][1].getText().equals("X") && bottoni[0][0].getText().equals("X") && bottoni[2][2].getText().equals("X"))
  415.             {
  416.                 VittoriaG1.setVisible(true);
  417.                 postVittoria();
  418.             }
  419.             if(bottoni[1][1].getText().equals("O") && bottoni[0][0].getText().equals("O") && bottoni[2][2].getText().equals("O"))
  420.             {
  421.                 VittoriaG2.setVisible(true);
  422.                 postVittoria();
  423.             }
  424.             //VINCE PER DIAGONALE 2
  425.             if(bottoni[1][1].getText().equals("X") && bottoni[0][2].getText().equals("X") && bottoni[2][0].getText().equals("X"))
  426.             {
  427.                 VittoriaG1.setVisible(true);
  428.                 postVittoria();
  429.             }
  430.             if(bottoni[1][1].getText().equals("O") && bottoni[0][2].getText().equals("O") && bottoni[2][0].getText().equals("O"))
  431.             {
  432.                 VittoriaG2.setVisible(true);
  433.                 postVittoria();
  434.             }
  435.            
  436.             //VINCE PER COLONNA
  437.             if(bottoni[1][1].getText().equals("X") && bottoni[2][1].getText().equals("X") && bottoni[0][1].getText().equals("X"))
  438.             {
  439.                 VittoriaG1.setVisible(true);
  440.                 postVittoria();
  441.             }  
  442.             if(bottoni[1][1].getText().equals("O") && bottoni[2][1].getText().equals("O") && bottoni[0][1].getText().equals("O"))
  443.             {
  444.                 VittoriaG2.setVisible(true);
  445.                 postVittoria();
  446.             }
  447.         }
  448.         if(PULSANTE.equals("6"))
  449.         {
  450.             boolean exe = false;
  451.            
  452.             if(Giocatore.equals("G1") && exe == false)
  453.             {
  454.                 bottoni[1][2].setText("X");
  455.                 bottoni[1][2].setForeground(Color.green);
  456.                 Giocatore = "G2";
  457.                 exe = true;
  458.             }
  459.             if(Giocatore.equals("G2") && exe == false)
  460.             {
  461.                 bottoni[1][2].setText("O");
  462.                 bottoni[1][2].setForeground(Color.red);
  463.                 Giocatore = "G1";
  464.                 exe = true;
  465.             }
  466.            
  467.             //Controlla se ha vinto qualcuno
  468.             //VINCE PER RIGA
  469.             if(bottoni[1][2].getText().equals("X") && bottoni[1][0].getText().equals("X") && bottoni[1][1].getText().equals("X"))
  470.             {
  471.                 VittoriaG1.setVisible(true);
  472.                 postVittoria();
  473.             }
  474.             if(bottoni[1][2].getText().equals("O") && bottoni[1][0].getText().equals("O") && bottoni[1][1].getText().equals("O"))
  475.             {
  476.                 VittoriaG2.setVisible(true);
  477.                 postVittoria();
  478.             }
  479.                        
  480.             //VINCE PER COLONNA
  481.             if(bottoni[1][2].getText().equals("X") && bottoni[2][2].getText().equals("X") && bottoni[0][2].getText().equals("X"))
  482.             {
  483.                 VittoriaG1.setVisible(true);
  484.                 postVittoria();
  485.             }  
  486.             if(bottoni[1][2].getText().equals("O") && bottoni[2][2].getText().equals("O") && bottoni[0][2].getText().equals("O"))
  487.             {
  488.                 VittoriaG2.setVisible(true);
  489.                 postVittoria();
  490.             }
  491.         }
  492.        
  493.         if(PULSANTE.equals("7"))
  494.         {
  495.             boolean exe = false;
  496.            
  497.             if(Giocatore.equals("G1") && exe == false)
  498.             {
  499.                 bottoni[2][0].setText("X");
  500.                 bottoni[2][0].setForeground(Color.green);
  501.                 Giocatore = "G2";
  502.                 exe = true;
  503.             }
  504.             if(Giocatore.equals("G2") && exe == false)
  505.             {
  506.                 bottoni[2][0].setText("O");
  507.                 bottoni[2][0].setForeground(Color.red);
  508.                 Giocatore = "G1";
  509.                 exe = true;
  510.             }
  511.            
  512.             //Controlla se ha vinto qualcuno
  513.             //VINCE PER RIGA
  514.             if(bottoni[2][0].getText().equals("X") && bottoni[2][1].getText().equals("X") && bottoni[2][2].getText().equals("X"))
  515.             {
  516.                 VittoriaG1.setVisible(true);
  517.                 postVittoria();
  518.             }
  519.             if(bottoni[2][0].getText().equals("O") && bottoni[2][1].getText().equals("O") && bottoni[2][2].getText().equals("O"))
  520.             {
  521.                 VittoriaG2.setVisible(true);
  522.                 postVittoria();
  523.             }
  524.            
  525.             //VINCE PER DIAGONALE
  526.             if(bottoni[2][0].getText().equals("X") && bottoni[0][2].getText().equals("X") && bottoni[1][1].getText().equals("X"))
  527.             {
  528.                 VittoriaG1.setVisible(true);
  529.                 postVittoria();
  530.             }
  531.             if(bottoni[2][0].getText().equals("O") && bottoni[0][2].getText().equals("O") && bottoni[1][1].getText().equals("O"))
  532.             {
  533.                 VittoriaG2.setVisible(true);
  534.                 postVittoria();
  535.             }
  536.            
  537.             //VINCE PER COLONNA
  538.             if(bottoni[2][0].getText().equals("X") && bottoni[0][0].getText().equals("X") && bottoni[1][0].getText().equals("X"))
  539.             {
  540.                 VittoriaG1.setVisible(true);
  541.                 postVittoria();
  542.             }  
  543.             if(bottoni[1][1].getText().equals("O") && bottoni[0][0].getText().equals("O") && bottoni[1][0].getText().equals("O"))
  544.             {
  545.                 VittoriaG2.setVisible(true);
  546.                 postVittoria();
  547.             }
  548.         }
  549.        
  550.         if(PULSANTE.equals("8"))
  551.         {
  552.             boolean exe = false;
  553.            
  554.             if(Giocatore.equals("G1") && exe == false)
  555.             {
  556.                 bottoni[2][1].setText("X");
  557.                 bottoni[2][1].setForeground(Color.green);
  558.                 Giocatore = "G2";
  559.                 exe = true;
  560.             }
  561.             if(Giocatore.equals("G2") && exe == false)
  562.             {
  563.                 bottoni[2][1].setText("O");
  564.                 bottoni[2][1].setForeground(Color.red);
  565.                 Giocatore = "G1";
  566.                 exe = true;
  567.             }
  568.            
  569.             //Controlla se ha vinto qualcuno
  570.             //VINCE PER RIGA
  571.             if(bottoni[2][1].getText().equals("X") && bottoni[2][0].getText().equals("X") && bottoni[2][2].getText().equals("X"))
  572.             {
  573.                 VittoriaG1.setVisible(true);
  574.                 postVittoria();
  575.             }
  576.             if(bottoni[2][1].getText().equals("O") && bottoni[2][0].getText().equals("O") && bottoni[2][2].getText().equals("O"))
  577.             {
  578.                 VittoriaG2.setVisible(true);
  579.                 postVittoria();
  580.             }
  581.            
  582.             //VINCE PER COLONNA
  583.             if(bottoni[2][1].getText().equals("X") && bottoni[0][1].getText().equals("X") && bottoni[1][1].getText().equals("X"))
  584.             {
  585.                 VittoriaG1.setVisible(true);
  586.                 postVittoria();
  587.             }  
  588.             if(bottoni[2][1].getText().equals("O") && bottoni[0][1].getText().equals("O") && bottoni[1][1].getText().equals("O"))
  589.             {
  590.                 VittoriaG2.setVisible(true);
  591.                 postVittoria();
  592.             }
  593.         }
  594.        
  595.         if(PULSANTE.equals("9"))
  596.         {
  597.             boolean exe = false;
  598.            
  599.             if(Giocatore.equals("G1") && exe == false)
  600.             {
  601.                 bottoni[2][2].setText("X");
  602.                 bottoni[2][2].setForeground(Color.green);
  603.                 Giocatore = "G2";
  604.                 exe = true;
  605.             }
  606.             if(Giocatore.equals("G2") && exe == false)
  607.             {
  608.                 bottoni[2][2].setText("O");
  609.                 bottoni[2][2].setForeground(Color.red);
  610.                 Giocatore = "G1";
  611.                 exe = true;
  612.             }
  613.            
  614.             //Controlla se ha vinto qualcuno
  615.             //VINCE PER RIGA
  616.             if(bottoni[2][2].getText().equals("X") && bottoni[2][1].getText().equals("X") && bottoni[2][0].getText().equals("X"))
  617.             {
  618.                 VittoriaG1.setVisible(true);
  619.                 postVittoria();
  620.             }
  621.             if(bottoni[2][2].getText().equals("O") && bottoni[2][1].getText().equals("O") && bottoni[2][0].getText().equals("O"))
  622.             {
  623.                 VittoriaG2.setVisible(true);
  624.                 postVittoria();
  625.             }
  626.            
  627.             //VINCE PER DIAGONALE
  628.             if(bottoni[2][2].getText().equals("X") && bottoni[1][1].getText().equals("X") && bottoni[0][0].getText().equals("X"))
  629.             {
  630.                 VittoriaG1.setVisible(true);
  631.                 postVittoria();
  632.             }
  633.             if(bottoni[2][2].getText().equals("O") && bottoni[1][1].getText().equals("O") && bottoni[0][0].getText().equals("O"))
  634.             {
  635.                 VittoriaG2.setVisible(true);
  636.                 postVittoria();
  637.             }
  638.            
  639.             //VINCE PER COLONNA
  640.             if(bottoni[2][2].getText().equals("X") && bottoni[0][2].getText().equals("X") && bottoni[1][2].getText().equals("X"))
  641.             {
  642.                 VittoriaG1.setVisible(true);
  643.                 postVittoria();
  644.             }  
  645.             if(bottoni[2][2].getText().equals("O") && bottoni[0][2].getText().equals("O") && bottoni[1][2].getText().equals("O"))
  646.             {
  647.                 VittoriaG2.setVisible(true);
  648.                 postVittoria();
  649.             }
  650.         }
  651.         if(PULSANTE.equals("Reset"))
  652.         {
  653.             reset();
  654.         }
  655.     }
  656.    
  657.     /**
  658.      * Genera i bottoni del tris. Viene usata una variabile t per impostare il testo dei bottoni, che va da 0 a 9.
  659.      */
  660.     public void generaBottoni()
  661.     {      
  662.         /* Viene usata una variabile intera t per impostare il testo dei bottoni, che puo essere da 0 a 9.
  663.          * Funge anche da ID per l'ActionPerformed. Vedi commento #### GRIGLIA #### per maggiori informazioni.
  664.          */
  665.        
  666.         int t = 0;
  667.         for(int i = 0; i < 3; i++)
  668.         {
  669.             for(int j = 0; j < 3; j++)
  670.             {
  671.                 if(j == 0 && i == 0)
  672.                 {
  673.                     t = 1;
  674.                     bottoni[i][j] = new JButton(String.valueOf(1));
  675.                 }
  676.                 if(j == 0 && i == 1)
  677.                 {
  678.                     t = 3+(j+1);
  679.                     bottoni[i][j] = new JButton(String.valueOf(t));
  680.                 }
  681.                 if(j == 0 && i == 2)
  682.                 {
  683.                     t = 6 + (j+1);
  684.                     bottoni[i][j] = new JButton(String.valueOf(t));
  685.                 }
  686.                 bottoni[i][j] = new JButton(String.valueOf(t));
  687.                 t++;
  688.                 //Viene creato direttamente l'ActionListener
  689.                 bottoni[i][j].addActionListener(this);
  690.                 bottoni[i][j].setPreferredSize(new Dimension(50, 50));
  691.                 bottoni[i][j].setBackground(Color.orange);
  692.             }
  693.         }
  694.        
  695.         reset.addActionListener(this);
  696.        
  697.     }
  698.    
  699.     /**
  700.      * Genera la parte della finestra contenente i bottoni del tris e il tasto di Reset.
  701.      */
  702.     public void generaPannelloBottoni()
  703.     {
  704.         for(int i = 0; i < 3; i++)
  705.         {
  706.             for(int j = 0; j < 3; j++)
  707.             {
  708.                 griglia.add(bottoni[i][j]);
  709.             }
  710.         }
  711.         griglia.setLayout(new GridLayout(3,3));
  712.        
  713.         tuttiBottoni.add(griglia, BorderLayout.LINE_START);
  714.         reset.setPreferredSize(new Dimension(90, 40));
  715.         reset.setBackground(Color.yellow);
  716.         tuttiBottoni.add(reset, BorderLayout.LINE_END);
  717.        
  718.     }
  719.            
  720.     /**
  721.      * Genera la finestra principale del Tris.
  722.      */
  723.     public void generaFinestra()
  724.     {
  725.         titolo.setForeground(Color.red);
  726.         titolo.setFont(new Font("Ubuntu", Font.BOLD, 28));
  727.         this.getContentPane().add(titolo, BorderLayout.NORTH);
  728.         this.getContentPane().add(tuttiBottoni, BorderLayout.CENTER);
  729.         this.pack();
  730.         this.setResizable(false);
  731.         this.setVisible(true);
  732.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  733.     }
  734.    
  735.     /**
  736.      * Reimposta il testo ed il colore di default dei bottoni, annullando la partita in corso.
  737.      */
  738.     public void reset()
  739.     {
  740.         int t = 0; 
  741.         for(int i = 0; i < 3; i++)
  742.             {
  743.                 for(int j = 0; j < 3; j++)
  744.                 {
  745.                     bottoni[i][j].setEnabled(true);
  746.                    
  747.                     if(j == 0 && i == 0)
  748.                     {
  749.                         t = 1;
  750.                         bottoni[i][j].setText(String.valueOf(1));
  751.                     }
  752.                     if(j == 0 && i == 1)
  753.                     {
  754.                         t = 3+(j+1);
  755.                         bottoni[i][j].setText(String.valueOf(t));
  756.                     }
  757.                     if(j == 0 && i == 2)
  758.                     {
  759.                         t = 6 + (j+1);
  760.                         bottoni[i][j].setText(String.valueOf(t));
  761.                     }
  762.                     bottoni[i][j].setText(String.valueOf(t));
  763.                     bottoni[i][j].setForeground(Color.black);
  764.                     t++;
  765.                    
  766.                 }
  767.             }
  768.             Giocatore = "G1";
  769.     }
  770.    
  771.     /**
  772.      * Disattiva i tasti in modo che non possano essere cliccati dopo una condizione di vittoria.
  773.      */
  774.     public void postVittoria()
  775.     {
  776.         for(int i = 0; i < 3; i++)
  777.         {
  778.             for(int j = 0; j < 3; j++)
  779.             {
  780.                 bottoni[i][j].setEnabled(false);
  781.             }
  782.         }
  783.     }
  784. }
  785.  
  786. //Vittoria.Java
  787. package gioco;
  788.  
  789. import java.awt.event.ActionEvent;
  790. import java.awt.event.ActionListener;
  791. import java.awt.*;
  792. import javax.swing.*;
  793.  
  794. /**
  795.  *
  796.  * @author Christian V.
  797.  * @version 1.0 del 17/02/2018
  798.  *
  799.  */
  800. public class Vittoria extends JFrame implements ActionListener
  801. {
  802.     /**
  803.      * Pannello principale della finestra.
  804.      */
  805.     private JPanel pannello = new JPanel();
  806.    
  807.     /**
  808.      * Bottone OK. Serve per chiudere la finestra.
  809.      */
  810.     private JButton OK = new JButton("OK");
  811.    
  812.     /**
  813.      * Label che indica chi ha vinto.
  814.      */
  815.     private JLabel avviso;
  816.    
  817.     /**
  818.      * Costruttore. Genrea la finestra.
  819.      * @param Giocatore Indica chi ha vinto.
  820.      */
  821.     public Vittoria(String Giocatore)
  822.     {
  823.         super("ABBIAMO UN VINCITORE!");
  824.        
  825.         //In base al giocatore cambia il testo
  826.         if(Giocatore.equals("G1"))
  827.         {
  828.             avviso = new JLabel ("CONGRATULAZIONI GIOCATORE 1, HAI VINTO!!!", SwingConstants.CENTER);
  829.         }
  830.         if(Giocatore.equals("G2"))
  831.         {
  832.             avviso = new JLabel ("CONGRATULAZIONI GIOCATORE 2, HAI VINTO!!!", SwingConstants.CENTER);
  833.         }
  834.        
  835.         avviso.setForeground(Color.red);
  836.         avviso.setFont(new Font("Ubuntu", Font.ITALIC, 16));
  837.         pannello.add(avviso, BorderLayout.NORTH);
  838.         pannello.add(OK);
  839.         OK.addActionListener(this);
  840.         pannello.setLayout(new GridLayout(2,1));
  841.         this.getContentPane().add(pannello);
  842.         this.setSize(400, 100);
  843.         this.setResizable(false);
  844.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  845.     }
  846.    
  847.     /**
  848.      * Controlla se e' stato premuto il tasto "OK" ed in caso chiude la finestra.
  849.      */
  850.     public void actionPerformed(ActionEvent E)
  851.     {
  852.         String PULSANTE = E.getActionCommand();
  853.         if(PULSANTE.equals("OK"))
  854.         {                  
  855.             Vittoria.super.dispose();
  856.         }
  857.     }
  858. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement