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

Generated with cgit - Back to sebastiano.tronto.net