1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
|
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ScoreTennis { // extends JFrame { <<< Ce JFrame ne sert à rien ici
private JFrame set;
JButton player1 = new JButton("player1");
JButton player2 = new JButton("player2");
//JLabel set1j1 = new JLabel("---");
//JLabel set2j1 = new JLabel("---");
//JLabel set3j1 = new JLabel("---");
//JLabel set1j2 = new JLabel("---");
//JLabel set2j2 = new JLabel("---");
//JLabel set3j2 = new JLabel("---");
JLabel resultats[][]=new JLabel[2][3];
{
for (int joueur=0;joueur<2;joueur++) {
for (int set=0;set<3;set++) {
resultats[joueur][set]=new JLabel("---");
}
}
}
// Il faut tenir à jour le set en cours
private int setEnCours=0;
// Ceci peut avantageusement être remplacé par un tableau >>>
//
//private int compteur1 = 0;
//private int compteur2 = 0;
//private int compteur3 = 0;
//private int compteur4 = 0;
//private int compteur5 = 0;
//private int compteur6 = 0;
//
// <<<
private int compteurs[][]=new int[2][3];
// remarque: L'initialisation à zéro est superflue en java
public ScoreTennis() {
JPanel jpTableau = new JPanel();
jpTableau.setLayout(new BorderLayout());
JPanel label = new JPanel();
label.setLayout(new GridLayout(2,3));
/*
label.add(set1j1);
label.add(set2j1);
label.add(set3j1);
label.add(set1j2);
label.add(set2j2);
label.add(set3j2);
*/
for (JLabel resultat : resultats[0]) {label.add(resultat);}
for (JLabel resultat : resultats[1]) {label.add(resultat);}
jpTableau.add(label,BorderLayout.NORTH);
JPanel bouton = new JPanel();
bouton.setLayout(new GridLayout(1,2));
ActionListener sp=new ActionListener(){
public void actionPerformed(ActionEvent e)
{
/* >>> !!! Le score peut dépasser 6
if (compteur1 != 6) {
compteur1++;
set1j1.removeAll();
set1j1.setText(""+compteur1);
set1j1.validate();
} else if (compteur2 != 6) {
compteur2++;
set2j1.removeAll();
set2j1.setText(""+compteur2);
set2j1.validate();
} else if (compteur3 != 6) {
compteur3++;
set3j1.removeAll();
set3j1.setText(""+compteur3);
set3j1.validate();
}
<<< */
if (!finDuMatch()) { // Actif jusqu'à la fin du match...
compteurs[0][setEnCours]++;
resultats[0][setEnCours].setText(""+compteurs[0][setEnCours]);
resultats[0][setEnCours].validate();
if (leJoueurGagneLeSet(0,1)) setEnCours++;
}
}
};
player1.addActionListener(sp);
bouton.add(player1);
ActionListener sp2=new ActionListener(){
public void actionPerformed(ActionEvent e)
{
/* >>> !!! Le score peut dépasser 6
if (compteur4 != 6) {
compteur4++;
set1j2.removeAll();
set1j2.setText(""+compteur4);
set1j2.validate();
} else if (compteur5 != 6) {
compteur5++;
set2j2.removeAll();
set2j2.setText(""+compteur5);
set2j2.validate();
} else if (compteur6 != 6) {
compteur6++;
set3j2.removeAll();
set3j2.setText(""+compteur6);
set3j2.validate();
}
<<< */
if (!finDuMatch()) { // Actif jusqu'à la fin du match...
compteurs[1][setEnCours]++;
resultats[1][setEnCours].setText(""+compteurs[1][setEnCours]);
resultats[1][setEnCours].validate();
if (leJoueurGagneLeSet(1,0)) setEnCours++;
}
}
};
player2.addActionListener(sp2);
bouton.add(player2);
jpTableau.add(bouton,BorderLayout.SOUTH);
set = new JFrame("set");
set.setContentPane(jpTableau);
set.pack();
set.setResizable(true);
set.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
set.setVisible(true);
}
/**
* Détermine si le joeur qui viens de marquer le point gagne ce set
*
* @param joueur : index du joueur qui viens de marquer
* @param adversaire : index de son adversaire
* @return true = Le joueur qui viens de marquer ce point gagne le set
*/
boolean leJoueurGagneLeSet(int joueur, int adversaire) {
// Set jamais gagné avant le 6e point acquis
if (compteurs[joueur][setEnCours] < 6) return false;
int ecart=(compteurs[joueur][setEnCours]-compteurs[adversaire][setEnCours]);
// Le 6e point est acquis...
if (compteurs[joueur][setEnCours]==6)
return (ecart>=2); // C'est gagné avec 2 point d'écart
else
return (ecart>=1); // Au delà...c'est gagné avec un point d'écart
}
/**
* @return true = le match est fini
*/
boolean finDuMatch() {
// Règle de fin de match à revoir... http://fr.wikipedia.org/wiki/Tennis
// En principe il peut y avoir plus que trois jeux
// Le match se déroule au maximum jusque
return (setEnCours == 3);
}
} |