ancient-projects

My earliest programs (2006-2010)
git clone https://git.tronto.net/ancient-projects
Log | Files | Refs | README

Main.java (12773B)


      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 javax.swing.*;
     23 
     24 public class Main {
     25 	public static int semeBriscola, punteggio, punteggioCPU, mano, cartaDaPescare, cartaDaGiocare;	
     26 	public static boolean toccaAllaCPU = false;
     27 	public static boolean CPUHaGiocato = false;
     28 	public static boolean haGiocatoPrima = true;
     29 	public static Frame frame;
     30 	public static void main( String args[] ) {
     31 		frame = new Frame();
     32 		frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
     33 		frame.setVisible( true );
     34 		frame.setResizable( false );
     35 		frame.setSize( 600, 600 );
     36 	}
     37 	public void mischia() {
     38 		mano = 0;
     39 		punteggio = 0;
     40 		punteggioCPU = 0;
     41 		cartaDaPescare = 6;
     42 		ImageIcon aux;
     43 		frame.mazzo = true;
     44 		toccaAllaCPU = false;
     45 		CPUHaGiocato = false;
     46 		haGiocatoPrima = true;
     47 		for ( int i = 0, k = 0; i < 10; i++ )
     48 			for ( int j = 0; j < 4; j++, k++ )
     49 				frame.arrayCarteMescolate[k] = frame.arrayCarte[i][j];
     50 		for ( int i = 0; i < 391; i++ ) {
     51 			double a = Math.random() * 40;
     52 			int x = (int) a;
     53 			double b = Math.random() * 40;
     54 			int y = (int) b;
     55 			aux = frame.arrayCarteMescolate[x];
     56 			frame.arrayCarteMescolate[x] = frame.arrayCarteMescolate[y];
     57 			frame.arrayCarteMescolate[y] = aux;
     58 		}
     59 		char auxChar[] = frame.arrayCarteMescolate[39].toString().toCharArray();
     60 		semeBriscola = auxChar[auxChar.length-5] - 49;
     61 		frame.carteInMano[0] = frame.arrayCarteMescolate[0];
     62 		frame.carteInMano[1] = frame.arrayCarteMescolate[1];
     63 		frame.carteInMano[2] = frame.arrayCarteMescolate[2];
     64 		frame.carteCPU[0] = frame.arrayCarteMescolate[3];
     65 		frame.carteCPU[1] = frame.arrayCarteMescolate[4];
     66 		frame.carteCPU[2] = frame.arrayCarteMescolate[5];
     67 		frame.ultimaCarta = frame.arrayCarteMescolate[39];
     68 		frame.giocata[0] = null;
     69 		frame.giocata[1] = null;
     70 	}
     71 	public void giocaCPU() {
     72 		if ( frame.giocata[0] == null ) {
     73 			if ( vaiLiscio() );
     74 			else if ( vaiPunti() );
     75 			else if ( vaiBriscola() );
     76 			else if ( vaiCarico() );
     77 			else;
     78 		}
     79 		else {
     80 			if ( haLisciato() || haMessoPunti() ) {
     81 				if ( vaiSopra() );
     82 				else if ( vaiLiscio() );
     83 				else if ( vaiPunti() );
     84 				else if ( vaiBriscola() );
     85 				else if ( vaiCarico() );
     86 				else System.out.println("Ha lisciato e non so cosa fare");
     87 			} else if ( haMessoBriscola() ) {
     88 				if ( vaiLiscio() );
     89 				else if ( vaiPunti() );
     90 				else if ( vaiBriscola() );
     91 				else if ( vaiCarico() );
     92 				else System.out.println("Ha messo una briscola e non so cosa fare");
     93 			} else if ( haCaricato() ) {
     94 				if ( vaiSopra() );
     95 				else if ( vaiBriscola() );
     96 				else if ( vaiLiscio() );
     97 				else if ( vaiPunti() );
     98 				else if ( vaiCarico() );
     99 				else System.out.println("Ha caricato e non so cosa fare");
    100 			} else System.out.println("Non so cosa ha fatto");
    101 		}
    102 		frame.giocata[1] = frame.carteCPU[cartaDaGiocare];
    103 		frame.carteCPU[cartaDaGiocare] = null;
    104 		frame.pannello.repaint();
    105 		CPUHaGiocato = true;
    106 		if ( frame.giocata[0] == null )
    107 			toccaAllaCPU = false;
    108 	}
    109 	public void chiPrende() {
    110 		char aux[], auxCPU[];
    111 		aux = frame.giocata[0].toString().toCharArray();
    112 		auxCPU = frame.giocata[1].toString().toCharArray();
    113 		giocatorePrende(   ( (aux[aux.length-5] - 49 == semeBriscola) && (auxCPU[auxCPU.length-5] - 49 != semeBriscola) )
    114 			|| ( (aux[aux.length-5] == auxCPU[auxCPU.length-5]) && laPrimaEPiuAlta( aux[aux.length-7] - 48, auxCPU[auxCPU.length-7] - 48 ) )
    115 			|| ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) && (aux[aux.length-5] != auxCPU[auxCPU.length-5]) && haGiocatoPrima ) );
    116 	}
    117 	public boolean laPrimaEPiuAlta( int prima, int seconda ) {
    118 		int a, b;
    119 		switch ( prima ) {
    120 			case 0:
    121 				a = 10;
    122 				break;
    123 			case 1:
    124 				a = 12;
    125 				break;
    126 			case 3:
    127 				a = 11;
    128 				break;
    129 			default:
    130 				a = prima;
    131 				break;
    132 		}
    133 		switch ( seconda ) {
    134 			case 0:
    135 				b = 10;
    136 				break;
    137 			case 1:
    138 				b = 12;
    139 				break;
    140 			case 3:
    141 				b = 11;
    142 				break;
    143 			default:
    144 				b = seconda;
    145 				break;
    146 		}
    147 		return a > b;
    148 	}
    149 	public void giocatorePrende( boolean giocatore ) {
    150 		if ( giocatore ) {
    151 			toccaAllaCPU = CPUHaGiocato = false;
    152 			haGiocatoPrima = true;
    153 		}
    154 		else {
    155 			toccaAllaCPU = true;
    156 			CPUHaGiocato = haGiocatoPrima = false;
    157 		}
    158 		daiPunti( giocatore );
    159 		if ( toccaAllaCPU )
    160 			giocaCPU();
    161 	}
    162 	public void daiPunti( boolean giocatore ) {
    163 		char aux[], auxCPU[];
    164 		aux = frame.giocata[0].toString().toCharArray();
    165 		auxCPU = frame.giocata[1].toString().toCharArray();
    166 		int punti = 0;
    167 		switch( aux[aux.length-7] - 48 ) {
    168 			case 0:
    169 				punti += 4;
    170 				break;
    171 			case 1:
    172 				punti += 11;
    173 				break;
    174 			case 3:
    175 				punti += 10;
    176 				break;
    177 			case 8:
    178 				punti += 2;
    179 				break;
    180 			case 9:
    181 				punti += 3;
    182 				break;
    183 			default:
    184 				break;
    185 		}
    186 		switch( auxCPU[auxCPU.length-7] - 48 ) {
    187 			case 0:
    188 				punti += 4;
    189 				break;
    190 			case 1:
    191 				punti += 11;
    192 				break;
    193 			case 3:
    194 				punti += 10;
    195 				break;
    196 			case 8:
    197 				punti += 2;
    198 				break;
    199 			case 9:
    200 				punti += 3;
    201 				break;
    202 			default:
    203 				break;
    204 		}
    205 		frame.giocata[0] = frame.giocata[1] = null;
    206 		if ( giocatore ) {
    207 			punteggio += punti;
    208 			if ( mano < 18 ) {
    209 				if ( frame.carteInMano[0] == null )
    210 					frame.carteInMano[0] = frame.arrayCarteMescolate[cartaDaPescare];
    211 				if ( frame.carteInMano[1] == null )
    212 					frame.carteInMano[1] = frame.arrayCarteMescolate[cartaDaPescare];
    213 				if ( frame.carteInMano[2] == null )
    214 					frame.carteInMano[2] = frame.arrayCarteMescolate[cartaDaPescare];
    215 				cartaDaPescare++;
    216 				if ( frame.carteCPU[0] == null )
    217 					frame.carteCPU[0] = frame.arrayCarteMescolate[cartaDaPescare];
    218 				if ( frame.carteCPU[1] == null )
    219 					frame.carteCPU[1] = frame.arrayCarteMescolate[cartaDaPescare];
    220 				if ( frame.carteCPU[2] == null )
    221 					frame.carteCPU[2] = frame.arrayCarteMescolate[cartaDaPescare];
    222 				cartaDaPescare++;
    223 			}
    224 		}
    225 		else {
    226 			punteggioCPU += punti;
    227 			if ( mano < 18 ) {
    228 				if ( frame.carteCPU[0] == null )
    229 					frame.carteCPU[0] = frame.arrayCarteMescolate[cartaDaPescare];
    230 				if ( frame.carteCPU[1] == null )
    231 					frame.carteCPU[1] = frame.arrayCarteMescolate[cartaDaPescare];
    232 				if ( frame.carteCPU[2] == null )
    233 					frame.carteCPU[2] = frame.arrayCarteMescolate[cartaDaPescare];
    234 				cartaDaPescare++;
    235 				if ( frame.carteInMano[0] == null )
    236 					frame.carteInMano[0] = frame.arrayCarteMescolate[cartaDaPescare];
    237 				if ( frame.carteInMano[1] == null )
    238 					frame.carteInMano[1] = frame.arrayCarteMescolate[cartaDaPescare];
    239 				if ( frame.carteInMano[2] == null )
    240 					frame.carteInMano[2] = frame.arrayCarteMescolate[cartaDaPescare];
    241 				cartaDaPescare++;
    242 			}
    243 		}
    244 		frame.pannello.repaint();
    245 		frame.repaint();
    246 	}
    247 	public boolean haLisciato() {
    248 		char auxCPU[];
    249 		auxCPU = frame.giocata[0].toString().toCharArray();
    250 		return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 != semeBriscola) &&
    251 				 (auxCPU[auxCPU.length-7] - 48 != 0 ) && (auxCPU[auxCPU.length-7] - 48 != 1 ) &&
    252 				 (auxCPU[auxCPU.length-7] - 48 != 3 ) && (auxCPU[auxCPU.length-7] - 48 < 8 ) );
    253 	}
    254 	public boolean haMessoPunti() {
    255 		char auxCPU[];
    256 		auxCPU = frame.giocata[0].toString().toCharArray();
    257 		return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 != semeBriscola) &&
    258 				 ( (auxCPU[auxCPU.length-7] - 48 == 0 ) || (auxCPU[auxCPU.length-7] - 48 == 8 ) ||
    259 				 (auxCPU[auxCPU.length-7] - 48 == 9 ) ) );
    260 	}		
    261 	public boolean haMessoBriscola() {
    262 		char auxCPU[];
    263 		auxCPU = frame.giocata[0].toString().toCharArray();
    264 		return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 == semeBriscola) );
    265 	}		
    266 	public boolean haCaricato() {
    267 		char auxCPU[];
    268 		auxCPU = frame.giocata[0].toString().toCharArray();
    269 		return ( (frame.giocata[0] != null) && (auxCPU[auxCPU.length-5] - 49 != semeBriscola) &&
    270 				 ( (auxCPU[auxCPU.length-7] - 48 == 1 ) || (auxCPU[auxCPU.length-7] - 48 == 3 ) ) );
    271 	}		
    272 	public boolean vaiLiscio() {
    273 		char auxCPU[];
    274 		for ( int i = 0; i < 3; i++ ) {
    275 			if ( frame.carteCPU[i] != null ) {
    276 				auxCPU = frame.carteCPU[i].toString().toCharArray();
    277 				if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) &&
    278 					 (auxCPU[auxCPU.length-7] - 48 != 0 ) && (auxCPU[auxCPU.length-7] - 48 != 1 ) &&
    279 					 (auxCPU[auxCPU.length-7] - 48 != 3 ) && (auxCPU[auxCPU.length-7] - 48 < 8 ) ) {
    280 					cartaDaGiocare = i;
    281 					return true;
    282 				}
    283 			}
    284 		}
    285 		return false;
    286 	}
    287 	public boolean vaiPunti() {
    288 		char auxCPU[];
    289 		for ( int i = 0; i < 3; i++ ) {
    290 			if ( frame.carteCPU[i] != null ) {
    291 				auxCPU = frame.carteCPU[i].toString().toCharArray();
    292 				if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) &&
    293 					 ( (auxCPU[auxCPU.length-7] - 48 == 0 ) || (auxCPU[auxCPU.length-7] - 48 == 8 ) ||
    294 					 (auxCPU[auxCPU.length-7] - 48 == 9 ) ) ) {
    295 					cartaDaGiocare = i;
    296 					return true;
    297 				}
    298 			}
    299 		}
    300 		return false;
    301 	}
    302 	public boolean vaiBriscola() {
    303 		char auxCPU[];
    304 		for ( int i = 0; i < 3; i++ ) {
    305 			if ( frame.carteCPU[i] != null ) {
    306 				auxCPU = frame.carteCPU[i].toString().toCharArray();
    307 				if ( auxCPU[auxCPU.length-5] - 49 == semeBriscola ) {
    308 					cartaDaGiocare = i;
    309 					return true;
    310 				}
    311 			}
    312 		}
    313 		return false;
    314 	}
    315 	public boolean vaiCarico() {
    316 		char auxCPU[];
    317 		for ( int i = 0; i < 3; i++ ) {
    318 			if ( frame.carteCPU[i] != null ) {
    319 				auxCPU = frame.carteCPU[i].toString().toCharArray();
    320 				if ( (auxCPU[auxCPU.length-5] - 49 != semeBriscola) &&
    321 					 ( (auxCPU[auxCPU.length-7] - 48 == 1 ) || (auxCPU[auxCPU.length-7] - 48 == 3 ) ) ) {
    322 					cartaDaGiocare = i;
    323 					return true;
    324 				}
    325 			}
    326 		}
    327 		return false;
    328 	}
    329 	public boolean vaiSopra() {
    330 		if ( frame.giocata[0] == null )
    331 			return false;
    332 		int a = -1;
    333 		int b = -1;
    334 		int c = -1;
    335 		boolean laPrimaPuoAndareSopra = false;
    336 		boolean laSecondaPuoAndareSopra = false;
    337 		boolean laTerzaPuoAndareSopra = false;
    338 		char[] auxCPU1 = new char[1024];
    339 		char[] auxCPU2 = new char[1024];
    340 		char[] auxCPU3 = new char[1024];
    341 		char[] aux = frame.giocata[0].toString().toCharArray();
    342 		if ( aux[aux.length-7] - 48 == 1 )
    343 			return false;
    344 		if ( frame.carteCPU[0] != null ) {
    345 			auxCPU1 = frame.carteCPU[0].toString().toCharArray();
    346 			a = auxCPU1[auxCPU1.length-7] - 48;
    347 		}
    348 		if ( frame.carteCPU[1] != null ) {	
    349 			auxCPU2 = frame.carteCPU[1].toString().toCharArray();
    350 			b = auxCPU2[auxCPU2.length-7] - 48;
    351 		}
    352 		if ( frame.carteCPU[2] != null ) {
    353 			auxCPU3 = frame.carteCPU[2].toString().toCharArray();
    354 			c = auxCPU3[auxCPU3.length-7] - 48;
    355 		}
    356 		if ( (auxCPU1[auxCPU1.length-5] - 49 == aux[aux.length-5] - 49) && laPrimaEPiuAlta( a, aux[aux.length-7] - 48 ) )
    357 			laPrimaPuoAndareSopra = true;
    358 		if ( (auxCPU2[auxCPU2.length-5] - 49 == aux[aux.length-5] - 49) && laPrimaEPiuAlta( b, aux[aux.length-7] - 48 ) )
    359 			laSecondaPuoAndareSopra = true;
    360 		if ( (auxCPU3[auxCPU3.length-5] - 49 == aux[aux.length-5] - 49) && laPrimaEPiuAlta( c, aux[aux.length-7] - 48 ) )
    361 			laTerzaPuoAndareSopra = true;
    362 		if ( !laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra )
    363 			return false;
    364 		else if ( laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra )
    365 			cartaDaGiocare = 0;
    366 		else if ( !laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra )
    367 			cartaDaGiocare = 1;
    368 		else if ( !laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && laTerzaPuoAndareSopra )
    369 			cartaDaGiocare = 2;
    370 		else if ( laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && !laTerzaPuoAndareSopra )
    371 			if ( laPrimaEPiuAlta( a, b ) )
    372 				cartaDaGiocare = 0;
    373 			else
    374 				cartaDaGiocare = 1;
    375 		else if ( !laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && laTerzaPuoAndareSopra )
    376 			if ( laPrimaEPiuAlta( b, c ) )
    377 				cartaDaGiocare = 1;
    378 			else
    379 				cartaDaGiocare = 2;
    380 		else if ( laPrimaPuoAndareSopra && !laSecondaPuoAndareSopra && laTerzaPuoAndareSopra )
    381 			if ( laPrimaEPiuAlta( a, c ) )
    382 				cartaDaGiocare = 0;
    383 			else
    384 				cartaDaGiocare = 2;
    385 		else if ( laPrimaPuoAndareSopra && laSecondaPuoAndareSopra && laTerzaPuoAndareSopra )
    386 			if ( laPrimaEPiuAlta( a, b ) )
    387 				if ( laPrimaEPiuAlta( a, c ) )
    388 					cartaDaGiocare = 0;
    389 				else
    390 					cartaDaGiocare = 2;
    391 			else
    392 				if ( laPrimaEPiuAlta( b, c ) )
    393 					cartaDaGiocare = 1;
    394 				else
    395 					cartaDaGiocare = 2;
    396 		else cartaDaGiocare = 55;
    397 		return true;
    398 	}
    399 }