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