/* Copyright 2009 Sebastiano Tronto This file is part of JBriscola. JBriscola is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. JBriscola is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with JBriscola; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ import java.io.*; import java.util.*; import javax.swing.*; import java.awt.*; public class Main { public static int semeBriscola, punteggio, punteggioCPU, mano, cartaDaPescare, cartaDaGiocare; public static boolean toccaAllaCPU = false; public static boolean CPUHaGiocato = false; public static boolean haGiocatoPrima = true; public static boolean sound = true; public static Frame frame; public static Color color = new Color( 0, 150, 0 ); public static String version = "0.2 Beta 2"; public static String stringaBottonePrendi = "Prendi/Lascia carte"; public static String stringaPrimaGioca = "Prima Gioca!"; public static String stringaUltime4 = "Ultima carta - Occhio alla briscola!"; public static String stringaVinto = "Hai Vinto!"; public static String stringaPerso = "Hai Perso"; public static String stringaPareggio = "Pareggio"; public static String stringaGiocatore = "Giocatore: "; public static String stringaComputer = "\nComputer: "; public static String stringaNuovaPartita = "Nuova Partita"; public static String stringaVuoiDavveroIniziare = "Vuoi davvero iniziare una nuova partita?"; public static String stringaVuoiDavveroUscire = "Vuoi davvero uscire?"; public static String stringaSi = "Si"; public static String stringaNo = "No"; public static String stringaOpzioni = "Opzioni..."; public static String stringaEsci = "Esci"; public static String stringaImpossibileConfigurare = "Impossibile modificare il file di configurazione.\nSegnalare il bug a: sebastiano@luganega.org\n\nEccezione:\n"; public static String stringaLingua = "Lingua"; public static String stringaAnnulla = "Annulla"; public static String stringaIt = "Italiano"; public static String stringaLa = "Latino"; public static String stringaBL = "Dialetto Bellunese"; public static String stringaBV = "Dialetto Basso Veneto"; public static String stringaNecessarioRiavviare = "E' necessario riavviare JBriscola se sono state\nmodificate impostazioni riguardanti la lingua.\nAlcune parti saranno comunque tradotte prima."; public static String stringaModificaOpzioni = "Modifica Opzioni"; public static String stringaInformazioni = "Informazioni"; public static String stringaInformazioni2 = "JBriscola e' un gioco di briscola per pc scritto in java ideato\ne realizzato da Sebastiano Tronto. Il gioco viene rilasciato sotto licenza GNU/Gpl versione 2 o successive; questo permette\npotenzialmente a chiunque di modificare il gioco partendo dal codice sorgente del programma. Se non avete ricevuto i sorgenti\nassieme al gioco, potete richiedermeli con un'e-mail a sebastiano@luganega.org.\n\nJBriscola version " + version + "\nCopyright 2009 Sebastiano Tronto, license GNU/Gpl 2.0 or later\nE-mail: sebastiano@luganega.org"; public static String stringaSuono = "Effetti Sonori"; public static String stringaPunteggio = "Punteggio"; public static String stringaSfondo = "Sfondo"; public static String lang, soundString; public static File[] suoni = new File[6]; public static File suonoVinto, suonoPerso, suonoPareggio; public static void main( String args[] ) { settaOpzioni(); frame = new Frame(); frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE ); frame.setResizable( false ); frame.setSize( 600, 600 ); frame.setLocation( (Toolkit.getDefaultToolkit().getScreenSize().width - 600) / 2, (Toolkit.getDefaultToolkit().getScreenSize().height - 600) / 2); frame.setVisible( true ); } public void mischia() { mano = 0; punteggio = 0; punteggioCPU = 0; cartaDaPescare = 6; ImageIcon aux; frame.mazzo = true; toccaAllaCPU = false; CPUHaGiocato = false; haGiocatoPrima = true; for ( int i = 0, k = 0; i < 10; i++ ) for ( int j = 0; j < 4; j++, k++ ) frame.arrayCarteMescolate[k] = frame.arrayCarte[i][j]; for ( int i = 0; i < 391; i++ ) { double a = Math.random() * 40; int x = (int) a; double b = Math.random() * 40; int y = (int) b; aux = frame.arrayCarteMescolate[x]; frame.arrayCarteMescolate[x] = frame.arrayCarteMescolate[y]; frame.arrayCarteMescolate[y] = aux; } char auxChar[] = frame.arrayCarteMescolate[39].toString().toCharArray(); semeBriscola = auxChar[auxChar.length-5] - 49; frame.carteInMano[0] = frame.arrayCarteMescolate[0]; frame.carteInMano[1] = frame.arrayCarteMescolate[1]; frame.carteInMano[2] = frame.arrayCarteMescolate[2]; frame.carteCPU[0] = frame.arrayCarteMescolate[3]; frame.carteCPU[1] = frame.arrayCarteMescolate[4]; frame.carteCPU[2] = frame.arrayCarteMescolate[5]; frame.ultimaCarta = frame.arrayCarteMescolate[39]; frame.giocata[0] = null; frame.giocata[1] = null; } public void giocaCPU() { if ( mano < 16 ) { if ( frame.giocata[0] == null ) { if ( vaiPunti() ); else if ( vaiLiscio() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiTre() ); else if ( vaiAsso() ); else; } else { if ( haLisciato() ) { if ( vaiSopra() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoPunti() ) { if ( vaiSopra() ); else if ( vaiLiscio() ); else if ( vaiTaglio() ); else if ( vaiPunti() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haTagliato() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoBriscolaAlta() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTre() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoTre() ) { if ( vaiAsso() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); } else if ( haMessoAsso() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiTre() ); } else if ( haCaricato() ) { if ( vaiSopra() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiAsso() ); else if ( vaiTaglio() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiCarico() ); } } } else if ( mano == 16 ) { if ( frame.giocata[0] == null ) { char aux[]; aux = frame.ultimaCarta.toString().toCharArray(); if ( aux[aux.length-7] - 48 == 3 || aux[aux.length-7] - 48 == 1 ) { if ( vaiCarico() ); else if ( vaiPunti() ); else if ( vaiLiscio() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiTre() ); else if ( vaiAsso() ); else; } else { if ( vaiPunti() ); else if ( vaiLiscio() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiTre() ); else if ( vaiAsso() ); else; } } else { char aux[]; aux = frame.ultimaCarta.toString().toCharArray(); if ( aux[aux.length-7] - 48 == 3 || aux[aux.length-7] - 48 == 1 ) { if ( haCaricato() ) { if ( vaiSopra() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTre() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiAsso() ); else if ( vaiCarico() ); } } else { if ( haLisciato() ) { if ( vaiSopra() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoPunti() ) { if ( vaiSopra() ); else if ( vaiLiscio() ); else if ( vaiTaglio() ); else if ( vaiPunti() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haTagliato() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoBriscolaAlta() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTre() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoTre() ) { if ( vaiAsso() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); } else if ( haMessoAsso() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiTre() ); } else if ( haCaricato() ) { if ( vaiSopra() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiAsso() ); else if ( vaiTaglio() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiCarico() ); } } } } else if ( mano == 17 ) { if ( frame.giocata[0] == null ) { if ( hoAsso() ) { if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiTaglio() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiAsso() ); else if ( vaiCarico() ); } else { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiTre() ); } } else { if ( haLisciato() ) { if ( vaiSopra() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoPunti() ) { if ( vaiSopra() ); else if ( vaiLiscio() ); else if ( vaiTaglio() ); else if ( vaiPunti() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haTagliato() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoBriscolaAlta() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTre() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoTre() ) { if ( vaiAsso() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); } else if ( haMessoAsso() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiTre() ); } else if ( haCaricato() ) { if ( vaiSopra() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiAsso() ); else if ( vaiTaglio() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiCarico() ); } } } else if ( mano == 18 ) { if ( frame.giocata[0] == null ) { if ( vaiAsso() ); else if ( vaiCarico() ); else if ( vaiBriscolaAlta() ); else if ( vaiTaglio() ); else if ( vaiPunti() ); else if ( vaiLiscio() ); else if ( vaiTre() ); } else { if ( haLisciato() ) { if ( vaiSopra() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoPunti() ) { if ( vaiSopra() ); else if ( vaiLiscio() ); else if ( vaiTaglio() ); else if ( vaiPunti() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haTagliato() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoBriscolaAlta() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTre() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiAsso() ); } else if ( haMessoTre() ) { if ( vaiAsso() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); } else if ( haMessoAsso() ) { if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiTaglio() ); else if ( vaiBriscolaAlta() ); else if ( vaiCarico() ); else if ( vaiTre() ); } else if ( haCaricato() ) { if ( vaiSopra() ); else if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiAsso() ); else if ( vaiTaglio() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiCarico() ); } } } else { if ( vaiTre() ); else if ( vaiBriscolaAlta() ); else if ( vaiAsso() ); else if ( vaiTaglio() ); else if ( vaiLiscio() ); else if ( vaiPunti() ); else if ( vaiCarico() ); } frame.giocata[1] = frame.carteCPU[cartaDaGiocare]; frame.carteCPU[cartaDaGiocare] = null; frame.pannello.repaint(); CPUHaGiocato = true; if ( frame.giocata[0] == null ) toccaAllaCPU = false; } public void chiPrende() { char aux[], auxCPU[]; aux = frame.giocata[0].toString().toCharArray(); auxCPU = frame.giocata[1].toString().toCharArray(); giocatorePrende( ( (aux[aux.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-5] - 49 != semeBriscola) ) || ( (aux[aux.length-5] == auxCPU[auxCPU.length-5]) && laPrimaEPiuAlta( aux[aux.length-7] - 48, auxCPU[auxCPU.length-7] - 48 ) ) || ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && (aux[aux.length-5] != auxCPU[auxCPU.length-5]) && haGiocatoPrima ) ); } public boolean laPrimaEPiuAlta( int prima, int seconda ) { int a, b; switch ( prima ) { case 0: a = 10; break; case 1: a = 12; break; case 3: a = 11; break; default: a = prima; break; } switch ( seconda ) { case 0: b = 10; break; case 1: b = 12; break; case 3: b = 11; break; default: b = seconda; break; } return a > b; } public void giocatorePrende( boolean giocatore ) { if ( giocatore ) { toccaAllaCPU = CPUHaGiocato = false; haGiocatoPrima = true; } else { toccaAllaCPU = true; CPUHaGiocato = haGiocatoPrima = false; } daiPunti( giocatore ); if ( toccaAllaCPU ) giocaCPU(); } public void daiPunti( boolean giocatore ) { char aux[], auxCPU[]; aux = frame.giocata[0].toString().toCharArray(); auxCPU = frame.giocata[1].toString().toCharArray(); int punti = 0; switch( aux[aux.length-7] - 48 ) { case 0: punti += 4; break; case 1: punti += 11; break; case 3: punti += 10; break; case 8: punti += 2; break; case 9: punti += 3; break; default: break; } switch( auxCPU[auxCPU.length-7] - 48 ) { case 0: punti += 4; break; case 1: punti += 11; break; case 3: punti += 10; break; case 8: punti += 2; break; case 9: punti += 3; break; default: break; } frame.giocata[0] = frame.giocata[1] = null; if ( giocatore ) { punteggio += punti; if ( mano < 18 ) { if ( frame.carteInMano[0] == null ) frame.carteInMano[0] = frame.arrayCarteMescolate[cartaDaPescare]; if ( frame.carteInMano[1] == null ) frame.carteInMano[1] = frame.arrayCarteMescolate[cartaDaPescare]; if ( frame.carteInMano[2] == null ) frame.carteInMano[2] = frame.arrayCarteMescolate[cartaDaPescare]; cartaDaPescare++; if ( frame.carteCPU[0] == null ) frame.carteCPU[0] = frame.arrayCarteMescolate[cartaDaPescare]; if ( frame.carteCPU[1] == null ) frame.carteCPU[1] = frame.arrayCarteMescolate[cartaDaPescare]; if ( frame.carteCPU[2] == null ) frame.carteCPU[2] = frame.arrayCarteMescolate[cartaDaPescare]; cartaDaPescare++; } } else { punteggioCPU += punti; if ( mano < 18 ) { if ( frame.carteCPU[0] == null ) frame.carteCPU[0] = frame.arrayCarteMescolate[cartaDaPescare]; if ( frame.carteCPU[1] == null ) frame.carteCPU[1] = frame.arrayCarteMescolate[cartaDaPescare]; if ( frame.carteCPU[2] == null ) frame.carteCPU[2] = frame.arrayCarteMescolate[cartaDaPescare]; cartaDaPescare++; if ( frame.carteInMano[0] == null ) frame.carteInMano[0] = frame.arrayCarteMescolate[cartaDaPescare]; if ( frame.carteInMano[1] == null ) frame.carteInMano[1] = frame.arrayCarteMescolate[cartaDaPescare]; if ( frame.carteInMano[2] == null ) frame.carteInMano[2] = frame.arrayCarteMescolate[cartaDaPescare]; cartaDaPescare++; } } frame.pannello.repaint(); frame.repaint(); } public boolean haLisciato() { char auxCPU[]; auxCPU = frame.giocata[0].toString().toCharArray(); return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && (auxCPU[auxCPU.length-7] - 48 != 0 ) && (auxCPU[auxCPU.length-7] - 48 != 1 ) && (auxCPU[auxCPU.length-7] - 48 != 3 ) && (auxCPU[auxCPU.length-7] - 48 < 8 ) ); } public boolean haMessoPunti() { char auxCPU[]; auxCPU = frame.giocata[0].toString().toCharArray(); return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && ( (auxCPU[auxCPU.length-7] - 48 == 0 ) || (auxCPU[auxCPU.length-7] - 48 == 8 ) || (auxCPU[auxCPU.length-7] - 48 == 9 ) ) ); } public boolean haTagliato() { char auxCPU[]; auxCPU = frame.giocata[0].toString().toCharArray(); return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-7] - 48 != 0) && (auxCPU[auxCPU.length-7] - 48 != 1) && (auxCPU[auxCPU.length-7] - 48 != 3) && (auxCPU[auxCPU.length-7] - 48 <= 7) ); } public boolean haMessoBriscolaAlta() { char auxCPU[]; auxCPU = frame.giocata[0].toString().toCharArray(); return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && ( (auxCPU[auxCPU.length-7] - 48 == 0) || (auxCPU[auxCPU.length-7] - 48 == 8) || (auxCPU[auxCPU.length-7] - 48 == 9) ) ); } public boolean haMessoTre() { char auxCPU[]; auxCPU = frame.giocata[0].toString().toCharArray(); return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 3) ); } public boolean haMessoAsso() { char auxCPU[]; auxCPU = frame.giocata[0].toString().toCharArray(); return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 1) ); } public boolean haCaricato() { char auxCPU[]; auxCPU = frame.giocata[0].toString().toCharArray(); return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && ( (auxCPU[auxCPU.length-7] - 48 == 1 ) || (auxCPU[auxCPU.length-7] - 48 == 3 ) ) ); } public boolean vaiLiscio() { char auxCPU[]; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && (auxCPU[auxCPU.length-7] - 48 != 0 ) && (auxCPU[auxCPU.length-7] - 48 != 1 ) && (auxCPU[auxCPU.length-7] - 48 != 3 ) && (auxCPU[auxCPU.length-7] - 48 < 8 ) ) { cartaDaGiocare = i; return true; } } } return false; } public boolean vaiPunti() { char[] auxCPU; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 8 ) ) { cartaDaGiocare = i; return true; } } } for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 9 ) ) { cartaDaGiocare = i; return true; } } } for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 0 ) ) { cartaDaGiocare = i; return true; } } } return false; } public boolean vaiTaglio() { char auxCPU[]; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( auxCPU[auxCPU.length-5] - 49 == semeBriscola && (auxCPU[auxCPU.length-7] - 48 != 0) && (auxCPU[auxCPU.length-7] - 48 != 1) && (auxCPU[auxCPU.length-7] - 48 != 3) && (auxCPU[auxCPU.length-7] - 48 <= 7) ) { cartaDaGiocare = i; return true; } } } return false; } public boolean vaiBriscolaAlta() { char[] auxCPU; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 8 ) ) { cartaDaGiocare = i; return true; } } } for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 9 ) ) { cartaDaGiocare = i; return true; } } } for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 0 ) ) { cartaDaGiocare = i; return true; } } } return false; } public boolean vaiTre() { char auxCPU[]; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( auxCPU[auxCPU.length-5] - 49 == semeBriscola && (auxCPU[auxCPU.length-7] - 48 == 3) ) { cartaDaGiocare = i; return true; } } } return false; } public boolean vaiAsso() { char auxCPU[]; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( auxCPU[auxCPU.length-5] - 49 == semeBriscola && (auxCPU[auxCPU.length-7] - 48 == 1) ) { cartaDaGiocare = i; return true; } } } return false; } public boolean vaiCarico() { char[] auxCPU; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 3 ) ) { cartaDaGiocare = i; return true; } } } for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 1 ) ) { cartaDaGiocare = i; return true; } } } return false; } public boolean vaiSopra() { if ( frame.giocata[0] == null ) return false; int a = -1; int b = -1; int c = -1; boolean laPrimaPuoAndareSopra = false; boolean laSecondaPuoAndareSopra = false; boolean laTerzaPuoAndareSopra = false; char[] auxCPU1 = new char[1024]; char[] auxCPU2 = new char[1024]; char[] auxCPU3 = new char[1024]; char[] aux = frame.giocata[0].toString().toCharArray(); if ( aux[aux.length-7] - 48 == 1 ) return false; if ( frame.carteCPU[0] != null ) { auxCPU1 = frame.carteCPU[0].toString().toCharArray(); a = auxCPU1[auxCPU1.length-7] - 48; if ( (auxCPU1[auxCPU1.length-5] - 49 == aux[aux.length-5] - 49) && laPrimaEPiuAlta( a, aux[aux.length-7] - 48 ) ) laPrimaPuoAndareSopra = true; } if ( frame.carteCPU[1] != null ) { auxCPU2 = frame.carteCPU[1].toString().toCharArray(); b = auxCPU2[auxCPU2.length-7] - 48; if ( (auxCPU2[auxCPU2.length-5] - 49 == aux[aux.length-5] - 49) && laPrimaEPiuAlta( b, aux[aux.length-7] - 48 ) ) laSecondaPuoAndareSopra = true; } if ( frame.carteCPU[2] != null ) { auxCPU3 = frame.carteCPU[2].toString().toCharArray(); c = auxCPU3[auxCPU3.length-7] - 48; if ( (auxCPU3[auxCPU3.length-5] - 49 == aux[aux.length-5] - 49) && laPrimaEPiuAlta( c, aux[aux.length-7] - 48 ) ) laTerzaPuoAndareSopra = true; } if ( !laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra ) return false; else if ( laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra ) cartaDaGiocare = 0; else if ( !laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra ) cartaDaGiocare = 1; else if ( !laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && laTerzaPuoAndareSopra ) cartaDaGiocare = 2; else if ( laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra ) if ( laPrimaEPiuAlta( a, b ) ) cartaDaGiocare = 0; else cartaDaGiocare = 1; else if ( !laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && laTerzaPuoAndareSopra ) if ( laPrimaEPiuAlta( b, c ) ) cartaDaGiocare = 1; else cartaDaGiocare = 2; else if ( laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && laTerzaPuoAndareSopra ) if ( laPrimaEPiuAlta( a, c ) ) cartaDaGiocare = 0; else cartaDaGiocare = 2; else if ( laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && laTerzaPuoAndareSopra ) if ( laPrimaEPiuAlta( a, b ) ) if ( laPrimaEPiuAlta( a, c ) ) cartaDaGiocare = 0; else cartaDaGiocare = 2; else if ( laPrimaEPiuAlta( b, c ) ) cartaDaGiocare = 1; else cartaDaGiocare = 2; aux = frame.carteCPU[cartaDaGiocare].toString().toCharArray(); if ( (aux[aux.length-7] - 48 != 0) && (aux[aux.length-7] - 48 != 1) && (aux[aux.length-7] - 48 != 3) && (aux[aux.length-7] - 48 <= 7) ) return false; return true; } public boolean hoCarico() { char auxCPU[]; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && ( (auxCPU[auxCPU.length-7] - 48 == 1 ) || (auxCPU[auxCPU.length-7] - 48 == 3 ) ) ) { return true; } } } return false; } public boolean hoAsso() { char auxCPU[]; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 1 ) ) { return true; } } } return false; } public boolean hoTre() { char auxCPU[]; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-7] - 48 == 3 ) ) { return true; } } } return false; } public boolean hoBriscolaAlta() { char auxCPU[]; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && ( (auxCPU[auxCPU.length-7] - 48 == 0 ) || (auxCPU[auxCPU.length-7] - 48 == 8 ) || (auxCPU[auxCPU.length-7] - 48 == 9 ) ) ) { return true; } } } return false; } public boolean hoTaglio() { char auxCPU[]; for ( int i = 0; i < 3; i++ ) { if ( frame.carteCPU[i] != null ) { auxCPU = frame.carteCPU[i].toString().toCharArray(); if ( (auxCPU[auxCPU.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-7] - 48 < 8 ) && (auxCPU[auxCPU.length-7] - 48 != 3 ) && (auxCPU[auxCPU.length-7] - 48 != 1 ) && (auxCPU[auxCPU.length-7] - 48 != 0 ) ) { return true; } } } return false; } public static void settaOpzioni() { lang = "it"; soundString = "suono=si"; int r = 0; int g = 150; int b = 0; Scanner scanner = null; File file = new File( "JBriscolaConfig.txt" ); if ( file.exists() ) { try { scanner = new Scanner( file ); } catch ( FileNotFoundException e ) { } try { lang = scanner.next(); soundString = scanner.next(); r = scanner.nextInt(); g = scanner.nextInt(); b = scanner.nextInt(); } catch ( NoSuchElementException e ) { } } else { lang = "it"; soundString = "suono=si"; r = 0; g = 150; b = 0; } if ( lang.equals( "it" ) ) { stringaBottonePrendi = "Prendi/Lascia carte"; stringaPrimaGioca = "Prima Gioca!"; stringaUltime4 = "Ultima carta - Occhio alla briscola!"; stringaVinto = "Hai Vinto!"; stringaPerso = "Hai Perso"; stringaPareggio = "Pareggio"; stringaGiocatore = "Giocatore: "; stringaComputer = "\nComputer: "; stringaNuovaPartita = "Nuova Partita"; stringaVuoiDavveroIniziare = "Vuoi davvero iniziare una nuova partita?"; stringaVuoiDavveroUscire = "Vuoi davvero uscire?"; stringaSi = "Si"; stringaNo = "No"; stringaOpzioni = "Opzioni..."; stringaEsci = "Esci"; stringaImpossibileConfigurare = "Impossibile modificare il file di configurazione.\nSegnalare il bug a: sebastiano@luganega.org\n\nEccezione:\n"; stringaLingua = "Lingua"; stringaAnnulla = "Annulla"; stringaIt = "Italiano"; stringaLa = "Latino"; stringaBL = "Dialetto Bellunese"; stringaBV = "Dialetto Basso Veneto"; stringaNecessarioRiavviare = "E' necessario riavviare JBriscola se sono state\nmodificate impostazioni riguardanti la lingua\nAlcune parti saranno comunque tradotte prima."; stringaModificaOpzioni = "Modifica Opzioni"; stringaInformazioni = "Informazioni"; stringaInformazioni2 = "JBriscola e' un gioco di briscola per pc scritto in java ideato\ne realizzato da Sebastiano Tronto. Il gioco viene rilasciato sotto licenza GNU/Gpl versione 2 o successive; questo permette\npotenzialmente a chiunque di modificare il gioco partendo dal codice sorgente del programma. Se non avete ricevuto i sorgenti\nassieme al gioco, potete richiedermeli con un'e-mail a sebastiano@luganega.org.\n\nJBriscola version" + version + "\nCopyright 2009 Sebastiano Tronto, license GNU/Gpl 2.0 or later\nE-mail: sebastiano@luganega.org"; stringaSuono = "Effetti sonori"; stringaPunteggio = "Punteggio"; stringaSfondo = "Sfondo"; } else if ( lang.equals( "la" ) ) { stringaBottonePrendi = "CAPIS/RELINQVIS CHARTAS"; stringaPrimaGioca = "ANTE CHARTAM PONE!"; stringaUltime4 = "CHARTA POSTREMA - INTVERE BRISCOLAM!"; stringaVinto = "VICISTI!"; stringaPerso = "PERDIDISTI"; stringaPareggio = "AEQVATIO!"; stringaGiocatore = "LVSOR: "; stringaComputer = "\nCOMPVTER: "; stringaNuovaPartita = "NOVA LVSO"; stringaVuoiDavveroIniziare = "NOVAM LVSIONEM INCIPERE?"; stringaVuoiDavveroUscire = "EXIRE?"; stringaSi = "ID VOLO"; stringaNo = "NOLO"; stringaOpzioni = "OPTIONES..."; stringaEsci = "EXIRE"; stringaImpossibileConfigurare = "CONFIGVRATIONIS FILE SCRIBERE NON POTVI.\nERROREM ME CERTIOREM FACITE: sebastiano@luganega.org\n\nEXCEPTIO:\n"; stringaLingua = "LINGVA"; stringaAnnulla = "ABROGA"; stringaIt = "ITALICA"; stringaLa = "LATINA"; stringaBL = "BELLUNI"; stringaBV = "VENETIAE"; stringaNecessarioRiavviare = "JBRISCOLAM RVRSVS INCIPERE NECESSE EST\nSI LINGVA PRAELATIONES NOVATAE SVNT.\nALIQVAE ANTE ID VERSA ERVNT"; stringaModificaOpzioni = "OPTIONES NOVARE"; stringaInformazioni = "INFORMATIONES"; stringaInformazioni2 = "JBriscola EST LVDVM BRISCOLAE COMPVTERI, JAVA SCRIPTVM, EXCOGITATVM\nFACTVMQUE A SEBASTIANO TRONTO. IPSVM LUDVM REICITUR LICENTIA GNU/Gpl VERSIONE 2 AVT POSTERIORIBUS; ID\nOMNIBVS LVDVM MUTARE CODICE IPSIVS INCIPIENDO LICET. SI CODICES CUM\nLVDO NON PERVENIT, EOS POSCERE POTESTIS E-MAILE sebastiano@luganega.org.\n\nJBriscola version " + version + "\nCopyright 2009 Sebastiano Tronto, license GNU/Gpl 2.0 or later\nE-mail: sebastiano@luganega.org"; stringaSuono = "SONUS"; stringaPunteggio = "NUMERI"; stringaSfondo = "COLOR"; } if ( lang.equals( "bl" ) ) { stringaBottonePrendi = "Cio' su/lasa le carte"; stringaPrimaGioca = "Prima Duga!"; stringaUltime4 = "Ultima carta - Ocio a la briscola!"; stringaVinto = "Te ha vint!"; stringaPerso = "Te ha pers"; stringaPareggio = "Pari"; stringaGiocatore = "Dugador: "; stringaComputer = "\nComputer: "; stringaNuovaPartita = "Taca n'altra partida"; stringaVuoiDavveroIniziare = "Utu sul serio scuminziar n'altra partida?"; stringaVuoiDavveroUscire = "Utu sul serio stusar su?"; stringaSi = "Si"; stringaNo = "No"; stringaOpzioni = "Opzioni..."; stringaEsci = "Stusa su"; stringaImpossibileConfigurare = "No ghe ho riva' a scrivere al file de configurazion.\nMandeme na mail a: sebastiano@luganega.org\n\nEcezion:\n"; stringaLingua = "Lengua"; stringaAnnulla = "Annulla"; stringaIt = "Italian"; stringaLa = "Latin"; stringaBL = "Dialeto de Belun"; stringaBV = "Dialeto de la basa"; stringaNecessarioRiavviare = "Se te ha cambia' la lengua te toca\nstusar su e impizar de novo al dugo\nPero' zerte robe le e' belche tradote."; stringaModificaOpzioni = "Modifica Opzioni"; stringaInformazioni = "Informazioni"; stringaInformazioni2 = "JBriscola le' an dugo de briscola par computer scrit in java, pensa' e realiza'\n da Sebastiano Tronto. Al dugo l'e' sotto licenza GNU/Gpl versione 2 o sucesive; questo ol dir che chi che ol\n(se l'e' bon) al pol modificar al dugo coi codici sorgenti del programa. Se no i ve ha dat i sorgenti\nasieme al dugo, pote' domandarmeli co na e-mail a sebastiano@luganega.org.\n\nJBriscola version " + version + "\nCopyright 2009 Sebastiano Tronto, license GNU/Gpl 2.0 or later\nE-mail: sebastiano@luganega.org"; stringaSuono = "Efeti sonori"; stringaPunteggio = "Varda i punti"; stringaSfondo = "Sfondo"; } if ( lang.equals( "bv" ) ) { stringaBottonePrendi = "Ciapa su/lasa e carte"; stringaPrimaGioca = "Prima Zuga!"; stringaUltime4 = "Ultima carta - Ocio a la briscola!"; stringaVinto = "Ti ga vinto!"; stringaPerso = "Ti ga perso"; stringaPareggio = "Pari"; stringaGiocatore = "Zugador: "; stringaComputer = "\nComputer: "; stringaNuovaPartita = "N'altra Partida"; stringaVuoiDavveroIniziare = "Ti vol sul serio scuminziar n'altra partida?"; stringaVuoiDavveroUscire = "Ti vol sul serio stusar su?"; stringaSi = "Si"; stringaNo = "No"; stringaOpzioni = "Opzioni..."; stringaEsci = "Stusa su"; stringaImpossibileConfigurare = "No ghe son riusito a scrivere al file de configurazione.\nMandeme na mail a: sebastiano@luganega.org\n\nEcezion:\n"; stringaLingua = "Lengua"; stringaAnnulla = "Annulla"; stringaIt = "Italian"; stringaLa = "Latin"; stringaBL = "Dialeto Belumat"; stringaBV = "Dialeto Veneto"; stringaNecessarioRiavviare = "Se ti ga cambia' la lengua te toca\nstusar su e impizar de novo al zugo\nPero' zerte robe le e' belche tradote."; stringaModificaOpzioni = "Modifica Opzioni"; stringaInformazioni = "Informasioni"; stringaInformazioni2 = "JBriscola xe an zugo de briscola par computer scrito in java, pensato e realisato\n da Sebastiano Tronto. Al zugo xe sotto licenza GNU/Gpl versione 2 o sucesive; questo vol dire che chi che\nvol (se xe bono) al pol modificare al zugo coi codici sorgenti del programa. Se no i ve ha dato i sorgenti\nasieme al zugo, pote' domandarmeli co na e-mail a sebastiano@luganega.org.\n\nJBriscola version " + version + "\nCopyright 2009 Sebastiano Tronto, license GNU/Gpl 2.0 or later\nE-mail: sebastiano@luganega.org"; stringaSuono = "Efeti sonori"; stringaPunteggio = "Varda i punti"; stringaSfondo = "Sfondo"; } sound = ( soundString.equals( "suono=si" ) ); color = new Color( r, g, b ); if ( frame != null ) { frame.pannello.repaint(); frame.pannello2.repaint(); frame.repaint(); } } }