Main.java (76032B)
1 /* 2 Copyright 2009-2010 Sebastiano Tronto <sebastiano@luganega.org> 3 4 This file is part of JBriscola. 5 6 JBriscola is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 JBriscola is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with JBriscola; if not, write to the Free Software 18 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 20 */ 21 22 import java.io.*; 23 import java.util.*; 24 import javax.swing.*; 25 import java.awt.*; 26 27 public class Main { 28 29 /*Costanti per i semi e i valori delle carte*/ 30 public static final int COPPE = 0; 31 public static final int BASTONI = 1; 32 public static final int DENARI = 2; 33 public static final int SPADE = 3; 34 public static final int RE = 0; 35 public static final int ASSO = 1; 36 public static final int DUE = 2; 37 public static final int TRE = 3; 38 public static final int QUATTRO = 4; 39 public static final int CINQUE = 5; 40 public static final int SEI = 6; 41 public static final int SETTE = 7; 42 public static final int FANTE = 8; 43 public static final int CAVALLO = 9; 44 45 /* semeBriscola serve a determinare quale il seme di briscola (0 coppe, 46 * 1 bastoni, 2 denari, 3 spade). 47 * punteggio è il punteggio del giocatore, punteggioCPU quello della CPU 48 * mano tiene il conto della mano a cui si è arrivati. 49 * cartaDaPescare è la carta che la CPU deve raccogliere dal mazzo 50 * cartaDaGiocare (può assumere valore compraso tra 0 e 2) è la carta 51 * che la cpu deve giocare. */ 52 public static int semeBriscola, punteggio, punteggioCPU, mano, cartaDaPescare, cartaDaGiocare; 53 54 /* toccaAllaCPU determina se è il turno del computer o del giocatore, 55 * CPUHaGiocato se il computer ha già giocato in questo turno e 56 * haGiocatoPrima se la prima mossa del turno è stata del giocatore 57 * (true) o della CPU (false). 58 * aiTrenta serve per determinare se la partida che si sta giocando è 59 * normale o ai 30. 60 * carteScoperte serve se viene attivato il trucco per mostrare le 61 * carte della CPU. 62 * sound e keys riguardano le opzioni (souno si o no, tasti rapidi si 63 * o no) salvate nel file di configurazione. */ 64 public static boolean toccaAllaCPU = false; 65 public static boolean CPUHaGiocato = false; 66 public static boolean haGiocatoPrima = true; 67 public static boolean aiTrenta = false; 68 public static boolean carteScoperte = false; 69 public static boolean sound = true; 70 public static boolean keys = true; 71 72 /* frame è la finestra principale del gioco, color il colore dello sfondo. 73 * lang, soundString e keysString servono a leggere le opzioni dal file 74 * di configurazione. */ 75 public static Frame frame; 76 public static Color color = new Color( 0, 150, 0 ); 77 public static String lang, soundString, keysString; 78 79 /* Tutte le stringhe che vengono utilizzate durante il gioco sono 80 * inizializzate qui, per poter essere tradotte in altre lingue. */ 81 public static String version = "0.3.2"; 82 public static String semi[] = { "Bastoni", "Coppe", "Denari", "Spade" }; 83 public static String stringaBriscola = "Briscola"; 84 public static String stringaBottonePrendi = "Prendi/Lascia carte"; 85 public static String stringaPrimaGioca = "Prima Gioca!"; 86 public static String stringaUltime4 = "Ultima carta - Occhio alla briscola!"; 87 public static String stringaVinto = "Hai Vinto!"; 88 public static String stringaPerso = "Hai Perso"; 89 public static String stringaPareggio = "Pareggio"; 90 public static String stringaGiocatore = "Giocatore: "; 91 public static String stringaComputer = "\nComputer: "; 92 public static String stringaNuovaPartita = "Nuova Partita"; 93 public static String stringaNuovaPartitaAiTrenta = "Nuova Partita Ai 30"; 94 public static String stringaVuoiDavveroIniziare = "Vuoi davvero iniziare una nuova partita?"; 95 public static String stringaVuoiDavveroUscire = "Vuoi davvero uscire?"; 96 public static String stringaSi = "Si"; 97 public static String stringaNo = "No"; 98 public static String stringaOpzioni = "Opzioni..."; 99 public static String stringaEsci = "Esci"; 100 public static String stringaImpossibileConfigurare = "Impossibile modificare il file di configurazione.\nSegnalare il bug a: sebastiano@luganega.org\n\nEccezione:\n"; 101 public static String stringaLingua = "Lingua"; 102 public static String stringaAnnulla = "Annulla"; 103 public static String stringaIt = "Italiano"; 104 public static String stringaLa = "Latino"; 105 public static String stringaBL = "Dialetto Bellunese"; 106 public static String stringaBV = "Dialetto Basso Veneto"; 107 public static String stringaEN = "Inglese"; 108 public static String stringaModificaOpzioni = "Modifica Opzioni"; 109 public static String stringaInformazioni = "Informazioni"; 110 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"; 111 public static String stringaSuono = "Effetti Sonori"; 112 public static String stringaPunteggio = "Punteggio"; 113 public static String stringaCartePassate = "Carte Passate"; 114 public static String stringaSfondo = "Sfondo"; 115 public static String stringaTasti = "Tasti rapidi"; 116 public static String stringaAggiornamenti = "Cerca aggiornamenti"; 117 public static String stringaTrucchi = "Trucchi"; 118 public static String stringaInserisciCodice = "Inserisci il codice:"; 119 public static String stringaTruccoAttivato = "Trucco attivato!"; 120 public static String stringaTruccoSbagliato = "Trucco non valido"; 121 public static String stringaCheCartaVuoi = "E allora che carta vuoi?"; 122 public static String stringaAggiornamentiSi = "Aggiornamento disponibile: "; 123 public static String stringaAggiornamentiNo = "Nessun aggiornamento disponibile"; 124 public static String stringaScarica = "E' possibile scaricare la versione più recente\ndal sito http://porkynator.altervista.org/programmi.html"; 125 public static String stringaNoInternet = "Errore: nessuna connessione internet"; 126 public static String stringaTasti2 = "1 Gioca la prima carta\n2 Gioca la seconda carta\n3 Gioca la terza carta\nF1 Visualizza questo messaggio\nF2 " + stringaNuovaPartita + "\nF3 " + stringaOpzioni + "\nF4 " + stringaPunteggio + "\nF5 " + stringaCartePassate + "\nF6 " + stringaInformazioni + "\nF7 " + stringaAggiornamenti + "\nF8 " + stringaNuovaPartitaAiTrenta + "\nF9 " + stringaTrucchi + "\nq " + stringaEsci; 127 128 public static void main( String args[] ) { 129 130 /* Chiama il metodo settaOpzioni per leggere le impostazioni 131 * dell'utente da un eventuale file di configurazione */ 132 settaOpzioni(); 133 134 /* Crea la finestra principale del gioco e la posiziona al centro 135 * dello schermo. */ 136 frame = new Frame(); 137 frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE ); 138 frame.setResizable( false ); 139 frame.setSize( 600, 600 ); 140 frame.setLocation( (Toolkit.getDefaultToolkit().getScreenSize().width - 600) / 2, (Toolkit.getDefaultToolkit().getScreenSize().height - 600) / 2); 141 frame.setVisible( true ); 142 } 143 144 /* Algoritmo per mischiare il mazzo: prende due carte a caso e le 145 * inverte di posto, utilizzando una variabile aux. Ripete il procedimento 146 * per 391 volte. */ 147 public void mischia() { 148 149 ImageIcon aux; 150 151 mano = 0; 152 punteggio = 0; 153 punteggioCPU = 0; 154 cartaDaPescare = 6; 155 frame.mazzo = true; 156 toccaAllaCPU = false; 157 CPUHaGiocato = false; 158 haGiocatoPrima = true; 159 frame.mazzo = true; 160 161 /* Inizializza l'array di carte mescolate ordinato */ 162 for ( int i = 0, k = 0; i < 10; i++ ) 163 for ( int j = 0; j < 4; j++, k++ ) 164 frame.arrayCarteMescolate[k] = frame.arrayCarte[i][j]; 165 166 /* Mescola le carte utilizzando il metodo sopra citato */ 167 for ( int i = 0; i < 391; i++ ) { 168 double a = Math.random() * 40; 169 int x = (int) a; 170 double b = Math.random() * 40; 171 int y = (int) b; 172 aux = frame.arrayCarteMescolate[x]; 173 frame.arrayCarteMescolate[x] = frame.arrayCarteMescolate[y]; 174 frame.arrayCarteMescolate[y] = aux; 175 } 176 177 /* Imposta il seme della briscola */ 178 semeBriscola = seme( frame.arrayCarteMescolate[39] ); 179 180 /* Distribuisce le carte */ 181 frame.carteInMano[0] = frame.arrayCarteMescolate[0]; 182 frame.carteInMano[1] = frame.arrayCarteMescolate[1]; 183 frame.carteInMano[2] = frame.arrayCarteMescolate[2]; 184 frame.carteCPU[0] = frame.arrayCarteMescolate[3]; 185 frame.carteCPU[1] = frame.arrayCarteMescolate[4]; 186 frame.carteCPU[2] = frame.arrayCarteMescolate[5]; 187 frame.ultimaCarta = frame.arrayCarteMescolate[39]; 188 frame.giocata[0] = null; 189 frame.giocata[1] = null; 190 } 191 192 /* Viene chiamato a fine partita. */ 193 public void pulisciTavolo() { 194 195 punteggio = 0; 196 punteggioCPU = 0; 197 cartaDaPescare = 6; 198 toccaAllaCPU = false; 199 CPUHaGiocato = false; 200 haGiocatoPrima = true; 201 202 frame.mazzo = false; 203 frame.ultimaCarta = null; 204 for ( int i = 0; i < 3; i++ ) { 205 frame.carteCPU[i] = null; 206 frame.carteInMano[i] = null; 207 } 208 209 for ( int i = 0; i < 40; i++ ) 210 frame.arrayCartePassate[i] = null; 211 212 frame.pannello.repaint(); 213 frame.repaint(); 214 215 } 216 217 /* Fa giocare la CPU. Questo metodo contiene l'intelligenza artificiale 218 * del gioco. Ho preferito non commentare molto il corpo del metodo per 219 * due motivi; il primo è che abbastanza intuitivo: basta sapere che i 220 * vari metodi vaiLiscio(), vaiTaglio() ecc... tentano di fare ciò che 221 * ovviamente dice il loro nome, se ci riescono restituiscono true, 222 * in caso contrario false.*/ 223 public void giocaCPU() { 224 225 /* Nelle prime 16 mani ragiona in maniera diversa*/ 226 if ( mano < 16 ) { 227 228 /* Valuta cosa fare se il giocatore non ha ancora giocato. */ 229 if ( !haGiocato() ) { 230 if ( vaiPuntiConCarichiPassati() ); 231 else if ( vaiLiscioConCarichiPassati() ); 232 else if ( vaiLiscio() ); 233 else if ( vaiPunti() ); 234 else if ( vaiTaglio() ); 235 else if ( vaiBriscolaAlta() ); 236 else if ( vaiCarico() ); 237 else if ( vaiTre() ); 238 else if ( vaiAsso() ); 239 else; 240 } 241 242 /* Valuta cosa fare quando invece il giocatore ha giocato */ 243 else { 244 if ( haLisciato() ) { 245 if ( vaiSopra() ); 246 else if ( vaiLiscioConCarichiInGioco() ); 247 else if ( vaiLiscio() ); 248 else if ( vaiPuntiConCarichiInGioco() ); 249 else if ( vaiPunti() ); 250 else if ( vaiTaglio() ); 251 else if ( vaiTre() ); 252 else if ( vaiBriscolaAlta() ); 253 else if ( vaiCarico() ); 254 else if ( vaiAsso() ); 255 } else if ( haMessoPunti() ) { 256 if ( vaiSopra() ); 257 else if ( vaiLiscioConCarichiInGioco() ); 258 else if ( vaiLiscio() ); 259 else if ( vaiTaglio() ); 260 else if ( vaiPuntiConCarichiInGioco() ); 261 else if ( vaiPunti() ); 262 else if ( vaiTre() ); 263 else if ( vaiBriscolaAlta() ); 264 else if ( vaiCarico() ); 265 else if ( vaiAsso() ); 266 } else if ( haTagliato() ) { 267 if ( vaiLiscioConCarichiInGioco() ); 268 else if ( vaiLiscio() ); 269 else if ( vaiPuntiConCarichiInGioco() ); 270 else if ( vaiPunti() ); 271 else if ( vaiTaglio() ); 272 else if ( vaiTre() ); 273 else if ( vaiBriscolaAlta() ); 274 else if ( vaiCarico() ); 275 else if ( vaiAsso() ); 276 } else if ( haMessoBriscolaAlta() ) { 277 if ( vaiLiscioConCarichiInGioco() ); 278 else if ( vaiLiscio() ); 279 else if ( vaiPuntiConCarichiInGioco() ); 280 else if ( vaiPunti() ); 281 else if ( vaiTre() ); 282 else if ( vaiTaglio() ); 283 else if ( vaiBriscolaAlta() ); 284 else if ( vaiCarico() ); 285 else if ( vaiAsso() ); 286 } else if ( haMessoTre() ) { 287 if ( vaiAsso() ); 288 else if ( vaiLiscioConCarichiInGioco() ); 289 else if ( vaiLiscio() ); 290 else if ( vaiPuntiConCarichiInGioco() ); 291 else if ( vaiPunti() ); 292 else if ( vaiTaglio() ); 293 else if ( vaiBriscolaAlta() ); 294 else if ( vaiCarico() ); 295 } else if ( haMessoAsso() ) { 296 if ( vaiLiscioConCarichiInGioco() ); 297 else if ( vaiLiscio() ); 298 else if ( vaiPuntiConCarichiInGioco() ); 299 else if ( vaiPunti() ); 300 else if ( vaiTaglio() ); 301 else if ( vaiBriscolaAlta() ); 302 else if ( vaiCarico() ); 303 else if ( vaiTre() ); 304 } else if ( haCaricato() ) { 305 if ( vaiSopra() ); 306 else if ( vaiTre() ); 307 else if ( vaiBriscolaAlta() ); 308 else if ( vaiTaglio() ); 309 else if ( vaiAsso() ); 310 else if ( vaiLiscioConCarichiInGioco() ); 311 else if ( vaiLiscio() ); 312 else if ( vaiPuntiConCarichiInGioco() ); 313 else if ( vaiPunti() ); 314 else if ( vaiCarico() ); 315 } 316 } 317 } 318 319 /* Nella penultima mano (prima di pescare l'ultima carta) */ 320 else if ( mano == 16 ) { 321 322 /* Valuta cosa fare se il giocatore non ha ancora giocato. */ 323 if ( !haGiocato() ) { 324 if ( valore( frame.ultimaCarta ) == TRE || valore( frame.ultimaCarta ) == ASSO ) { 325 326 if ( vaiLiscioConCarichiInGioco() ); 327 else if ( vaiPuntiConCarichiInGioco() ); 328 else if ( vaiCarico() ); 329 else if ( vaiPunti() ); 330 else if ( vaiLiscio() ); 331 else if ( vaiTaglio() ); 332 else if ( vaiBriscolaAlta() ); 333 else if ( vaiTre() ); 334 else if ( vaiAsso() ); 335 else; 336 } else { 337 if ( vaiPuntiConCarichiPassati() ); 338 else if ( vaiLiscioConCarichiPassati() ); 339 else if ( vaiLiscio() ); 340 else if ( vaiPunti() ); 341 else if ( vaiTaglio() ); 342 else if ( vaiBriscolaAlta() ); 343 else if ( vaiCarico() ); 344 else if ( vaiTre() ); 345 else if ( vaiAsso() ); 346 else; 347 } 348 } 349 350 /* Valuta cosa fare quando invece il giocatore ha giocato */ 351 else { 352 if ( valore( frame.ultimaCarta ) == TRE || valore( frame.ultimaCarta ) == ASSO ) { 353 if ( haCaricato() ) { 354 if ( vaiSopra() ); 355 else if ( vaiLiscioConCarichiInGioco() ); 356 else if ( vaiPuntiConCarichiInGioco() ); 357 else if ( vaiLiscio() ); 358 else if ( vaiPunti() ); 359 else if ( vaiTre() ); 360 else if ( vaiTaglio() ); 361 else if ( vaiBriscolaAlta() ); 362 else if ( vaiAsso() ); 363 else if ( vaiCarico() ); 364 } 365 } else { 366 if ( haLisciato() ) { 367 if ( vaiSopra() ); 368 else if ( vaiLiscioConCarichiInGioco() ); 369 else if ( vaiPuntiConCarichiInGioco() ); 370 else if ( vaiLiscio() ); 371 else if ( vaiPunti() ); 372 else if ( vaiTaglio() ); 373 else if ( vaiTre() ); 374 else if ( vaiBriscolaAlta() ); 375 else if ( vaiCarico() ); 376 else if ( vaiAsso() ); 377 } else if ( haMessoPunti() ) { 378 if ( vaiSopra() ); 379 else if ( vaiLiscioConCarichiInGioco() ); 380 else if ( vaiPuntiConCarichiInGioco() ); 381 else if ( vaiLiscio() ); 382 else if ( vaiTaglio() ); 383 else if ( vaiPunti() ); 384 else if ( vaiTre() ); 385 else if ( vaiBriscolaAlta() ); 386 else if ( vaiCarico() ); 387 else if ( vaiAsso() ); 388 } else if ( haTagliato() ) { 389 if ( vaiLiscioConCarichiInGioco() ); 390 else if ( vaiPuntiConCarichiInGioco() ); 391 else if ( vaiLiscio() ); 392 else if ( vaiPunti() ); 393 else if ( vaiTaglio() ); 394 else if ( vaiTre() ); 395 else if ( vaiBriscolaAlta() ); 396 else if ( vaiCarico() ); 397 else if ( vaiAsso() ); 398 } else if ( haMessoBriscolaAlta() ) { 399 if ( vaiLiscioConCarichiInGioco() ); 400 else if ( vaiPuntiConCarichiInGioco() ); 401 else if ( vaiLiscio() ); 402 else if ( vaiPunti() ); 403 else if ( vaiTre() ); 404 else if ( vaiTaglio() ); 405 else if ( vaiBriscolaAlta() ); 406 else if ( vaiCarico() ); 407 else if ( vaiAsso() ); 408 } else if ( haMessoTre() ) { 409 if ( vaiAsso() ); 410 else if ( vaiLiscioConCarichiInGioco() ); 411 else if ( vaiPuntiConCarichiInGioco() ); 412 else if ( vaiLiscio() ); 413 else if ( vaiPunti() ); 414 else if ( vaiTaglio() ); 415 else if ( vaiBriscolaAlta() ); 416 else if ( vaiCarico() ); 417 } else if ( haMessoAsso() ) { 418 if ( vaiLiscioConCarichiInGioco() ); 419 else if ( vaiPuntiConCarichiInGioco() ); 420 else if ( vaiLiscio() ); 421 else if ( vaiPunti() ); 422 else if ( vaiTaglio() ); 423 else if ( vaiBriscolaAlta() ); 424 else if ( vaiCarico() ); 425 else if ( vaiTre() ); 426 } else if ( haCaricato() ) { 427 if ( vaiSopra() ); 428 else if ( vaiTre() ); 429 else if ( vaiBriscolaAlta() ); 430 else if ( vaiAsso() ); 431 else if ( vaiTaglio() ); 432 else if ( vaiLiscioConCarichiInGioco() ); 433 else if ( vaiPuntiConCarichiInGioco() ); 434 else if ( vaiLiscio() ); 435 else if ( vaiPunti() ); 436 else if ( vaiCarico() ); 437 } 438 } 439 } 440 441 } else if ( mano == 17 ) { 442 /* AVVISO: nelle ultime 3 mani, la CPU "guarda" le carte al giocatore; 443 * Questa non è una scorrettezza, ma semplicemente un metodo per sem- 444 * plificare i passaggi: il computer potrebbe comunque dedurre le carte 445 * che ha in mano il giocatore controllando le proprie carte e quelle 446 * che sono già passate. */ 447 448 /* Valuta cosa fare se il giocatore non ha ancora giocato. */ 449 if ( !haGiocato() ) { 450 if ( hoLaBriscolaPiuAltaInGioco() && hoLaSecondaBriscolaPiuAltaInGioco() ) 451 vaiSecondaBriscolaPiuAltaInGioco(); 452 else { 453 if ( vaiLiscioConCarichiPassati() ); 454 else if ( vaiPuntiConCarichiPassati() ); 455 else if ( vaiLiscio() ); 456 else if ( vaiPunti() ); 457 else if ( vaiTaglio() ); 458 else if ( vaiBriscolaAlta() ); 459 else if ( vaiCarico() ); 460 else if ( vaiTre() ); 461 } 462 } 463 464 /* Valuta cosa fare quando invece il giocatore ha giocato */ 465 else { 466 if ( haLisciato() ) { 467 if ( vaiSopra() ); 468 else if ( vaiLiscioConCarichiInGioco() ); 469 else if ( vaiPuntiConCarichiInGioco() ); 470 else if ( vaiLiscio() ); 471 else if ( vaiPunti() ); 472 else if ( vaiTaglio() ); 473 else if ( vaiTre() ); 474 else if ( vaiBriscolaAlta() ); 475 else if ( vaiCarico() ); 476 else if ( vaiAsso() ); 477 } else if ( haMessoPunti() ) { 478 if ( vaiSopra() ); 479 else if ( vaiLiscioConCarichiInGioco() ); 480 else if ( vaiPuntiConCarichiInGioco() ); 481 else if ( vaiLiscio() ); 482 else if ( vaiTaglio() ); 483 else if ( vaiPunti() ); 484 else if ( vaiTre() ); 485 else if ( vaiBriscolaAlta() ); 486 else if ( vaiCarico() ); 487 else if ( vaiAsso() ); 488 } else if ( haTagliato() ) { 489 if ( vaiLiscioConCarichiInGioco() ); 490 else if ( vaiPuntiConCarichiInGioco() ); 491 else if ( vaiLiscio() ); 492 else if ( vaiPunti() ); 493 else if ( vaiTaglio() ); 494 else if ( vaiTre() ); 495 else if ( vaiBriscolaAlta() ); 496 else if ( vaiCarico() ); 497 else if ( vaiAsso() ); 498 } else if ( haMessoBriscolaAlta() ) { 499 if ( vaiLiscioConCarichiInGioco() ); 500 else if ( vaiPuntiConCarichiInGioco() ); 501 else if ( vaiLiscio() ); 502 else if ( vaiPunti() ); 503 else if ( vaiTre() ); 504 else if ( vaiTaglio() ); 505 else if ( vaiBriscolaAlta() ); 506 else if ( vaiCarico() ); 507 else if ( vaiAsso() ); 508 } else if ( haMessoTre() ) { 509 if ( vaiAsso() ); 510 else if ( vaiLiscioConCarichiInGioco() ); 511 else if ( vaiPuntiConCarichiInGioco() ); 512 else if ( vaiLiscio() ); 513 else if ( vaiPunti() ); 514 else if ( vaiTaglio() ); 515 else if ( vaiBriscolaAlta() ); 516 else if ( vaiCarico() ); 517 } else if ( haMessoAsso() ) { 518 if ( vaiLiscioConCarichiInGioco() ); 519 else if ( vaiPuntiConCarichiInGioco() ); 520 else if ( vaiLiscio() ); 521 else if ( vaiPunti() ); 522 else if ( vaiTaglio() ); 523 else if ( vaiBriscolaAlta() ); 524 else if ( vaiCarico() ); 525 else if ( vaiTre() ); 526 } else if ( haCaricato() ) { 527 if ( vaiSopra() ); 528 else if ( piuAltaInGioco() == ASSO && luiHaLaBriscolaPiuAltaInGioco() && hoTre() ) 529 vaiTre(); 530 else if ( vaiTaglio() ); 531 else if ( vaiBriscolaAlta() ); 532 else if ( piuAltaInGioco() == ASSO && !luiHaLaSecondaBriscolaPiuAltaInGioco() && hoAsso() ) 533 vaiAsso(); 534 else if ( vaiTre() ); 535 else if ( vaiAsso() ); 536 else if ( vaiLiscioConCarichiInGioco() ); 537 else if ( vaiPuntiConCarichiInGioco() ); 538 else if ( vaiLiscio() ); 539 else if ( vaiPunti() ); 540 else if ( vaiCarico() ); 541 } 542 } 543 544 } else if ( mano == 18 ) { 545 546 /* Valuta cosa fare se il giocatore non ha ancora giocato. */ 547 if ( !haGiocato() ) { 548 if ( hoLaBriscolaPiuAltaInGioco() ) 549 vaiBriscolaPiuAltaInGioco(); 550 else 551 if ( hoLaSecondaBriscolaPiuAltaInGioco() ) 552 vaiNon( secondaPiuAltaInGioco(), semeBriscola ); 553 else 554 if ( luiHaTutteBriscole() ) 555 vaiPrima(); 556 else if ( vaiTaglio() ); 557 else if ( vaiBriscolaAlta() ); 558 else if ( vaiLiscioConCarichiPassati() ); 559 else if ( vaiPuntiConCarichiPassati() ); 560 else if ( vaiLiscio() ); 561 else if ( vaiPunti() ); 562 else if ( vaiCarico() ); 563 else if ( vaiTre() ); 564 } 565 566 /* Valuta cosa fare quando invece il giocatore ha giocato */ 567 else { 568 if ( haLisciato() ) { 569 if ( luiHaLaBriscolaPiuAltaInGioco() && hoLaSecondaBriscolaPiuAltaInGioco() ) 570 vaiSecondaBriscolaPiuAltaInGioco(); 571 else if ( vaiSopra() ); 572 else if ( vaiLiscioConCarichiInGioco() ); 573 else if ( vaiPuntiConCarichiInGioco() ); 574 else if ( vaiLiscio() ); 575 else if ( vaiPunti() ); 576 else if ( vaiTaglio() ); 577 else if ( vaiTre() ); 578 else if ( vaiBriscolaAlta() ); 579 else if ( vaiCarico() ); 580 else if ( vaiAsso() ); 581 } else if ( haMessoPunti() ) { 582 if ( luiHaLaBriscolaPiuAltaInGioco() && hoLaSecondaBriscolaPiuAltaInGioco() ) 583 vaiSecondaBriscolaPiuAltaInGioco(); 584 else if ( vaiSopra() ); 585 else if ( vaiLiscioConCarichiInGioco() ); 586 else if ( vaiLiscio() ); 587 else if ( vaiTaglio() ); 588 else if ( vaiPuntiConCarichiInGioco() ); 589 else if ( vaiPunti() ); 590 else if ( vaiTre() ); 591 else if ( vaiBriscolaAlta() ); 592 else if ( vaiCarico() ); 593 else if ( vaiAsso() ); 594 } else if ( haTagliato() ) { 595 if ( luiHaLaBriscolaPiuAltaInGioco() && hoLaSecondaBriscolaPiuAltaInGioco() ) 596 vaiSecondaBriscolaPiuAltaInGioco(); 597 else if ( vaiLiscioConCarichiInGioco() ); 598 else if ( vaiPuntiConCarichiInGioco() ); 599 else if ( vaiLiscio() ); 600 else if ( vaiPunti() ); 601 else if ( vaiTaglio() ); 602 else if ( vaiTre() ); 603 else if ( vaiBriscolaAlta() ); 604 else if ( vaiCarico() ); 605 else if ( vaiAsso() ); 606 } else if ( haMessoBriscolaAlta() ) { 607 if ( luiHaLaBriscolaPiuAltaInGioco() && hoLaSecondaBriscolaPiuAltaInGioco() ) 608 vaiSecondaBriscolaPiuAltaInGioco(); 609 else if ( vaiLiscioConCarichiInGioco() ); 610 else if ( vaiPuntiConCarichiInGioco() ); 611 else if ( vaiLiscio() ); 612 else if ( vaiPunti() ); 613 else if ( vaiTre() ); 614 else if ( vaiTaglio() ); 615 else if ( vaiSopra() ); 616 else if ( vaiBriscolaAlta() ); 617 else if ( vaiAsso() ); 618 else if ( vaiCarico() ); 619 } else if ( haMessoTre() ) { 620 if ( vaiAsso() ); 621 else if ( vaiLiscioConCarichiInGioco() ); 622 else if ( vaiPuntiConCarichiInGioco() ); 623 else if ( vaiLiscio() ); 624 else if ( vaiPunti() ); 625 else if ( vaiTaglio() ); 626 else if ( vaiBriscolaAlta() ); 627 else if ( vaiCarico() ); 628 } else if ( haMessoAsso() ) { 629 if ( vaiLiscioConCarichiInGioco() ); 630 else if ( vaiPuntiConCarichiInGioco() ); 631 else if ( vaiLiscio() ); 632 else if ( vaiPunti() ); 633 else if ( vaiTaglio() ); 634 else if ( vaiBriscolaAlta() ); 635 else if ( vaiCarico() ); 636 else if ( vaiTre() ); 637 } else if ( haCaricato() ) { 638 if ( vaiSopra() ); 639 else if ( luiHaLaBriscolaPiuAltaInGioco() && hoLaSecondaBriscolaPiuAltaInGioco() ) 640 vaiSecondaBriscolaPiuAltaInGioco(); 641 else if ( vaiTre() ); 642 else if ( vaiBriscolaAlta() ); 643 else if ( vaiAsso() ); 644 else if ( vaiTaglio() ); 645 else if ( vaiLiscioConCarichiInGioco() ); 646 else if ( vaiPuntiConCarichiInGioco() ); 647 else if ( vaiLiscio() ); 648 else if ( vaiPunti() ); 649 else if ( vaiCarico() ); 650 } 651 } 652 653 /* All'ultima mano è inutile ragionare, dato che ha una sola carta */ 654 } else vaiPrima(); 655 656 /* Gioca la carta e aggiorna la finestra con il metodo repaint() */ 657 frame.giocata[1] = frame.carteCPU[cartaDaGiocare]; 658 frame.carteCPU[cartaDaGiocare] = null; 659 frame.pannello.repaint(); 660 661 CPUHaGiocato = true; 662 663 if ( !haGiocato() ) 664 toccaAllaCPU = false; 665 } 666 667 /* Fa giocare una partita ai 30. È analogo al metodo precedente, cambia 668 * solo la tecnica di gioco, quindi non è commentato. */ 669 public void giocaCPUAiTrenta() { 670 671 if ( punteggio <= 20 ) { 672 673 if ( !haGiocato() ) { 674 if ( vaiPuntiConCarichiPassati() ); 675 else if ( vaiPunti() ); 676 else if ( vaiLiscioConCarichiPassati() ); 677 else if ( vaiLiscio() ); 678 else if ( vaiTaglio() ); 679 else if ( vaiBriscolaAlta() ); 680 else if ( vaiCarico() ); 681 else if ( vaiTre() ); 682 else if ( vaiAsso() ); 683 else; 684 } 685 686 /* Valuta cosa fare quando invece il giocatore ha giocato */ 687 else { 688 if ( haLisciato() ) { 689 if ( vaiSopra() ); 690 else if ( vaiLiscioConCarichiInGioco() ); 691 else if ( vaiLiscio() ); 692 else if ( vaiTre() ); 693 else if ( vaiBriscolaAlta() ); 694 else if ( vaiTaglio() ); 695 else if ( vaiPuntiConCarichiInGioco() ); 696 else if ( vaiPunti() ); 697 else if ( vaiAsso() ); 698 else if ( vaiCarico() ); 699 } else if ( haMessoPunti() ) { 700 if ( vaiSopra() ); 701 else if ( vaiTre() ); 702 else if ( vaiBriscolaAlta() ); 703 else if ( vaiTaglio() ); 704 else if ( vaiLiscioConCarichiInGioco() ); 705 else if ( vaiLiscio() ); 706 else if ( vaiPuntiConCarichiInGioco() ); 707 else if ( vaiPunti() ); 708 else if ( vaiAsso() ); 709 else if ( vaiCarico() ); 710 } else if ( haTagliato() ) { 711 if ( vaiLiscioConCarichiInGioco() ); 712 else if ( vaiLiscio() ); 713 else if ( vaiPuntiConCarichiInGioco() ); 714 else if ( vaiPunti() ); 715 else if ( vaiTaglio() ); 716 else if ( vaiTre() ); 717 else if ( vaiBriscolaAlta() ); 718 else if ( vaiAsso() ); 719 else if ( vaiCarico() ); 720 } else if ( haMessoBriscolaAlta() ) { 721 if ( vaiLiscioConCarichiInGioco() ); 722 else if ( vaiLiscio() ); 723 else if ( vaiPuntiConCarichiInGioco() ); 724 else if ( vaiPunti() ); 725 else if ( vaiTre() ); 726 else if ( vaiTaglio() ); 727 else if ( vaiBriscolaAlta() ); 728 else if ( vaiAsso() ); 729 else if ( vaiCarico() ); 730 } else if ( haMessoTre() ) { 731 if ( vaiAsso() ); 732 else if ( vaiLiscioConCarichiInGioco() ); 733 else if ( vaiLiscio() ); 734 else if ( vaiPuntiConCarichiInGioco() ); 735 else if ( vaiPunti() ); 736 else if ( vaiTaglio() ); 737 else if ( vaiBriscolaAlta() ); 738 else if ( vaiCarico() ); 739 } else if ( haMessoAsso() ) { 740 if ( vaiLiscioConCarichiInGioco() ); 741 else if ( vaiLiscio() ); 742 else if ( vaiPuntiConCarichiInGioco() ); 743 else if ( vaiPunti() ); 744 else if ( vaiTaglio() ); 745 else if ( vaiBriscolaAlta() ); 746 else if ( vaiCarico() ); 747 else if ( vaiTre() ); 748 } else if ( haCaricato() ) { 749 if ( vaiSopra() ); 750 else if ( vaiTre() ); 751 else if ( vaiBriscolaAlta() ); 752 else if ( vaiTaglio() ); 753 else if ( vaiAsso() ); 754 else if ( vaiLiscioConCarichiInGioco() ); 755 else if ( vaiLiscio() ); 756 else if ( vaiPuntiConCarichiInGioco() ); 757 else if ( vaiPunti() ); 758 else if ( vaiCarico() ); 759 } 760 } 761 } 762 763 else { 764 765 if ( !haGiocato() ) { 766 if ( vaiLiscioConCarichiPassati() ); 767 else if ( vaiLiscio() ); 768 else if ( vaiPuntiConCarichiPassati() ); 769 else if ( vaiPunti() ); 770 else if ( vaiTaglio() ); 771 else if ( vaiBriscolaAlta() ); 772 else if ( vaiCarico() ); 773 else if ( vaiTre() ); 774 else if ( vaiAsso() ); 775 else; 776 } 777 778 /* Valuta cosa fare quando invece il giocatore ha giocato */ 779 else { 780 if ( haLisciato() ) { 781 if ( vaiSopra() ); 782 else if ( vaiLiscioConCarichiInGioco() ); 783 else if ( vaiLiscio() ); 784 else if ( vaiTre() ); 785 else if ( vaiBriscolaAlta() ); 786 else if ( vaiTaglio() ); 787 else if ( vaiAsso() ); 788 else if ( vaiPuntiConCarichiInGioco() ); 789 else if ( vaiPunti() ); 790 else if ( vaiCarico() ); 791 } else if ( haMessoPunti() ) { 792 if ( vaiSopra() ); 793 else if ( vaiTre() ); 794 else if ( vaiBriscolaAlta() ); 795 else if ( vaiTaglio() ); 796 else if ( vaiAsso() ); 797 else if ( vaiLiscioConCarichiInGioco() ); 798 else if ( vaiLiscio() ); 799 else if ( vaiPuntiConCarichiInGioco() ); 800 else if ( vaiPunti() ); 801 else if ( vaiCarico() ); 802 } else if ( haTagliato() ) { 803 if ( vaiLiscioConCarichiInGioco() ); 804 else if ( vaiLiscio() ); 805 else if ( vaiTaglio() ); 806 else if ( vaiTre() ); 807 else if ( vaiBriscolaAlta() ); 808 else if ( vaiAsso() ); 809 else if ( vaiPuntiConCarichiInGioco() ); 810 else if ( vaiPunti() ); 811 else if ( vaiCarico() ); 812 } else if ( haMessoBriscolaAlta() ) { 813 if ( vaiLiscioConCarichiInGioco() ); 814 else if ( vaiLiscio() ); 815 else if ( vaiTre() ); 816 else if ( vaiTaglio() ); 817 else if ( vaiAsso() ); 818 else if ( vaiBriscolaAlta() ); 819 else if ( vaiPuntiConCarichiInGioco() ); 820 else if ( vaiPunti() ); 821 else if ( vaiCarico() ); 822 } else if ( haMessoTre() ) { 823 if ( vaiAsso() ); 824 else if ( vaiLiscioConCarichiInGioco() ); 825 else if ( vaiLiscio() ); 826 else if ( vaiPuntiConCarichiInGioco() ); 827 else if ( vaiPunti() ); 828 else if ( vaiTaglio() ); 829 else if ( vaiBriscolaAlta() ); 830 else if ( vaiCarico() ); 831 } else if ( haMessoAsso() ) { 832 if ( vaiLiscioConCarichiInGioco() ); 833 else if ( vaiLiscio() ); 834 else if ( vaiTaglio() ); 835 else if ( vaiPuntiConCarichiInGioco() ); 836 else if ( vaiPunti() ); 837 else if ( vaiBriscolaAlta() ); 838 else if ( vaiCarico() ); 839 else if ( vaiTre() ); 840 } else if ( haCaricato() ) { 841 if ( vaiSopra() ); 842 else if ( vaiTre() ); 843 else if ( vaiBriscolaAlta() ); 844 else if ( vaiTaglio() ); 845 else if ( vaiAsso() ); 846 else if ( vaiLiscioConCarichiInGioco() ); 847 else if ( vaiLiscio() ); 848 else if ( vaiPuntiConCarichiInGioco() ); 849 else if ( vaiPunti() ); 850 else if ( vaiCarico() ); 851 } 852 } 853 } 854 855 /* Gioca la carta e aggiorna la finestra con il metodo repaint() */ 856 frame.giocata[1] = frame.carteCPU[cartaDaGiocare]; 857 frame.carteCPU[cartaDaGiocare] = null; 858 frame.pannello.repaint(); 859 860 CPUHaGiocato = true; 861 862 if ( !haGiocato() ) 863 toccaAllaCPU = false; 864 } 865 866 /* Determina se ha preso la CPU o il giocatore*/ 867 public void chiPrende() { 868 869 /* Chiama il metodo giocatorePrende( boolean giocatore ) con parametro 870 * true se ha preso il giocatore, false se ha preso la CPU */ 871 giocatorePrende( ( (seme( frame.giocata[0] ) == semeBriscola) && (seme( frame.giocata[1] ) != semeBriscola) ) 872 || ( (seme( frame.giocata[0] ) == seme( frame.giocata[1] )) && laPrimaEPiuAlta( valore( frame.giocata[0] ), valore( frame.giocata[1] )) ) 873 || ( (seme( frame.giocata[1] ) != semeBriscola) && (seme( frame.giocata[0] ) != seme( frame.giocata[1] )) && haGiocatoPrima ) ); 874 } 875 876 /* Confronta due carte per decidere quale ha più valore di presa. 877 * Restituisce true se è la prima, false se è la seconda */ 878 public boolean laPrimaEPiuAlta( int prima, int seconda ) { 879 int a, b; 880 switch ( prima ) { 881 case 0: 882 a = 10; 883 break; 884 case 1: 885 a = 12; 886 break; 887 case 3: 888 a = 11; 889 break; 890 default: 891 a = prima; 892 break; 893 } 894 switch ( seconda ) { 895 case 0: 896 b = 10; 897 break; 898 case 1: 899 b = 12; 900 break; 901 case 3: 902 b = 11; 903 break; 904 default: 905 b = seconda; 906 break; 907 } 908 return a > b; 909 } 910 911 /* Viene chiamato con parametro true se ha preso il giocatore, false se 912 * ha preso la CPU */ 913 public void giocatorePrende( boolean giocatore ) { 914 if ( giocatore ) { 915 toccaAllaCPU = CPUHaGiocato = false; 916 haGiocatoPrima = true; 917 } 918 else { 919 toccaAllaCPU = true; 920 CPUHaGiocato = haGiocatoPrima = false; 921 } 922 daiPunti( giocatore ); 923 } 924 925 /* Da i punti (true al giocatore, false alla CPU) e fa pescare le carte*/ 926 public void daiPunti( boolean giocatore ) { 927 928 int punti = 0; 929 930 switch( valore( frame.giocata[0] ) ) { 931 case 0: 932 punti += 4; 933 break; 934 case 1: 935 punti += 11; 936 break; 937 case 3: 938 punti += 10; 939 break; 940 case 8: 941 punti += 2; 942 break; 943 case 9: 944 punti += 3; 945 break; 946 default: 947 break; 948 } 949 switch( valore( frame.giocata[1] ) ) { 950 case 0: 951 punti += 4; 952 break; 953 case 1: 954 punti += 11; 955 break; 956 case 3: 957 punti += 10; 958 break; 959 case 8: 960 punti += 2; 961 break; 962 case 9: 963 punti += 3; 964 break; 965 default: 966 break; 967 } 968 969 frame.giocata[0] = frame.giocata[1] = null; 970 971 if ( giocatore ) { 972 punteggio += punti; 973 if ( mano < 18 ) { 974 if ( frame.carteInMano[0] == null ) 975 frame.carteInMano[0] = frame.arrayCarteMescolate[cartaDaPescare]; 976 if ( frame.carteInMano[1] == null ) 977 frame.carteInMano[1] = frame.arrayCarteMescolate[cartaDaPescare]; 978 if ( frame.carteInMano[2] == null ) 979 frame.carteInMano[2] = frame.arrayCarteMescolate[cartaDaPescare]; 980 cartaDaPescare++; 981 if ( frame.carteCPU[0] == null ) 982 frame.carteCPU[0] = frame.arrayCarteMescolate[cartaDaPescare]; 983 if ( frame.carteCPU[1] == null ) 984 frame.carteCPU[1] = frame.arrayCarteMescolate[cartaDaPescare]; 985 if ( frame.carteCPU[2] == null ) 986 frame.carteCPU[2] = frame.arrayCarteMescolate[cartaDaPescare]; 987 cartaDaPescare++; 988 } 989 } 990 991 else { 992 punteggioCPU += punti; 993 if ( mano < 18 ) { 994 if ( frame.carteCPU[0] == null ) 995 frame.carteCPU[0] = frame.arrayCarteMescolate[cartaDaPescare]; 996 if ( frame.carteCPU[1] == null ) 997 frame.carteCPU[1] = frame.arrayCarteMescolate[cartaDaPescare]; 998 if ( frame.carteCPU[2] == null ) 999 frame.carteCPU[2] = frame.arrayCarteMescolate[cartaDaPescare]; 1000 cartaDaPescare++; 1001 if ( frame.carteInMano[0] == null ) 1002 frame.carteInMano[0] = frame.arrayCarteMescolate[cartaDaPescare]; 1003 if ( frame.carteInMano[1] == null ) 1004 frame.carteInMano[1] = frame.arrayCarteMescolate[cartaDaPescare]; 1005 if ( frame.carteInMano[2] == null ) 1006 frame.carteInMano[2] = frame.arrayCarteMescolate[cartaDaPescare]; 1007 cartaDaPescare++; 1008 } 1009 } 1010 1011 /* Aggiorna la finestra */ 1012 frame.pannello.repaint(); 1013 frame.repaint(); 1014 } 1015 1016 /* Ritorna true se il giocatore ha giocato */ 1017 public boolean haGiocato() { 1018 return frame.giocata[0] != null; 1019 } 1020 1021 /* Vari metodi che determinano che tipo di carta ha giocato il giocatore.*/ 1022 public boolean haLisciato() { 1023 return ( (haGiocato()) && (seme( frame.giocata[0] ) != semeBriscola) && 1024 (valore( frame.giocata[0] ) != RE ) && (valore( frame.giocata[0] ) != ASSO ) && 1025 (valore( frame.giocata[0] ) != TRE ) && (valore( frame.giocata[0] ) < FANTE ) ); 1026 } 1027 1028 public boolean haMessoPunti() { 1029 return ( (haGiocato()) && (seme( frame.giocata[0] ) != semeBriscola) && 1030 ( (valore( frame.giocata[0] ) == RE ) || (valore( frame.giocata[0] ) == FANTE ) || 1031 (valore( frame.giocata[0] ) == CAVALLO ) ) ); 1032 } 1033 1034 public boolean haTagliato() { 1035 return ( (haGiocato()) && (seme( frame.giocata[0] ) == semeBriscola) && 1036 (valore( frame.giocata[0] ) == RE) && (valore( frame.giocata[0] ) != ASSO) && 1037 (valore( frame.giocata[0] ) == TRE) && (valore( frame.giocata[0] ) <= SETTE) ); 1038 } 1039 1040 public boolean haMessoBriscolaAlta() { 1041 return ( (haGiocato()) && (seme( frame.giocata[0] ) == semeBriscola) && 1042 ( (valore( frame.giocata[0] ) == RE ) || (valore( frame.giocata[0] ) == FANTE ) || 1043 (valore( frame.giocata[0] ) == CAVALLO ) ) ); 1044 } 1045 1046 public boolean haMessoTre() { 1047 return ( (haGiocato()) && (seme( frame.giocata[0] ) == semeBriscola) && 1048 (valore( frame.giocata[0] ) == TRE) ); 1049 } 1050 1051 public boolean haMessoAsso() { 1052 return ( (haGiocato()) && (seme( frame.giocata[0] ) == semeBriscola) && 1053 (valore( frame.giocata[0] ) == ASSO) ); 1054 } 1055 1056 public boolean haCaricato() { 1057 return ( (haGiocato()) && (seme( frame.giocata[0] ) != semeBriscola) && 1058 ( (valore( frame.giocata[0] ) == ASSO) || (valore( frame.giocata[0] ) == TRE) ) ); 1059 } 1060 1061 /* I metodi seguenti cercano di andare liscio - dare punti - mettere 1062 * un taglio - ecc... e restituiscono true se hanno avuto successo, 1063 * false altrimenti. Le varianti -ConCarichiPassati e -ConCarichiInGioco 1064 * cercano, rispettivamente, di giocare un seme i cui carichi siano già 1065 * passati o ancora in gioco.*/ 1066 public boolean vaiLiscio() { 1067 for ( int i = 0; i < 3; i++ ) { 1068 if ( frame.carteCPU[i] != null ) { 1069 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && 1070 (valore( frame.carteCPU[i] ) != RE) && (valore( frame.carteCPU[i] ) != ASSO) && 1071 (valore( frame.carteCPU[i] ) != TRE) && (valore( frame.carteCPU[i] ) < FANTE) ) { 1072 cartaDaGiocare = i; 1073 return true; 1074 } 1075 } 1076 } 1077 1078 return false; 1079 } 1080 1081 public boolean vaiLiscioConCarichiPassati() { 1082 for ( int i = 0; i < 3; i++ ) { 1083 if ( frame.carteCPU[i] != null ) { 1084 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && 1085 (valore( frame.carteCPU[i] ) != RE) && (valore( frame.carteCPU[i] ) != ASSO) && 1086 (valore( frame.carteCPU[i] ) != TRE) && (valore( frame.carteCPU[i] ) < FANTE) 1087 && sonoPassatiICarichi( seme( frame.carteCPU[i] ) ) ) { 1088 cartaDaGiocare = i; 1089 return true; 1090 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && 1091 (valore( frame.carteCPU[i] ) != RE) && (valore( frame.carteCPU[i] ) != ASSO) && 1092 (valore( frame.carteCPU[i] ) != TRE) && (valore( frame.carteCPU[i] ) < FANTE) 1093 && ePassato( ASSO, seme( frame.carteCPU[i] ) ) ) { 1094 cartaDaGiocare = i; 1095 return true; 1096 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && 1097 (valore( frame.carteCPU[i] ) != RE) && (valore( frame.carteCPU[i] ) != ASSO) && 1098 (valore( frame.carteCPU[i] ) != TRE) && (valore( frame.carteCPU[i] ) < FANTE) 1099 && ePassato( TRE, seme( frame.carteCPU[i] ) ) ) { 1100 cartaDaGiocare = i; 1101 return true; 1102 } 1103 } 1104 } 1105 1106 return false; 1107 } 1108 1109 public boolean vaiLiscioConCarichiInGioco() { 1110 for ( int i = 0; i < 3; i++ ) { 1111 if ( frame.carteCPU[i] != null ) { 1112 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && 1113 (valore( frame.carteCPU[i] ) != RE) && (valore( frame.carteCPU[i] ) != ASSO) && 1114 (valore( frame.carteCPU[i] ) != TRE) && (valore( frame.carteCPU[i] ) < FANTE) 1115 && !sonoPassatiICarichi( seme( frame.carteCPU[i] ) ) ) { 1116 cartaDaGiocare = i; 1117 return true; 1118 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && 1119 (valore( frame.carteCPU[i] ) != RE) && (valore( frame.carteCPU[i] ) != ASSO) && 1120 (valore( frame.carteCPU[i] ) != TRE) && (valore( frame.carteCPU[i] ) < FANTE) 1121 && !ePassato( ASSO, seme( frame.carteCPU[i] ) ) ) { 1122 cartaDaGiocare = i; 1123 return true; 1124 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && 1125 (valore( frame.carteCPU[i] ) != RE) && (valore( frame.carteCPU[i] ) != ASSO) && 1126 (valore( frame.carteCPU[i] ) != TRE) && (valore( frame.carteCPU[i] ) < FANTE) 1127 && !ePassato( TRE, seme( frame.carteCPU[i] ) ) ) { 1128 cartaDaGiocare = i; 1129 return true; 1130 } 1131 } 1132 } 1133 1134 return false; 1135 } 1136 1137 public boolean vaiPunti() { 1138 /* Cerca di dare punti, cercando di darne il meno possibile (meglio 1139 * un fante di re). */ 1140 for ( int i = 0; i < 3; i++ ) { 1141 if ( frame.carteCPU[i] != null ) { 1142 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == FANTE ) ) { 1143 cartaDaGiocare = i; 1144 return true; 1145 } 1146 } 1147 } 1148 1149 for ( int i = 0; i < 3; i++ ) { 1150 if ( frame.carteCPU[i] != null ) { 1151 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == CAVALLO ) ) { 1152 cartaDaGiocare = i; 1153 return true; 1154 } 1155 } 1156 } 1157 1158 for ( int i = 0; i < 3; i++ ) { 1159 if ( frame.carteCPU[i] != null ) { 1160 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == RE ) ) { 1161 cartaDaGiocare = i; 1162 return true; 1163 } 1164 } 1165 } 1166 1167 return false; 1168 } 1169 1170 public boolean vaiPuntiConCarichiPassati() { 1171 for ( int i = 0; i < 3; i++ ) { 1172 if ( frame.carteCPU[i] != null ) { 1173 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == FANTE ) 1174 && sonoPassatiICarichi( seme( frame.carteCPU[i] ) ) ) { 1175 cartaDaGiocare = i; 1176 return true; 1177 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == FANTE ) 1178 && ePassato( ASSO, seme( frame.carteCPU[i] ) ) ) { 1179 cartaDaGiocare = i; 1180 return true; 1181 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == FANTE ) 1182 && ePassato( TRE, seme( frame.carteCPU[i] ) ) ) { 1183 cartaDaGiocare = i; 1184 return true; 1185 } 1186 } 1187 } 1188 for ( int i = 0; i < 3; i++ ) { 1189 if ( frame.carteCPU[i] != null ) { 1190 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == CAVALLO ) 1191 && sonoPassatiICarichi( seme( frame.carteCPU[i] ) ) ) { 1192 cartaDaGiocare = i; 1193 return true; 1194 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == CAVALLO ) 1195 && ePassato( ASSO, seme( frame.carteCPU[i] ) ) ) { 1196 cartaDaGiocare = i; 1197 return true; 1198 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == CAVALLO ) 1199 && ePassato( TRE, seme( frame.carteCPU[i] ) ) ) { 1200 cartaDaGiocare = i; 1201 return true; 1202 } 1203 } 1204 } 1205 for ( int i = 0; i < 3; i++ ) { 1206 if ( frame.carteCPU[i] != null ) { 1207 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == RE ) 1208 && sonoPassatiICarichi( seme( frame.carteCPU[i] ) ) ) { 1209 cartaDaGiocare = i; 1210 return true; 1211 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == RE ) 1212 && ePassato( ASSO, seme( frame.carteCPU[i] ) ) ) { 1213 cartaDaGiocare = i; 1214 return true; 1215 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == RE ) 1216 && ePassato( TRE, seme( frame.carteCPU[i] ) ) ) { 1217 cartaDaGiocare = i; 1218 return true; 1219 } 1220 } 1221 } 1222 1223 return false; 1224 } 1225 1226 public boolean vaiPuntiConCarichiInGioco() { 1227 for ( int i = 0; i < 3; i++ ) { 1228 if ( frame.carteCPU[i] != null ) { 1229 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == FANTE ) 1230 && !sonoPassatiICarichi( seme( frame.carteCPU[i] ) ) ) { 1231 cartaDaGiocare = i; 1232 return true; 1233 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == FANTE ) 1234 && !ePassato( ASSO, seme( frame.carteCPU[i] ) ) ) { 1235 cartaDaGiocare = i; 1236 return true; 1237 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == FANTE ) 1238 && !ePassato( TRE, seme( frame.carteCPU[i] ) ) ) { 1239 cartaDaGiocare = i; 1240 return true; 1241 } 1242 } 1243 } 1244 for ( int i = 0; i < 3; i++ ) { 1245 if ( frame.carteCPU[i] != null ) { 1246 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == CAVALLO ) 1247 && !sonoPassatiICarichi( seme( frame.carteCPU[i] ) ) ) { 1248 cartaDaGiocare = i; 1249 return true; 1250 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == CAVALLO ) 1251 && !ePassato( ASSO, seme( frame.carteCPU[i] ) ) ) { 1252 cartaDaGiocare = i; 1253 return true; 1254 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == CAVALLO ) 1255 && !ePassato( TRE, seme( frame.carteCPU[i] ) ) ) { 1256 cartaDaGiocare = i; 1257 return true; 1258 } 1259 } 1260 } 1261 for ( int i = 0; i < 3; i++ ) { 1262 if ( frame.carteCPU[i] != null ) { 1263 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == RE ) 1264 && !sonoPassatiICarichi( seme( frame.carteCPU[i] ) ) ) { 1265 cartaDaGiocare = i; 1266 return true; 1267 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == RE ) 1268 && !ePassato( ASSO, seme( frame.carteCPU[i] ) ) ) { 1269 cartaDaGiocare = i; 1270 return true; 1271 } else if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == RE ) 1272 && !ePassato( TRE, seme( frame.carteCPU[i] ) ) ) { 1273 cartaDaGiocare = i; 1274 return true; 1275 } 1276 } 1277 } 1278 1279 return false; 1280 } 1281 1282 public boolean vaiTaglio() { 1283 for ( int i = 0; i < 3; i++ ) { 1284 if ( frame.carteCPU[i] != null ) { 1285 if ( seme( frame.carteCPU[i] ) == semeBriscola && 1286 (valore( frame.carteCPU[i] ) != RE) && (valore( frame.carteCPU[i] ) != ASSO) && 1287 (valore( frame.carteCPU[i] ) != TRE) && (valore( frame.carteCPU[i] ) < FANTE) ) { 1288 cartaDaGiocare = i; 1289 return true; 1290 } 1291 } 1292 } 1293 1294 return false; 1295 } 1296 public boolean vaiBriscolaAlta() { 1297 for ( int i = 0; i < 3; i++ ) { 1298 if ( frame.carteCPU[i] != null ) { 1299 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && (valore( frame.carteCPU[i] ) == FANTE) ) { 1300 cartaDaGiocare = i; 1301 return true; 1302 } 1303 } 1304 } 1305 1306 for ( int i = 0; i < 3; i++ ) { 1307 if ( frame.carteCPU[i] != null ) { 1308 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && (valore( frame.carteCPU[i] ) == CAVALLO) ) { 1309 cartaDaGiocare = i; 1310 return true; 1311 } 1312 } 1313 } 1314 1315 for ( int i = 0; i < 3; i++ ) { 1316 if ( frame.carteCPU[i] != null ) { 1317 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && (valore( frame.carteCPU[i] ) == RE) ) { 1318 cartaDaGiocare = i; 1319 return true; 1320 } 1321 } 1322 } 1323 1324 return false; 1325 } 1326 public boolean vaiTre() { 1327 for ( int i = 0; i < 3; i++ ) { 1328 if ( frame.carteCPU[i] != null ) { 1329 if ( seme( frame.carteCPU[i] ) == semeBriscola && (valore( frame.carteCPU[i] ) == TRE) ) { 1330 cartaDaGiocare = i; 1331 return true; 1332 } 1333 } 1334 } 1335 1336 return false; 1337 } 1338 public boolean vaiAsso() { 1339 for ( int i = 0; i < 3; i++ ) { 1340 if ( frame.carteCPU[i] != null ) { 1341 if ( seme( frame.carteCPU[i] ) == semeBriscola && (valore( frame.carteCPU[i] ) == ASSO) ) { 1342 cartaDaGiocare = i; 1343 return true; 1344 } 1345 } 1346 } 1347 1348 return false; 1349 } 1350 public boolean vaiCarico() { 1351 1352 for ( int i = 0; i < 3; i++ ) { 1353 if ( frame.carteCPU[i] != null ) { 1354 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == ASSO) ) { 1355 cartaDaGiocare = i; 1356 return true; 1357 } 1358 } 1359 } 1360 1361 for ( int i = 0; i < 3; i++ ) { 1362 if ( frame.carteCPU[i] != null ) { 1363 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && (valore( frame.carteCPU[i] ) == TRE) ) { 1364 cartaDaGiocare = i; 1365 return true; 1366 } 1367 } 1368 } 1369 1370 return false; 1371 } 1372 1373 /* Gioca una carta diversa da quella passata come parametro */ 1374 public boolean vaiNon( int valore, int seme ) { 1375 for ( int i = 0; i < 3; i++ ) { 1376 if ( frame.carteCPU[i] != null ) { 1377 if ( seme( frame.carteCPU[i] ) != seme && valore( frame.carteCPU[i] ) != valore ) { 1378 cartaDaGiocare = i; 1379 return true; 1380 } 1381 } 1382 } 1383 1384 return false; 1385 } 1386 1387 /* Gioca la prima carta che trova */ 1388 public boolean vaiPrima() { 1389 for ( int i = 0; i < 3; i++ ) { 1390 if ( frame.carteCPU[i] != null ) { 1391 cartaDaGiocare = i; 1392 return true; 1393 } 1394 } 1395 1396 return false; 1397 } 1398 1399 /* Metodi per l'ultima mano */ 1400 public boolean vaiBriscolaPiuAltaInGioco() { 1401 for ( int i = 0; i < 3; i++ ) { 1402 if ( frame.carteCPU[i] != null ) { 1403 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && (valore( frame.carteCPU[i] ) == piuAltaInGioco()) ) { 1404 cartaDaGiocare = i; 1405 return true; 1406 } 1407 } 1408 } 1409 1410 return false; 1411 } 1412 1413 public boolean vaiSecondaBriscolaPiuAltaInGioco() { 1414 for ( int i = 0; i < 3; i++ ) { 1415 if ( frame.carteCPU[i] != null ) { 1416 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && (valore( frame.carteCPU[i] ) == secondaPiuAltaInGioco()) ) { 1417 cartaDaGiocare = i; 1418 return true; 1419 } 1420 } 1421 } 1422 1423 return false; 1424 } 1425 1426 public boolean vaiSopra() { 1427 /* Innanzitutto controlla se il giocatore ha giocato (non dovrebbe 1428 * essere possibile, in quanto quando questo metodo viene chiamato 1429 * tale condizione è già stata verificata, ma è sempre meglio un 1430 * controllo in più che uno in meno) e restituisce false in caso 1431 * contrario */ 1432 if ( !haGiocato() ) 1433 return false; 1434 1435 /* Tre variabili intere che serviranno a valutare quali delle tre 1436 * carte è meglio giocare, se più di una può andare sopra. */ 1437 int a = -1; 1438 int b = -1; 1439 int c = -1; 1440 1441 /* Tre booleane che verificano quali delle tre carte possono 1442 * andare sopra. */ 1443 boolean laPrimaPuoAndareSopra = false; 1444 boolean laSecondaPuoAndareSopra = false; 1445 boolean laTerzaPuoAndareSopra = false; 1446 1447 /* Se il giocatore ha giocato un asso, restituisce direttamente false. */ 1448 if ( valore( frame.giocata[0] ) == ASSO ) 1449 return false; 1450 1451 /* Valuta quali delle tre carte possono andare sopra, dopo essersi 1452 * accertato di averle: nelle ultime mani non si hanno tutte le carte 1453 * in mano, e noi non vogliamo una NullPointerException sul più bello 1454 * di una partita, vero?! */ 1455 if ( frame.carteCPU[0] != null ) { 1456 a = valore( frame.carteCPU[0] ); 1457 if ( (seme( frame.carteCPU[0] ) == seme( frame.giocata[0] )) && laPrimaEPiuAlta( a, valore( frame.giocata[0] ) ) ) 1458 laPrimaPuoAndareSopra = true; 1459 } 1460 1461 if ( frame.carteCPU[1] != null ) { 1462 b = valore( frame.carteCPU[1] ); 1463 if ( (seme( frame.carteCPU[1] ) == seme( frame.giocata[0] )) && laPrimaEPiuAlta( b, valore( frame.giocata[0] ) ) ) 1464 laSecondaPuoAndareSopra = true; 1465 } 1466 1467 if ( frame.carteCPU[2] != null ) { 1468 c = valore( frame.carteCPU[2] ); 1469 if ( (seme( frame.carteCPU[2] ) == seme( frame.giocata[0] )) && laPrimaEPiuAlta( c, valore( frame.giocata[0] ) ) ) 1470 laTerzaPuoAndareSopra = true; 1471 } 1472 1473 /* Se nessuna carta può andare sopra, restituisce false. Se una 1474 * sola delle tre può andare sopra la imposta come carta da giocare. */ 1475 if ( !laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra ) 1476 return false; 1477 else if ( laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra ) 1478 cartaDaGiocare = 0; 1479 else if ( !laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra ) 1480 cartaDaGiocare = 1; 1481 else if ( !laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && laTerzaPuoAndareSopra ) 1482 cartaDaGiocare = 2; 1483 1484 /* Se più di una carta può andare sopra, valuta quale è più alta. */ 1485 else if ( laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra ) 1486 if ( laPrimaEPiuAlta( a, b ) ) 1487 cartaDaGiocare = 0; 1488 else 1489 cartaDaGiocare = 1; 1490 else if ( !laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && laTerzaPuoAndareSopra ) 1491 if ( laPrimaEPiuAlta( b, c ) ) 1492 cartaDaGiocare = 1; 1493 else 1494 cartaDaGiocare = 2; 1495 else if ( laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && laTerzaPuoAndareSopra ) 1496 if ( laPrimaEPiuAlta( a, c ) ) 1497 cartaDaGiocare = 0; 1498 else 1499 cartaDaGiocare = 2; 1500 else if ( laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && laTerzaPuoAndareSopra ) 1501 if ( laPrimaEPiuAlta( a, b ) ) 1502 if ( laPrimaEPiuAlta( a, c ) ) 1503 cartaDaGiocare = 0; 1504 else 1505 cartaDaGiocare = 2; 1506 else 1507 if ( laPrimaEPiuAlta( b, c ) ) 1508 cartaDaGiocare = 1; 1509 else 1510 cartaDaGiocare = 2; 1511 1512 /* Controlla che la carta con cui sta cercando di andare sopra 1513 * sia una figura o un carico. Non vogliamo mica prendere delle 1514 * scartelle con delle scartelle, giusto?! */ 1515 if ( ( valore( frame.carteCPU[cartaDaGiocare] ) != RE ) && ( valore( frame.carteCPU[cartaDaGiocare] ) != ASSO ) && 1516 ( valore( frame.carteCPU[cartaDaGiocare] ) != TRE ) && ( valore( frame.carteCPU[cartaDaGiocare] ) <= SETTE ) ) 1517 return false; 1518 1519 return true; 1520 } 1521 1522 /* I metodi seguenti valutano le carte che la CPU ha in mano. */ 1523 public boolean hoCarico() { 1524 for ( int i = 0; i < 3; i++ ) { 1525 if ( frame.carteCPU[i] != null ) { 1526 if ( (seme( frame.carteCPU[i] ) != semeBriscola) && 1527 ( ( valore( frame.carteCPU[i] ) == ASSO ) || ( valore( frame.carteCPU[i] ) == TRE ) ) ) { 1528 return true; 1529 } 1530 } 1531 } 1532 1533 return false; 1534 } 1535 public boolean hoAsso() { 1536 for ( int i = 0; i < 3; i++ ) { 1537 if ( frame.carteCPU[i] != null ) { 1538 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && (valore( frame.carteCPU[i] ) == ASSO ) ) { 1539 return true; 1540 } 1541 } 1542 } 1543 1544 return false; 1545 } 1546 public boolean hoTre() { 1547 for ( int i = 0; i < 3; i++ ) { 1548 if ( frame.carteCPU[i] != null ) { 1549 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && (valore( frame.carteCPU[i] ) == TRE ) ) { 1550 return true; 1551 } 1552 } 1553 } 1554 1555 return false; 1556 } 1557 public boolean hoBriscolaAlta() { 1558 for ( int i = 0; i < 3; i++ ) { 1559 if ( frame.carteCPU[i] != null ) { 1560 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && 1561 ( (valore( frame.carteCPU[i] ) == RE) || (valore( frame.carteCPU[i] ) == FANTE) || (valore( frame.carteCPU[i] ) == CAVALLO) ) ) { 1562 return true; 1563 } 1564 } 1565 } 1566 1567 return false; 1568 } 1569 public boolean hoTaglio() { 1570 for ( int i = 0; i < 3; i++ ) { 1571 if ( frame.carteCPU[i] != null ) { 1572 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && 1573 (valore( frame.carteCPU[i] ) < FANTE ) && (valore( frame.carteCPU[i] ) != TRE ) 1574 && (valore( frame.carteCPU[i] ) != ASSO ) && (valore( frame.carteCPU[i] ) != RE ) ) { 1575 return true; 1576 } 1577 } 1578 } 1579 1580 return false; 1581 } 1582 1583 /* Metodi per l'ultima mano */ 1584 public boolean hoLaBriscolaPiuAltaInGioco() { 1585 for ( int i = 0; i < 3; i++ ) { 1586 if ( frame.carteCPU[i] != null ) { 1587 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && (valore( frame.carteCPU[i] ) == piuAltaInGioco()) ) 1588 return true; 1589 } 1590 } 1591 1592 return false; 1593 } 1594 public boolean hoLaSecondaBriscolaPiuAltaInGioco() { 1595 for ( int i = 0; i < 3; i++ ) { 1596 if ( frame.carteCPU[i] != null ) { 1597 if ( (seme( frame.carteCPU[i] ) == semeBriscola) && (valore( frame.carteCPU[i] ) == secondaPiuAltaInGioco()) ) 1598 return true; 1599 } 1600 } 1601 1602 return false; 1603 } 1604 public boolean luiHaLaBriscolaPiuAltaInGioco() { 1605 for ( int i = 0; i < 3; i++ ) { 1606 if ( frame.carteInMano[i] != null ) { 1607 if ( (seme( frame.carteInMano[i] ) == semeBriscola) && (valore( frame.carteInMano[i] ) == piuAltaInGioco()) ) 1608 return true; 1609 } 1610 } 1611 1612 return false; 1613 } 1614 public boolean luiHaLaSecondaBriscolaPiuAltaInGioco() { 1615 for ( int i = 0; i < 3; i++ ) { 1616 if ( frame.carteInMano[i] != null ) { 1617 if ( (seme( frame.carteInMano[i] ) == semeBriscola) && (valore( frame.carteInMano[i] ) == secondaPiuAltaInGioco()) ) 1618 return true; 1619 } 1620 } 1621 1622 return false; 1623 } 1624 public boolean luiHaTutteBriscole() { 1625 if ( frame.carteInMano[0] != null && seme( frame.carteInMano[0] ) != semeBriscola ) return false; 1626 else if ( frame.carteInMano[1] != null && seme( frame.carteInMano[1] ) != semeBriscola ) return false; 1627 else if ( frame.carteInMano[2] != null && seme( frame.carteInMano[2] ) != semeBriscola ) return false; 1628 else return true; 1629 } 1630 1631 /* Restituisce il seme della carta passata come parametro */ 1632 public static int seme( ImageIcon carta ) { 1633 char aux[] = carta.toString().toCharArray(); 1634 return aux[aux.length-5] - 49; 1635 } 1636 1637 /* Restituisce il valore della carta */ 1638 public static int valore( ImageIcon carta ) { 1639 char aux[] = carta.toString().toCharArray(); 1640 return aux[aux.length-7] - 48; 1641 } 1642 1643 /* Controlla se una carta è già passata */ 1644 public static boolean ePassato( int valore, int seme ) { 1645 for ( int i = 0; ; i++ ) { 1646 if ( frame.arrayCartePassate[i] == null ) { 1647 for ( int j = 0; j < 3; j++ ) 1648 if ( frame.carteCPU[j] != null && valore( frame.carteCPU[j] ) == valore && seme( frame.carteCPU[j] ) == seme ) return true; 1649 return false; 1650 } 1651 else if ( valore( frame.arrayCartePassate[i] ) == valore && seme( frame.arrayCartePassate[i] ) == seme ) return true; 1652 } 1653 } 1654 1655 /* Controlla se sono passati i carichi di un determinato seme */ 1656 public static boolean sonoPassatiICarichi( int seme ) { 1657 return ePassato( TRE, seme ) && ePassato( ASSO, seme ); 1658 } 1659 1660 /* Restituisce il valore della briscola più alta in gioco*/ 1661 public static int piuAltaInGioco() { 1662 if ( !ePassato( ASSO, semeBriscola ) ) return ASSO; 1663 else if ( !ePassato( TRE, semeBriscola ) ) return TRE; 1664 else if ( !ePassato( RE, semeBriscola ) ) return RE; 1665 else if ( !ePassato( CAVALLO, semeBriscola ) ) return CAVALLO; 1666 else if ( !ePassato( FANTE, semeBriscola ) ) return FANTE; 1667 else if ( !ePassato( SETTE, semeBriscola ) ) return SETTE; 1668 else if ( !ePassato( SEI, semeBriscola ) ) return SEI; 1669 else if ( !ePassato( CINQUE, semeBriscola ) ) return CINQUE; 1670 else if ( !ePassato( QUATTRO, semeBriscola ) ) return QUATTRO; 1671 else if ( !ePassato( DUE, semeBriscola ) ) return DUE; 1672 else return -1; 1673 } 1674 1675 /* Restituisce il valore della seconda briscola più alta in gioco*/ 1676 public static int secondaPiuAltaInGioco() { 1677 if ( !ePassato( ASSO, semeBriscola ) && piuAltaInGioco() != ASSO ) return ASSO; 1678 else if ( !ePassato( TRE, semeBriscola ) && piuAltaInGioco() != TRE ) return TRE; 1679 else if ( !ePassato( RE, semeBriscola ) && piuAltaInGioco() != RE ) return RE; 1680 else if ( !ePassato( CAVALLO, semeBriscola ) && piuAltaInGioco() != CAVALLO ) return CAVALLO; 1681 else if ( !ePassato( FANTE, semeBriscola ) && piuAltaInGioco() != FANTE ) return FANTE; 1682 else if ( !ePassato( SETTE, semeBriscola ) && piuAltaInGioco() != SETTE ) return SETTE; 1683 else if ( !ePassato( SEI, semeBriscola ) && piuAltaInGioco() != SEI ) return SEI; 1684 else if ( !ePassato( CINQUE, semeBriscola ) && piuAltaInGioco() != CINQUE ) return CINQUE; 1685 else if ( !ePassato( QUATTRO, semeBriscola ) && piuAltaInGioco() != QUATTRO ) return QUATTRO; 1686 else if ( !ePassato( DUE, semeBriscola ) && piuAltaInGioco() != DUE ) return DUE; 1687 else return -1; 1688 } 1689 1690 /* I vari trucchi del gioco. */ 1691 public static void trucco( String trucco ) { 1692 1693 byte[] truccoByte = trucco.getBytes(); 1694 char[] truccoChar = new char[ truccoByte.length ]; 1695 for ( int i = 0; i < truccoChar.length; i++ ) 1696 truccoChar[i] = (char)truccoByte[i]; 1697 1698 String attivato = stringaTruccoSbagliato; 1699 1700 /* Carta che vuoi dove vuoi. Esempio: x251 sostituisce 1701 * la terza carta (2) con il 6 (5) di coppe (1). */ 1702 if ( truccoChar[0] == 'x' && truccoChar.length == 4 ) { 1703 1704 attivato = stringaTruccoAttivato; 1705 1706 String aS = "" + truccoChar[1]; 1707 String xS = "" + truccoChar[2]; 1708 String yS = "" + truccoChar[3]; 1709 1710 int a, x, y; 1711 1712 try { 1713 1714 a = Integer.parseInt( aS ); 1715 x = Integer.parseInt( xS ); 1716 y = Integer.parseInt( yS ); 1717 1718 frame.carteInMano[a] = frame.arrayCarte[x][y]; 1719 1720 } catch ( Exception e ) { 1721 attivato = stringaTruccoSbagliato; 1722 } 1723 } 1724 1725 /* Mostra le carte del computer. */ 1726 if ( trucco.equalsIgnoreCase( "Kill Devil Hill" ) ) { 1727 1728 attivato = stringaTruccoAttivato; 1729 1730 carteScoperte = true; 1731 1732 } 1733 1734 /* Scambia le carte con il computer. */ 1735 if ( trucco.equalsIgnoreCase( "Darkside of Aquarius" ) ) { 1736 1737 attivato = stringaTruccoAttivato; 1738 1739 ImageIcon aux = null; 1740 1741 for ( int i = 0; i < 3; i++ ) { 1742 1743 aux = frame.carteInMano[i]; 1744 frame.carteInMano[i] = frame.carteCPU[i]; 1745 frame.carteCPU[i] = aux; 1746 1747 } 1748 } 1749 1750 /* Cambia il seme di briscola con uno a caso, senza dire quale. 1751 * L'ultima carta non cambia. È possibile comunque capire 1752 * qual'è la briscola dal menu ?->Briscola*/ 1753 if ( trucco.equalsIgnoreCase( "Change of Heart" ) ) { 1754 1755 attivato = stringaTruccoAttivato; 1756 1757 semeBriscola = (int) ( Math.random() * 4 ); 1758 1759 } 1760 1761 /* Asso Tre e Re di Briscola tutti in mano (anche in caso di doppioni). */ 1762 if ( trucco.equalsIgnoreCase( "Tears of The Dragon" ) ) { 1763 1764 attivato = stringaTruccoAttivato; 1765 1766 frame.carteInMano[0] = frame.arrayCarte[9][semeBriscola]; 1767 frame.carteInMano[1] = frame.arrayCarte[2][semeBriscola]; 1768 frame.carteInMano[2] = frame.arrayCarte[0][semeBriscola]; 1769 1770 } 1771 1772 /* Tre assi di briscola. */ 1773 if ( trucco.equalsIgnoreCase( "Navigate The Seas of The Sun" ) ) { 1774 1775 attivato = stringaTruccoAttivato; 1776 1777 frame.carteInMano[0] = frame.arrayCarte[0][semeBriscola]; 1778 frame.carteInMano[1] = frame.arrayCarte[0][semeBriscola]; 1779 frame.carteInMano[2] = frame.arrayCarte[0][semeBriscola]; 1780 1781 } 1782 1783 /* Fa finire la partita al prossimo piglio. */ 1784 if ( trucco.equalsIgnoreCase( "Omega" ) ) { 1785 1786 attivato = stringaTruccoAttivato; 1787 1788 mano = 19; 1789 1790 } 1791 1792 JOptionPane.showMessageDialog( frame, attivato, "JBriscola - " + version, JOptionPane.INFORMATION_MESSAGE ); 1793 frame.pannello.repaint(); 1794 frame.repaint(); 1795 1796 } 1797 1798 /* Imposta le opzioni dell'utente cercando di leggerle dal file di configurazione. */ 1799 public static void settaOpzioni() { 1800 1801 /* Impostazioni predefinite. */ 1802 lang = "it"; 1803 soundString = "suono=si"; 1804 keysString = "tasti=si"; 1805 int r = 0; 1806 int g = 150; 1807 int b = 0; 1808 1809 /* Cerca di leggere il file per impostare le opzioni. */ 1810 Scanner scanner = null; 1811 File file = new File( "JBriscolaConfig.txt" ); 1812 if ( file.exists() ) { 1813 try { 1814 scanner = new Scanner( file ); 1815 } catch ( FileNotFoundException e ) { } 1816 try { 1817 lang = scanner.next(); 1818 soundString = scanner.next(); 1819 keysString = scanner.next(); 1820 r = scanner.nextInt(); 1821 g = scanner.nextInt(); 1822 b = scanner.nextInt(); 1823 } catch ( NoSuchElementException e ) { } 1824 } 1825 1826 /* Modifica le opzioni. */ 1827 if ( lang.equals( "it" ) ) { 1828 semi[0] = "Bastoni"; 1829 semi[1] = "Coppe"; 1830 semi[2] = "Denari"; 1831 semi[3] = "Spade"; 1832 stringaBriscola = "Briscola"; 1833 stringaBottonePrendi = "Prendi/Lascia carte"; 1834 stringaPrimaGioca = "Prima Gioca!"; 1835 stringaUltime4 = "Ultima carta - Occhio alla briscola!"; 1836 stringaVinto = "Hai Vinto!"; 1837 stringaPerso = "Hai Perso"; 1838 stringaPareggio = "Pareggio"; 1839 stringaGiocatore = "Giocatore: "; 1840 stringaComputer = "\nComputer: "; 1841 stringaNuovaPartita = "Nuova Partita"; 1842 stringaNuovaPartitaAiTrenta = "Nuova Partita Ai 30"; 1843 stringaVuoiDavveroIniziare = "Vuoi davvero iniziare una nuova partita?"; 1844 stringaVuoiDavveroUscire = "Vuoi davvero uscire?"; 1845 stringaSi = "Si"; 1846 stringaNo = "No"; 1847 stringaOpzioni = "Opzioni..."; 1848 stringaEsci = "Esci"; 1849 stringaImpossibileConfigurare = "Impossibile modificare il file di configurazione.\nSegnalare il bug a: sebastiano@luganega.org\n\nEccezione:\n"; 1850 stringaLingua = "Lingua"; 1851 stringaAnnulla = "Annulla"; 1852 stringaIt = "Italiano"; 1853 stringaLa = "Latino"; 1854 stringaBL = "Dialetto Bellunese"; 1855 stringaBV = "Dialetto Basso Veneto"; 1856 stringaEN = "Inglese"; 1857 stringaModificaOpzioni = "Modifica Opzioni"; 1858 stringaInformazioni = "Informazioni"; 1859 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"; 1860 stringaSuono = "Effetti sonori"; 1861 stringaPunteggio = "Punteggio"; 1862 stringaCartePassate = "Carte Passate"; 1863 stringaSfondo = "Sfondo"; 1864 stringaTasti = "Tasti rapidi"; 1865 stringaAggiornamenti = "Cerca aggiornamenti"; 1866 stringaTrucchi = "Trucchi"; 1867 stringaInserisciCodice = "Inserisci il codice:"; 1868 stringaTruccoAttivato = "Trucco attivato!"; 1869 stringaTruccoSbagliato = "Trucco non valido"; 1870 stringaCheCartaVuoi = "E allora che carta vuoi?"; 1871 stringaAggiornamentiSi = "Aggiornamento disponibile: "; 1872 stringaAggiornamentiNo = "Nessun aggiornamento disponibile"; 1873 stringaScarica = "E' possibile scaricare la versione più recente\ndal sito http://porkynator.altervista.org/programmi.html"; 1874 stringaNoInternet = "Errore: nessuna connessione internet"; 1875 stringaTasti2 = "1 Gioca la prima carta\n2 Gioca la seconda carta\n3 Gioca la terza carta\nF1 Visualizza questo messaggio\nF2 " + stringaNuovaPartita + "\nF3 " + stringaOpzioni + "\nF4 " + stringaPunteggio + "\nF5 " + stringaCartePassate + "\nF6 " + stringaInformazioni + "\nF7 " + stringaAggiornamenti + "\nF8 " + stringaNuovaPartitaAiTrenta + "\nF9 " + stringaTrucchi + "\nq " + stringaEsci; 1876 } 1877 else if ( lang.equals( "la" ) ) { 1878 semi[0] = "BACULI"; 1879 semi[1] = "CALICES"; 1880 semi[2] = "DENARII"; 1881 semi[3] = "GLADII"; 1882 stringaBriscola = "BRISCOLA"; 1883 stringaBottonePrendi = "CAPIS/RELINQVIS CHARTAS"; 1884 stringaPrimaGioca = "ANTE CHARTAM PONE!"; 1885 stringaUltime4 = "CHARTA POSTREMA - INTVERE BRISCOLAM!"; 1886 stringaVinto = "VICISTI!"; 1887 stringaPerso = "PERDIDISTI"; 1888 stringaPareggio = "AEQVATIO!"; 1889 stringaGiocatore = "LVSOR: "; 1890 stringaComputer = "\nCOMPVTER: "; 1891 stringaNuovaPartita = "NOVA LVSO"; 1892 stringaNuovaPartitaAiTrenta = "NOVA LVSO XXX"; 1893 stringaVuoiDavveroIniziare = "NOVAM LVSIONEM INCIPERE?"; 1894 stringaVuoiDavveroUscire = "EXIRE?"; 1895 stringaSi = "ID VOLO"; 1896 stringaNo = "NOLO"; 1897 stringaOpzioni = "OPTIONES..."; 1898 stringaEsci = "EXIRE"; 1899 stringaImpossibileConfigurare = "CONFIGVRATIONIS FILE SCRIBERE NON POTVI.\nERROREM ME CERTIOREM FACITE: sebastiano@luganega.org\n\nEXCEPTIO:\n"; 1900 stringaLingua = "LINGVA"; 1901 stringaAnnulla = "ABROGA"; 1902 stringaIt = "ITALICA"; 1903 stringaLa = "LATINA"; 1904 stringaBL = "BELLUNI"; 1905 stringaBV = "VENETIAE"; 1906 stringaEN = "ANGLICVS"; 1907 stringaModificaOpzioni = "OPTIONES NOVARE"; 1908 stringaInformazioni = "INFORMATIONES"; 1909 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"; 1910 stringaSuono = "SONVS"; 1911 stringaPunteggio = "NVMERI"; 1912 stringaCartePassate = "CHARTAS ITAS"; 1913 stringaSfondo = "COLOR"; 1914 stringaTasti = "TASTI RAPIDI"; 1915 stringaAggiornamenti = "VERSIONEM RECENTIOREM QVAERERE"; 1916 stringaTrucchi = "CODICES"; 1917 stringaInserisciCodice = "CODICEM INSCRIBE:"; 1918 stringaTruccoAttivato = "CODEX INCIPIVIT!"; 1919 stringaTruccoSbagliato = "ERROR CODICIS"; 1920 stringaCheCartaVuoi = "QUAM CHARTAM VOLIS?"; 1921 stringaNoInternet = "ERROR: INTERNETIS CONIVCTIO NON EST"; 1922 stringaAggiornamentiSi = "VERSIO RECENTIOR EST: "; 1923 stringaAggiornamentiNo = "VERSIO RECENTIOR NON EST"; 1924 stringaScarica = "VERSIONEM RECENTIOREM CEPTA ESSE POTEST:\nhttp://porkynator.altervista.org/programmi.html"; 1925 stringaTasti2 = "1 PONE CHARTAM PRIMAM\n2 PONE CHARTAM SECUNDAM\n3 PONE CHARTAM TERTIAM\nF1 HEAC INFORMATIONES\nF2 " + stringaNuovaPartita + "\nF3 " + stringaOpzioni + "\nF4 " + stringaPunteggio + "\nF5 " + stringaCartePassate + "\nF6 " + stringaInformazioni + "\nF7 " + stringaAggiornamenti + "\nF8 " + stringaNuovaPartitaAiTrenta + "\nF9 " + stringaTrucchi + "\nq " + stringaEsci; 1926 } 1927 if ( lang.equals( "bl" ) ) { 1928 semi[0] = "Bastoi"; 1929 semi[1] = "Coppe"; 1930 semi[2] = "Danari"; 1931 semi[3] = "Spade"; 1932 stringaBriscola = "Briscola"; 1933 stringaBottonePrendi = "Cio' su/lasa le carte"; 1934 stringaPrimaGioca = "Prima Duga!"; 1935 stringaUltime4 = "Ultima carta - Ocio a la briscola!"; 1936 stringaVinto = "Te ha vint!"; 1937 stringaPerso = "Te ha pers"; 1938 stringaPareggio = "Pari"; 1939 stringaGiocatore = "Dugador: "; 1940 stringaComputer = "\nComputer: "; 1941 stringaNuovaPartita = "Taca n'altra partida"; 1942 stringaNuovaPartitaAiTrenta = "Taca na partida ai 30"; 1943 stringaVuoiDavveroIniziare = "Utu sul serio scuminziar n'altra partida?"; 1944 stringaVuoiDavveroUscire = "Utu sul serio stusar su?"; 1945 stringaSi = "Si"; 1946 stringaNo = "No"; 1947 stringaOpzioni = "Opzioni..."; 1948 stringaEsci = "Stusa su"; 1949 stringaImpossibileConfigurare = "No ghe ho riva' a scrivere al file de configurazion.\nMandeme na mail a: sebastiano@luganega.org\n\nEcezion:\n"; 1950 stringaLingua = "Lengua"; 1951 stringaAnnulla = "Annulla"; 1952 stringaIt = "Italian"; 1953 stringaLa = "Latin"; 1954 stringaBL = "Dialeto de Belun"; 1955 stringaBV = "Dialeto de la basa"; 1956 stringaEN = "Inglese"; 1957 stringaModificaOpzioni = "Modifica Opzioni"; 1958 stringaInformazioni = "Informazioni"; 1959 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"; 1960 stringaSuono = "Efeti sonori"; 1961 stringaPunteggio = "Varda i punti"; 1962 stringaCartePassate = "Carte pasade"; 1963 stringaSfondo = "Sfondo"; 1964 stringaTasti = "Tasti rapidi"; 1965 stringaAggiornamenti = "Varda se ghe ne' na version pi nova"; 1966 stringaTrucchi = "Truchi"; 1967 stringaInserisciCodice = "Scrivi al codice:"; 1968 stringaTruccoAttivato = "Truco ativa'!"; 1969 stringaTruccoSbagliato = "Truco sbaia'"; 1970 stringaCheCartaVuoi = "Che carta utu alora?"; 1971 stringaAggiornamentiSi = "Ghe ne' na version pi nova: "; 1972 stringaAggiornamentiNo = "No ghe ne na version pi nova"; 1973 stringaScarica = "Te pol scaricar le version pi nova\ndal sito http://porkynator.altervista.org/programmi.html"; 1974 stringaNoInternet = "Erore: no te se su internet"; 1975 stringaTasti2 = "1 Duga la prima carta\n2 Duga la seconda carta\n3 Duga la terza carta\nF1 Tasti rapidi\nF2 " + stringaNuovaPartita + "\nF3 " + stringaOpzioni + "\nF4 " + stringaPunteggio + "\nF5 " + stringaCartePassate + "\nF6 " + stringaInformazioni + "\nF7 " + stringaAggiornamenti + "\nF8 " + stringaNuovaPartitaAiTrenta + "\nF9 " + stringaTrucchi + "\nq " + stringaEsci; 1976 } 1977 if ( lang.equals( "bv" ) ) { 1978 semi[0] = "Bastoni"; 1979 semi[1] = "Coppe"; 1980 semi[2] = "Danari"; 1981 semi[3] = "Spade"; 1982 stringaBriscola = "Briscola"; 1983 stringaBottonePrendi = "Ciapa su/lasa e carte"; 1984 stringaPrimaGioca = "Prima Zuga!"; 1985 stringaUltime4 = "Ultima carta - Ocio a la briscola!"; 1986 stringaVinto = "Ti ga vinto!"; 1987 stringaPerso = "Ti ga perso"; 1988 stringaPareggio = "Pari"; 1989 stringaGiocatore = "Zugador: "; 1990 stringaComputer = "\nComputer: "; 1991 stringaNuovaPartita = "N'altra Partida"; 1992 stringaNuovaPartitaAiTrenta = "Na Partida ai 30"; 1993 stringaVuoiDavveroIniziare = "Ti vol sul serio scuminziar n'altra partida?"; 1994 stringaVuoiDavveroUscire = "Ti vol sul serio stusar su?"; 1995 stringaSi = "Si"; 1996 stringaNo = "No"; 1997 stringaOpzioni = "Opzioni..."; 1998 stringaEsci = "Stusa su"; 1999 stringaImpossibileConfigurare = "No ghe son riusito a scrivere al file de configurazione.\nMandeme na mail a: sebastiano@luganega.org\n\nEcezion:\n"; 2000 stringaLingua = "Lengua"; 2001 stringaAnnulla = "Annulla"; 2002 stringaIt = "Italian"; 2003 stringaLa = "Latin"; 2004 stringaBL = "Dialeto Belumat"; 2005 stringaBV = "Dialeto Veneto"; 2006 stringaEN = "Inglese"; 2007 stringaModificaOpzioni = "Modifica Opzioni"; 2008 stringaInformazioni = "Informasioni"; 2009 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"; 2010 stringaSuono = "Efeti sonori"; 2011 stringaPunteggio = "Varda i punti"; 2012 stringaCartePassate = "Carte pasade"; 2013 stringaSfondo = "Sfondo"; 2014 stringaTasti = "Tasti rapidi"; 2015 stringaAggiornamenti = "Varda se ghe xe na versione pi nova"; 2016 stringaTrucchi = "Truchi"; 2017 stringaInserisciCodice = "Scrivi al codice:"; 2018 stringaTruccoAttivato = "Truco ativa'!"; 2019 stringaTruccoSbagliato = "Truco sbaia'"; 2020 stringaCheCartaVuoi = "Che carta utu alora?"; 2021 stringaAggiornamentiSi = "Ghe xe na versione pi nova: "; 2022 stringaAggiornamentiNo = "No ghe xe na versione pi nova"; 2023 stringaScarica = "Te pol scaricar le versione pi nova\ndal sito http://porkynator.altervista.org/programmi.html"; 2024 stringaNoInternet = "Erore: no ti xe su internet"; 2025 stringaTasti2 = "1 Zuga la prima carta\n2 Zuga la seconda carta\n3 Zuga la terza carta\nF1 Tasti rapidi\nF2 " + stringaNuovaPartita + "\nF3 " + stringaOpzioni + "\nF4 " + stringaPunteggio + "\nF5 " + stringaCartePassate + "\nF6 " + stringaInformazioni + "\nF7 " + stringaAggiornamenti + "\nF8 " + stringaNuovaPartitaAiTrenta + "\nF9 " + stringaTrucchi + "\nq " + stringaEsci; 2026 } 2027 if ( lang.equals( "en" ) ) { 2028 semi[0] = "Sticks"; 2029 semi[1] = "Cups"; 2030 semi[2] = "Golds"; 2031 semi[3] = "Swords"; 2032 stringaBriscola = "Briscola"; 2033 stringaBottonePrendi = "Take/leave cards"; 2034 stringaPrimaGioca = "Play your card before!"; 2035 stringaUltime4 = "Last card - keep your eye on the briscola!"; 2036 stringaVinto = "You won!"; 2037 stringaPerso = "You lost"; 2038 stringaPareggio = "Sixty - sixty!"; 2039 stringaGiocatore = "Palyer: "; 2040 stringaComputer = "\nComputer: "; 2041 stringaNuovaPartita = "New Game"; 2042 stringaNuovaPartitaAiTrenta = "New Game - 30 Points"; 2043 stringaVuoiDavveroIniziare = "Do you really want to start a new game?"; 2044 stringaVuoiDavveroUscire = "Do you really want to exit?"; 2045 stringaSi = "Yes"; 2046 stringaNo = "No"; 2047 stringaOpzioni = "Options..."; 2048 stringaEsci = "Exit"; 2049 stringaImpossibileConfigurare = "Couldn't write to the configuration file.\nPlease report the bug to: sebastiano@luganega.org\n\nException:\n"; 2050 stringaLingua = "Lang"; 2051 stringaAnnulla = "Cancel"; 2052 stringaIt = "Italian"; 2053 stringaLa = "Latin"; 2054 stringaBL = "Belluno dialect"; 2055 stringaBV = "Venice dialect"; 2056 stringaEN = "English"; 2057 stringaModificaOpzioni = "Change options"; 2058 stringaInformazioni = "Information"; 2059 stringaInformazioni2 = "JBriscola is a briscola pc game written in java, meant\nand made by Sebastiano Tronto. The game is protected by the GNU/General public licence version 2 or later.\n\nJBriscola version" + version + "\nCopyright 2009 Sebastiano Tronto, license GNU/Gpl 2.0 or later\nE-mail: sebastiano@luganega.org"; 2060 stringaSuono = "Sound"; 2061 stringaPunteggio = "Score"; 2062 stringaCartePassate = "Played cards"; 2063 stringaSfondo = "Background"; 2064 stringaTasti = "Hot keys"; 2065 stringaAggiornamenti = "Check updates"; 2066 stringaTrucchi = "Cheats"; 2067 stringaInserisciCodice = "Insert cheat:"; 2068 stringaTruccoAttivato = "Cheat actived!"; 2069 stringaTruccoSbagliato = "Wrong cheat"; 2070 stringaCheCartaVuoi = "So what card do you want?"; 2071 stringaAggiornamentiSi = "Update available: "; 2072 stringaAggiornamentiNo = "No updates available"; 2073 stringaScarica = "You can get the latest version from the site\nhttp://porkynator.altervista.org/programmi.html"; 2074 stringaNoInternet = "Error: no internet connection"; 2075 stringaTasti2 = "1 Play the first card\n2 Play the second card\n3 Play the third card\nF1 Get this message\nF2 " + stringaNuovaPartita + "\nF3 " + stringaOpzioni + "\nF4 " + stringaPunteggio + "\nF5 " + stringaCartePassate + "\nF6 " + stringaInformazioni + "\nF7 " + stringaAggiornamenti + "\nF8 " + stringaNuovaPartitaAiTrenta + "\nF9 " + stringaTrucchi + "\nq " + stringaEsci; 2076 } 2077 sound = ( soundString.equals( "suono=si" ) ); 2078 keys = ( keysString.equals( "tasti=si" ) ); 2079 color = new Color( r, g, b ); 2080 if ( frame != null ) { 2081 frame.pannello.repaint(); 2082 frame.pannello2.repaint(); 2083 frame.repaint(); 2084 } 2085 } 2086 }