//Created by mathieu albanese
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class SetteMezzo extends JPanel implements Runnable {
// Variabili
private JLabel giocatore, computer;
private JPanel panel1, panel2, panel3;
private JPanel[] emptyPanels1, emptyPanels2, emptyPanels3;
private Carta[] carte;
private int carta, counterGiocatore, counterComputer;
private Thread thread;
private boolean active;
// Costruttore
public SetteMezzo() {
thread = new Thread(this);
thread.start();
thread.suspend();
panel1 = new JPanel(new GridLayout(1, 11, 1, 1));
panel1.setBackground(new Color(0, 128, 0));
panel2 = new JPanel(new GridLayout(1, 11, 1, 1));
panel2.setBackground(new Color(0, 128, 0));
panel3 = new JPanel(new GridLayout(1, 11, 1, 1));
panel3.setBackground(new Color(0, 128, 0));
carte = new Carta[41];
for (int i = 0; i < 41; i++)
carte[i] = new Carta(i);
emptyPanels1 = new JPanel[10];
for (int i = 0; i < 10; i++) {
emptyPanels1[i] = new JPanel();
emptyPanels1[i].setBackground(new Color(0, 128, 0));
}
emptyPanels2 = new JPanel[10];
for (int i = 0; i < 10; i++) {
emptyPanels2[i] = new JPanel();
emptyPanels2[i].setBackground(new Color(0, 128, 0));
}
emptyPanels3 = new JPanel[10];
for (int i = 0; i < 10; i++) {
emptyPanels3[i] = new JPanel();
emptyPanels3[i].setBackground(new Color(0, 128, 0));
}
setBackground(new Color(0, 128, 0));
setPreferredSize(new Dimension(1020, 600));
setBorder(BorderFactory.createLoweredBevelBorder());
setLayout(new GridLayout(3, 1, 1, 1));
// Components
giocatore = new JLabel("");
giocatore.setFont(new Font("Verdana", 1, 13));
giocatore.setHorizontalAlignment(JLabel.CENTER);
giocatore.setForeground(Color.white);
computer = new JLabel("");
computer.setFont(new Font("Verdana", 1, 13));
computer.setHorizontalAlignment(JLabel.CENTER);
computer.setForeground(Color.white);
panel1.add(giocatore, 0);
for (int i = 1; i < 11; i++) {
panel1.add(emptyPanels1[i - 1], i);
}
panel2.add(carte[0], 0);
for (int i = 1; i < 11; i++) {
panel2.add(emptyPanels2[i - 1], i);
}
panel3.add(computer, 0);
for (int i = 1; i < 11; i++) {
panel3.add(emptyPanels3[i - 1], i);
}
add(panel1);
add(panel2);
add(panel3);
}
public void startGame() {
generaCarta();
counterGiocatore++;
giocatore.setText("Giocatore");
panel1.remove(counterGiocatore);
panel1.add(carte[carta], counterGiocatore);
updateScoreGiocatore();
}
public void updateScoreGiocatore() {
SetteMezzoMain.punteggioG.setForeground(Color.red);
double score = Double.valueOf(SetteMezzoMain.punteggioG.getText())
.doubleValue();
if (carta == 30) {
score = 7.5;
SetteMezzoMain.punteggioG.setText("" + score);
verifyValue(score);
return;
} else if (carta < 8)
score = score + carta;
else if (carta == 8 || carta == 9 || carta == 10)
score = score + 0.5;
else {
StringBuffer s = new StringBuffer("" + carta);
String lastNString = new String("" + s.charAt(1));
int lastN = Integer.valueOf(lastNString).intValue();
if (lastN > 0 && lastN < 8)
score = score + lastN;
else
score = score + 0.5;
}
SetteMezzoMain.punteggioG.setText("" + score);
verifyValue(score);
}
public void updateScoreComputer() {
double score = Double.valueOf(SetteMezzoMain.punteggioC.getText())
.doubleValue();
if (carta == 30) {
score = 7.5;
SetteMezzoMain.punteggioC.setText("" + score);
verifyValueComputer(score);
return;
} else if (carta < 8)
score = score + carta;
else if (carta == 8 || carta == 9 || carta == 10)
score = score + 0.5;
else {
StringBuffer s = new StringBuffer("" + carta);
String lastNString = new String("" + s.charAt(1));
int lastN = Integer.valueOf(lastNString).intValue();
if (lastN > 0 && lastN < 8)
score = score + lastN;
else
score = score + 0.5;
}
SetteMezzoMain.punteggioC.setText("" + score);
verifyValueComputer(score);
}
public void verifyValueComputer(double score) {
if (score > 7.5) {
active = false;
SetteMezzoMain.ris.setText("Il computer ha sballato - Hai vinto!");
SetteMezzoMain.btnGiu.setEnabled(false);
SetteMezzoMain.btnSto.setEnabled(false);
SetteMezzoMain.btnNew.setEnabled(true);
int puntata = Integer.valueOf(SetteMezzoMain.puntata1.getText())
.intValue();
int cassa = Integer.valueOf(SetteMezzoMain.cassa1.getText())
.intValue();
SetteMezzoMain.cassa1.setText("" + (cassa + puntata * 2));
SetteMezzoMain.puntata1.setText("0");
SetteMezzoMain.giu.setText("");
thread.suspend();
} else if (score > 4.5) {
active = false;
SetteMezzoMain.giu.setText("Sto!");
double scoreGiocatore = Double.valueOf(
SetteMezzoMain.punteggioG.getText()).doubleValue();
if (score < scoreGiocatore) {
SetteMezzoMain.ris.setText("Hai vinto!");
SetteMezzoMain.btnGiu.setEnabled(false);
SetteMezzoMain.btnSto.setEnabled(false);
SetteMezzoMain.btnNew.setEnabled(true);
int puntata = Integer
.valueOf(SetteMezzoMain.puntata1.getText()).intValue();
int cassa = Integer.valueOf(SetteMezzoMain.cassa1.getText())
.intValue();
SetteMezzoMain.cassa1.setText("" + (cassa + puntata * 2));
SetteMezzoMain.puntata1.setText("0");
} else {
SetteMezzoMain.ris.setText("Hai perso");
SetteMezzoMain.btnGiu.setEnabled(false);
SetteMezzoMain.btnSto.setEnabled(false);
SetteMezzoMain.btnNew.setEnabled(true);
SetteMezzoMain.puntata1.setText("0");
}
thread.suspend();
}
}
public void verifyValue(double score) {
if (score > 7.5) {
SetteMezzoMain.ris.setText("Sballato!");
SetteMezzoMain.btnGiu.setEnabled(false);
SetteMezzoMain.btnSto.setEnabled(false);
SetteMezzoMain.btnNew.setEnabled(true);
SetteMezzoMain.puntata1.setText("0");
active = false;
thread.suspend();
}
}
public void generaCarta() {
carta = (int) ((Math.random() * 40) + 1);
if (!carte[carta].state)
carte[carta].state = true;
else
generaCarta();
}
public void giu() {
if (counterGiocatore < 10) {
generaCarta();
counterGiocatore++;
panel1.remove(counterGiocatore);
panel1.add(carte[carta], counterGiocatore);
updateScoreGiocatore();
}
}
public void sto() {
computer.setText("Computer");
generaCarta();
counterComputer++;
panel3.remove(counterComputer);
panel3.add(carte[carta], counterComputer);
updateScoreComputer();
thread.resume();
active = true;
}
public void reset() {
counterGiocatore = 0;
counterComputer = 0;
carta = 0;
giocatore.setText("");
computer.setText("");
remove(panel1);
remove(panel2);
remove(panel3);
panel1 = new JPanel(new GridLayout(1, 11, 1, 1));
panel1.setBackground(new Color(0, 128, 0));
panel2 = new JPanel(new GridLayout(1, 11, 1, 1));
panel2.setBackground(new Color(0, 128, 0));
panel3 = new JPanel(new GridLayout(1, 11, 1, 1));
panel3.setBackground(new Color(0, 128, 0));
panel1.add(giocatore, 0);
for (int i = 1; i < 11; i++) {
panel1.add(emptyPanels1[i - 1], i);
}
panel2.add(carte[0], 0);
for (int i = 1; i < 11; i++) {
panel2.add(emptyPanels2[i - 1], i);
}
panel3.add(computer, 0);
for (int i = 1; i < 11; i++) {
panel3.add(emptyPanels3[i - 1], i);
}
add(panel1);
add(panel2);
add(panel3);
carte = new Carta[41];
for (int i = 0; i < 41; i++)
carte[i] = new Carta(i);
updateUI();
}
public void run() {
while (true) {
if (active) {
try {
thread.sleep(200);
} catch (Exception e) {
}
if (counterComputer < 10) {
generaCarta();
counterComputer++;
panel3.remove(counterComputer);
panel3.add(carte[carta], counterComputer);
updateScoreComputer();
}
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("SetteMezzo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new SetteMezzo());
frame.pack();
frame.setVisible(true);
}
}