diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..fc13218 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..5b21cf5 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + hexagone + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3a21537 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/bin/bd/DB.class b/bin/bd/DB.class new file mode 100644 index 0000000..ba9ccd6 Binary files /dev/null and b/bin/bd/DB.class differ diff --git a/bin/hexagone/Accueil$1.class b/bin/hexagone/Accueil$1.class new file mode 100644 index 0000000..2d86fbe Binary files /dev/null and b/bin/hexagone/Accueil$1.class differ diff --git a/bin/hexagone/Accueil$10.class b/bin/hexagone/Accueil$10.class new file mode 100644 index 0000000..1ef3e92 Binary files /dev/null and b/bin/hexagone/Accueil$10.class differ diff --git a/bin/hexagone/Accueil$2.class b/bin/hexagone/Accueil$2.class new file mode 100644 index 0000000..0768311 Binary files /dev/null and b/bin/hexagone/Accueil$2.class differ diff --git a/bin/hexagone/Accueil$3.class b/bin/hexagone/Accueil$3.class new file mode 100644 index 0000000..2985e56 Binary files /dev/null and b/bin/hexagone/Accueil$3.class differ diff --git a/bin/hexagone/Accueil$4.class b/bin/hexagone/Accueil$4.class new file mode 100644 index 0000000..feeac6d Binary files /dev/null and b/bin/hexagone/Accueil$4.class differ diff --git a/bin/hexagone/Accueil$5.class b/bin/hexagone/Accueil$5.class new file mode 100644 index 0000000..0b33f28 Binary files /dev/null and b/bin/hexagone/Accueil$5.class differ diff --git a/bin/hexagone/Accueil$6.class b/bin/hexagone/Accueil$6.class new file mode 100644 index 0000000..0cd0da0 Binary files /dev/null and b/bin/hexagone/Accueil$6.class differ diff --git a/bin/hexagone/Accueil$7.class b/bin/hexagone/Accueil$7.class new file mode 100644 index 0000000..19b7283 Binary files /dev/null and b/bin/hexagone/Accueil$7.class differ diff --git a/bin/hexagone/Accueil$8.class b/bin/hexagone/Accueil$8.class new file mode 100644 index 0000000..ec80074 Binary files /dev/null and b/bin/hexagone/Accueil$8.class differ diff --git a/bin/hexagone/Accueil$9.class b/bin/hexagone/Accueil$9.class new file mode 100644 index 0000000..7ed1807 Binary files /dev/null and b/bin/hexagone/Accueil$9.class differ diff --git a/bin/hexagone/Accueil.class b/bin/hexagone/Accueil.class new file mode 100644 index 0000000..efd1301 Binary files /dev/null and b/bin/hexagone/Accueil.class differ diff --git a/bin/hexagone/AlgoJeu.class b/bin/hexagone/AlgoJeu.class new file mode 100644 index 0000000..582ad0c Binary files /dev/null and b/bin/hexagone/AlgoJeu.class differ diff --git a/bin/hexagone/EtatJeu.class b/bin/hexagone/EtatJeu.class new file mode 100644 index 0000000..a764be0 Binary files /dev/null and b/bin/hexagone/EtatJeu.class differ diff --git a/bin/hexagone/Hexagone.class b/bin/hexagone/Hexagone.class new file mode 100644 index 0000000..52c9324 Binary files /dev/null and b/bin/hexagone/Hexagone.class differ diff --git a/bin/hexagone/Joueur.class b/bin/hexagone/Joueur.class new file mode 100644 index 0000000..e475d51 Binary files /dev/null and b/bin/hexagone/Joueur.class differ diff --git a/bin/hexagone/Logowithname.png b/bin/hexagone/Logowithname.png new file mode 100644 index 0000000..dc9a8f4 Binary files /dev/null and b/bin/hexagone/Logowithname.png differ diff --git a/bin/hexagone/Parametre.class b/bin/hexagone/Parametre.class new file mode 100644 index 0000000..64aa41d Binary files /dev/null and b/bin/hexagone/Parametre.class differ diff --git a/bin/hexagone/Plateau.class b/bin/hexagone/Plateau.class new file mode 100644 index 0000000..02b8f1f Binary files /dev/null and b/bin/hexagone/Plateau.class differ diff --git a/bin/hexagone/cursor.png b/bin/hexagone/cursor.png new file mode 100644 index 0000000..9d33616 Binary files /dev/null and b/bin/hexagone/cursor.png differ diff --git a/bin/hexagone/iconBleu.png b/bin/hexagone/iconBleu.png new file mode 100644 index 0000000..c938457 Binary files /dev/null and b/bin/hexagone/iconBleu.png differ diff --git a/bin/hexagone/iconNoir.png b/bin/hexagone/iconNoir.png new file mode 100644 index 0000000..f83bd4a Binary files /dev/null and b/bin/hexagone/iconNoir.png differ diff --git a/bin/hexagone/iconRouge.png b/bin/hexagone/iconRouge.png new file mode 100644 index 0000000..cb2bd62 Binary files /dev/null and b/bin/hexagone/iconRouge.png differ diff --git a/bin/hexagone/iconVert.png b/bin/hexagone/iconVert.png new file mode 100644 index 0000000..7c85063 Binary files /dev/null and b/bin/hexagone/iconVert.png differ diff --git a/bin/hexagone/logo.png b/bin/hexagone/logo.png new file mode 100644 index 0000000..7e05a34 Binary files /dev/null and b/bin/hexagone/logo.png differ diff --git a/src/bd/DB.java b/src/bd/DB.java new file mode 100644 index 0000000..4f9adac --- /dev/null +++ b/src/bd/DB.java @@ -0,0 +1,226 @@ +package bd; + +import hexagone.Joueur; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.Date; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.Time; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.Calendar; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.swing.JOptionPane; + +public class DB { + + private static Connection conn; + String url = "jdbc:mysql://localhost:3306/hexagone"; + + public DB() throws SQLException { + this.conn = DriverManager.getConnection(url, "root", ""); + } + + public void insert_Joueur(int num, String nom, int score, int perdu, + int actif, int idPartie) { + + PreparedStatement ps; + try { + ps = (PreparedStatement) conn + .prepareStatement("INSERT INTO `hexagone`.`joueur` (`id`, `num`, `nom`, `score`, `perdu`, `actif`,`idPartie`) " + + "VALUES (?, ?, ?, ?, ?, ?,?)"); + ps.setString(1, null); + ps.setInt(2, num); + ps.setString(3, nom); + ps.setInt(4, score); + ps.setInt(5, perdu); + ps.setInt(6, actif); + ps.setInt(7, idPartie); + + ps.executeUpdate(); + + } catch (SQLException ex) { + Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public ResultSet getScore() { + + Statement statement; + ResultSet resultats = null; + try { + statement = (Statement) conn.createStatement( + ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_READ_ONLY); + resultats = statement + .executeQuery("SELECT * FROM `joueur` ORDER BY `score` DESC Limit 0 , 5"); + } catch (SQLException ex) { + Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex); + } + return resultats; + + } + + public int getIdPartie() { + + int id = 0; + + Statement statement; + ResultSet resultats = null; + try { + statement = (Statement) conn.createStatement( + ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_READ_ONLY); + resultats = statement + .executeQuery("SELECT * FROM `partie` ORDER BY `datesave` DESC Limit 0 , 1"); + } catch (SQLException ex) { + Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex); + } + + try { + while (resultats.next()) { + id = resultats.getInt(1); + } + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return id; + } + + + public ResultSet getPartie() { + + int id = 0; + + Statement statement; + ResultSet resultats = null; + try { + statement = (Statement) conn.createStatement( + ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_READ_ONLY); + resultats = statement + .executeQuery("SELECT * FROM `partie` ORDER BY `datesave` DESC Limit 0 , 1"); + } catch (SQLException ex) { + Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex); + } + return resultats; + } + + + public ResultSet getJoueurs() { + + int id = 0; + + Statement statement; + ResultSet resultats = null; + try { + statement = (Statement) conn.createStatement( + ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_READ_ONLY); + resultats = statement + .executeQuery("SELECT * FROM `joueur` where `idPartie`="+this.getIdPartie() + + ""); + } catch (SQLException ex) { + Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex); + } + return resultats; + } + + public ResultSet getHexagons() { + + int id = 0; + + Statement statement; + ResultSet resultats = null; + try { + statement = (Statement) conn.createStatement( + ResultSet.TYPE_SCROLL_INSENSITIVE, + ResultSet.CONCUR_READ_ONLY); + resultats = statement + .executeQuery("SELECT * FROM `hexagon` where `idPartie`="+this.getIdPartie() + + ""); + } catch (SQLException ex) { + Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex); + } + return resultats; + } + + public void insert_Partie(int longjeu, int nbjoueur, int nbclick, + int ptclickX, int ptclickY, int iteration, int nbhexagone) { + + PreparedStatement ps; + try { + ps = (PreparedStatement) conn + .prepareStatement("INSERT INTO `partie`(`id`, `datesave`, `longjeu`, `nbjoueur`, `nbclick`, " + + "`ptclickX`, `ptclickY`, `iteration`, `nbhexagone`) " + + "VALUES (?, ?, ?, ?, ?, ?,?,?,?)"); + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar cal = Calendar.getInstance(); + + ps.setString(1, null); + ps.setString(2, dateFormat.format(cal.getTime())); + ps.setInt(3, longjeu); + ps.setInt(4, nbjoueur); + ps.setInt(5, nbclick); + ps.setInt(6, ptclickX); + ps.setInt(7, ptclickY); + ps.setInt(8, iteration); + ps.setInt(9, nbhexagone); + + ps.executeUpdate(); + + } catch (SQLException ex) { + Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex); + } + + } + + public void insert_Hexagone(int cenrtreX, int centreY, int couleur, int numjoueur, + int radius, int col, int row, int rotation, int sides, int idPartie) { + + PreparedStatement ps; + try { + ps = (PreparedStatement) conn + .prepareStatement("INSERT INTO `hexagon`(`id` ,`cenrtreX`, `centreY`,`couleur`, `numjoueur`, " + + "`radius`, `col`, `row`, `rotation`, `sides`, `idPartie`) " + + "VALUES (?, ?, ?, ?, ?, ?,?,?,?,?,?)"); + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar cal = Calendar.getInstance(); + Date date = new Date(0); + + ps.setString(1, null); + ps.setInt(2, cenrtreX); + ps.setInt(3, centreY); + ps.setInt(4, couleur); + ps.setInt(5, numjoueur); + ps.setInt(6, radius); + ps.setInt(7, col); + ps.setInt(8, row); + ps.setInt(9, rotation); + ps.setInt(10, sides); + ps.setInt(11, idPartie); + + ps.executeUpdate(); + + } catch (SQLException ex) { + Logger.getLogger(DB.class.getName()).log(Level.SEVERE, null, ex); + } + + } + + + + +} diff --git a/src/hexagone/Accueil.java b/src/hexagone/Accueil.java new file mode 100644 index 0000000..ee0fe7b --- /dev/null +++ b/src/hexagone/Accueil.java @@ -0,0 +1,1533 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package hexagone; + +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Image; +import java.awt.Point; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.MouseEvent; +import java.sql.ResultSet; +import java.sql.SQLException; + +import javax.swing.BorderFactory; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.border.Border; + +import bd.DB; + + + + + +public class Accueil extends javax.swing.JFrame { + public Joueur [] JOUEUR = new Joueur[4]; + public static Plateau p; + public static int jaune = 0xeaf111; // on utilise cette variabele lors de l'appel de saut d'une case + public static JPanel jeu; + public static AlgoJeu j; + public static int iteration = 0; + + + public static int iterationInitialisation=0; + public static int iterationPrecedente = 0; // utiliser dans le cas de 4 joueur + public static int nbHexagone = 0; + public static int nbClick = 0;// pour memoriser le nombre de click du joueur + public static Point ptClick = new Point(-1, -1);// la premiere point cliqué + // par le joueur + + public static int longJeu = 5; + public static int nbJoueur = 1; + public static boolean jeuTermine =false; + public int x = 0, y = 0; + + boolean reprendreJeuSauvgarde=false; + + Joueur j1 = new Joueur(); + Joueur j2 = new Joueur(); + Joueur j3 = new Joueur(); + Joueur j4 = new Joueur(); + + + /** + * Creates new form NewJFrame + */ + public Accueil() { + initComponents(); + this.setTitle("Hexagone"); + this.setResizable(false); + this.setLocation(new Point(200,100)); + this.setSize(new Dimension(500,370)); + } + + + @SuppressWarnings("unchecked") + // + private void initComponents() { + + + barMenu = new javax.swing.JMenuBar(); + jeuMenu = new javax.swing.JMenu(); + reprendre = new javax.swing.JMenu(); + reprendreDernierePartie= new javax.swing.JMenu(); + sauvegarder = new javax.swing.JMenu(); + quitter = new javax.swing.JMenu(); + score = new javax.swing.JMenu(); + + + scoreMenu1= new javax.swing.JMenu(); + scoreMenuItem1= new javax.swing.JMenuItem(); + scoreMenu2= new javax.swing.JMenu(); + scoreMenuItem2= new javax.swing.JMenuItem(); + scoreMenu3= new javax.swing.JMenu(); + scoreMenuItem3= new javax.swing.JMenuItem(); + scoreMenu4= new javax.swing.JMenu(); + scoreMenuItem4= new javax.swing.JMenuItem(); + scoreMenu5= new javax.swing.JMenu(); + scoreMenuItem5= new javax.swing.JMenuItem(); + + logoLabel = new javax.swing.JLabel(); + jouer = new javax.swing.JButton(); + lesJoueurs = new javax.swing.JPanel(); + psJoueur1Label = new javax.swing.JLabel(); + psJoueur3Label = new javax.swing.JLabel(); + psJoueur2Label = new javax.swing.JLabel(); + joueur1 = new javax.swing.JTextField(); + joueur2 = new javax.swing.JTextField(); + joueur3 = new javax.swing.JTextField(); + ParametreJeu = new javax.swing.JPanel(); + nbJoeurLabel = new javax.swing.JLabel(); + longJeuLabel = new javax.swing.JLabel(); + jScrollPane2 = new javax.swing.JScrollPane(); + nbjoueur = new javax.swing.JList(); + longjeu = new javax.swing.JTextField(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + logoLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource( + "Logowithname.png"))); + + jouer.setText("Saisir"); + jouer.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jouerActionPerformed(evt); + } + }); + + psJoueur1Label.setText("Psoeudo joueur1"); + + psJoueur3Label.setText("Psoeudo joueur3"); + + psJoueur2Label.setText("Psoeudo joueur2"); + + joueur1.setText(""); + + joueur2.setText(""); + + joueur3.setText(""); + + + javax.swing.GroupLayout lesJoueursLayout = new javax.swing.GroupLayout( + lesJoueurs); + lesJoueurs.setLayout(lesJoueursLayout); + lesJoueurs.setVisible(false); + lesJoueursLayout + .setHorizontalGroup(lesJoueursLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + lesJoueursLayout + .createSequentialGroup() + .addGap(19, 19, 19) + .addGroup( + lesJoueursLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING, + false) + .addComponent( + psJoueur3Label, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent( + psJoueur1Label, + javax.swing.GroupLayout.DEFAULT_SIZE, + 84, + Short.MAX_VALUE) + .addComponent( + psJoueur2Label, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE)) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.RELATED, + 40, Short.MAX_VALUE) + .addGroup( + lesJoueursLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING, + false) + .addComponent( + joueur2, + javax.swing.GroupLayout.DEFAULT_SIZE, + 140, + Short.MAX_VALUE) + .addComponent( + joueur3, + javax.swing.GroupLayout.DEFAULT_SIZE, + 140, + Short.MAX_VALUE) + .addComponent( + joueur1, + javax.swing.GroupLayout.DEFAULT_SIZE, + 140, + Short.MAX_VALUE)) + .addGap(30, 30, 30))); + lesJoueursLayout + .setVerticalGroup(lesJoueursLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + lesJoueursLayout + .createSequentialGroup() + .addGroup( + lesJoueursLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent( + psJoueur1Label, + javax.swing.GroupLayout.PREFERRED_SIZE, + 27, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent( + joueur1, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup( + lesJoueursLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent( + psJoueur2Label, + javax.swing.GroupLayout.PREFERRED_SIZE, + 27, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent( + joueur2, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup( + lesJoueursLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent( + psJoueur3Label, + javax.swing.GroupLayout.PREFERRED_SIZE, + 27, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent( + joueur3, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(14, Short.MAX_VALUE))); + + nbJoeurLabel.setText("Nombre de joueur"); + + longJeuLabel.setText("longueur de jeu"); + + nbjoueur.setModel(new javax.swing.AbstractListModel() { + String[] strings = { "Humain vs Ord", "Humain vs Humain", + "3 Humains + Ord" }; + + public int getSize() { + return strings.length; + } + + public Object getElementAt(int i) { + return strings[i]; + } + }); + jScrollPane2.setViewportView(nbjoueur); + + javax.swing.GroupLayout ParametreJeuLayout = new javax.swing.GroupLayout( + ParametreJeu); + ParametreJeu.setLayout(ParametreJeuLayout); + ParametreJeuLayout + .setHorizontalGroup(ParametreJeuLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + ParametreJeuLayout + .createSequentialGroup() + .addContainerGap( + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addGroup( + ParametreJeuLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING, + false) + .addComponent( + longJeuLabel, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent( + nbJoeurLabel, + javax.swing.GroupLayout.DEFAULT_SIZE, + 106, + Short.MAX_VALUE)) + .addGap(28, 28, 28) + .addGroup( + ParametreJeuLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addComponent( + longjeu, + javax.swing.GroupLayout.PREFERRED_SIZE, + 140, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent( + jScrollPane2, + javax.swing.GroupLayout.PREFERRED_SIZE, + 140, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(31, Short.MAX_VALUE))); + ParametreJeuLayout + .setVerticalGroup(ParametreJeuLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + ParametreJeuLayout + .createSequentialGroup() + .addContainerGap() + .addGroup( + ParametreJeuLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent( + nbJoeurLabel, + javax.swing.GroupLayout.PREFERRED_SIZE, + 33, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent( + jScrollPane2, + javax.swing.GroupLayout.PREFERRED_SIZE, + 23, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, 18) + .addGroup( + ParametreJeuLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent( + longJeuLabel, + javax.swing.GroupLayout.PREFERRED_SIZE, + 27, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent( + longjeu, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap( + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE))); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout( + getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + layout.createSequentialGroup() + .addGap(42, 42, 42) + .addGroup( + layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(logoLabel) + .addGroup( + layout.createSequentialGroup() + .addGroup( + layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent( + ParametreJeu, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent( + lesJoueurs, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 18, + 18) + .addComponent( + jouer, + javax.swing.GroupLayout.PREFERRED_SIZE, + 87, + javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(25, Short.MAX_VALUE))); + layout.setVerticalGroup(layout + .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + layout.createSequentialGroup() + .addGap(17, 17, 17) + .addComponent(logoLabel) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(ParametreJeu, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGroup( + layout.createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + layout.createSequentialGroup() + .addComponent( + lesJoueurs, + javax.swing.GroupLayout.PREFERRED_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap( + 44, + Short.MAX_VALUE)) + .addGroup( + javax.swing.GroupLayout.Alignment.TRAILING, + layout.createSequentialGroup() + .addComponent( + jouer, + javax.swing.GroupLayout.PREFERRED_SIZE, + 33, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(87, 87, + 87))))); + + + + + + //menu barr*********************************** + + + + + + + + jeuMenu.setText("Jeu"); + + reprendre.setText("reprendre"); + reprendre.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + reprendreMouseClicked(evt); + } + }); + + + jeuMenu.add(reprendreDernierePartie); + + + + + reprendreDernierePartie.setText("reprendre Derniere Partie"); + reprendreDernierePartie.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + try { + reprendreDernierePartieMouseClicked(evt); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }); + + + jeuMenu.add(reprendre); + + sauvegarder.setText("Sauvegader Score"); + sauvegarder.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + try { + sauvegarderMouseClicked(evt); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }); + jeuMenu.add(sauvegarder); + + quitter.setText("Quitter"); + quitter.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + quitterMouseClicked(evt); + } + }); + jeuMenu.add(quitter); + + barMenu.add(jeuMenu); + + score.setText("Meilleur Score"); + score.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + try { + scoreMouseClicked(evt); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }); + + + + + barMenu.add(score); + + + + + + + + + pack(); + }// + + + + + // les evennement + + + private void reprendreMouseClicked(java.awt.event.MouseEvent evt) { + iteration =1; + + + if (p.countComponents() > 0) + p.remove(0); + + jeu.remove(p); + validate(); + repaint(); + + p.add(j); + jeu.add(p); + + revalidate(); + + } + + + + private void reprendreDernierePartieMouseClicked(java.awt.event.MouseEvent evt) throws SQLException { + + reprendreJeuSauvgarde=true; + + if (iteration >1){ + + DB db = new DB(); + ResultSet resultatJoueurs = db.getJoueurs(); + ResultSet resultatHexagones = db.getHexagons(); + ResultSet resultatPartie = db.getPartie(); + + + while (resultatPartie.next()) { + + + + // extraire les joueurs + + longJeu=resultatPartie.getInt(3); + nbJoueur=resultatPartie.getInt(4); + this.nbClick=resultatPartie.getInt(5); + iteration=resultatPartie.getInt(8); + nbHexagone=resultatPartie.getInt(9); + + + + //remplissage des joueurs + + + + + int ietration =1; + while(resultatJoueurs.next()){ + if(nbJoueur==1){ + + if(iteration==1){ + + + j1.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j1.setBackground(new java.awt.Color(255, 255, 255)); + j1.setNum(resultatJoueurs.getInt(2)); + j1.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j1.setScore(resultatJoueurs.getInt(4)); + j1.setPsoeudo(resultatJoueurs.getString(3)); + + } + else + { + + j1.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j1.setBackground(new java.awt.Color(255, 255, 255)); + j1.setNum(resultatJoueurs.getInt(2)); + j1.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j2.setScore(resultatJoueurs.getInt(4)); + j2.setPsoeudo(resultatJoueurs.getString(3)); + } + + } + if(nbJoueur==2){ + if(iteration==1){ + + + j1.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j1.setBackground(new java.awt.Color(255, 255, 255)); + j1.setNum(resultatJoueurs.getInt(2)); + j1.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j1.setScore(resultatJoueurs.getInt(4)); + j1.setPsoeudo(resultatJoueurs.getString(3)); + } + else { + + j2.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j2.setBackground(new java.awt.Color(255, 255, 255)); + j2.setNum(resultatJoueurs.getInt(2)); + j2.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j2.setScore(resultatJoueurs.getInt(4)); + j2.setPsoeudo(resultatJoueurs.getString(3)); + } + + + } + if(nbJoueur==3){ + + if(iteration==1){ + + + j1.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j1.setBackground(new java.awt.Color(255, 255, 255)); + j1.setNum(resultatJoueurs.getInt(2)); + j1.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j1.setScore(resultatJoueurs.getInt(4)); + j1.setPsoeudo(resultatJoueurs.getString(3)); + + } + + if(iteration==2){ + + + j2.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j2.setBackground(new java.awt.Color(255, 255, 255)); + j2.setNum(resultatJoueurs.getInt(2)); + j2.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + j2.setScore(resultatJoueurs.getInt(4)); + j2.setPsoeudo(resultatJoueurs.getString(3)); + } + + if(iteration==3){ + + j3.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j3.setBackground(new java.awt.Color(255, 255, 255)); + j3.setNum(resultatJoueurs.getInt(2)); + j3.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j3.setScore(resultatJoueurs.getInt(4)); + j3.setPsoeudo(resultatJoueurs.getString(3)); + j3.setVisible(true); + } + + if(iteration==4){ + + + j4.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j4.setBackground(new java.awt.Color(255, 255, 255)); + j4.setNum(resultatJoueurs.getInt(2)); + j4.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j4.setScore(resultatJoueurs.getInt(4)); + j4.setPsoeudo(resultatJoueurs.getString(3)); + j4.setVisible(true); + + } + + + } + + ietration++; + + + } + + + // extraire les hexagone et remplire les le tableau hexTab + while(resultatHexagones.next()){ + + } + + } + + } + + } + private void sauvegarderMouseClicked(java.awt.event.MouseEvent evt) throws SQLException { + // TODO add your handling code here: + DB db = new DB(); + int idPartie =db.getIdPartie(); + + + if(nbJoueur ==1){ + db.insert_Joueur(JOUEUR[0].getNum(), JOUEUR[0].getPsoeudo(), JOUEUR[0].getScore(),JOUEUR[0].getPerd(), JOUEUR[0].getActif(), idPartie); + db.insert_Joueur(JOUEUR[3].getNum(), JOUEUR[3].getPsoeudo(), JOUEUR[3].getScore(),JOUEUR[3].getPerd(), JOUEUR[3].getActif(), idPartie); + + } + else if (nbJoueur ==2) { + + db.insert_Joueur(JOUEUR[0].getNum(), JOUEUR[0].getPsoeudo(), JOUEUR[0].getScore(),JOUEUR[1].getPerd(), JOUEUR[0].getActif(), idPartie); + db.insert_Joueur(JOUEUR[1].getNum(), JOUEUR[1].getPsoeudo(), JOUEUR[1].getScore(),JOUEUR[1].getPerd(), JOUEUR[1].getActif(), idPartie); + + + } + + else + { + for(int i =0 ; i <4 ; i++ ){ + + db.insert_Joueur(JOUEUR[i].getNum(), JOUEUR[i].getPsoeudo(), JOUEUR[i].getScore(),JOUEUR[i].getPerd(), JOUEUR[i].getActif(), idPartie); + + } + } + + db.insert_Partie( this.longJeu, this.nbJoueur , this.nbClick , (int)this.ptClick.getX() , (int)this.ptClick.getY() , this.iteration , this.nbHexagone); + + // trouver dernier partie puis enregistrer les hexagone + + + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + + if (Plateau.hextab[i][j]!=null){ + db.insert_Hexagone( Plateau.hextab[i][j].getPointCentre().x, Plateau.hextab[i][j].getPointCentre().y,Plateau.hextab[i][j].getCouleur() ,Plateau.hextab[i][j].getNumJoueur() + ,Plateau.hextab[i][j].getRadius() , j , i , Plateau.hextab[i][j].getRotation(),6,idPartie ); + + } + } + } + + + + } + + private void quitterMouseClicked(java.awt.event.MouseEvent evt) { + // TODO add your handling code here: + System.exit(0); + + } + + private void scoreMouseClicked(java.awt.event.MouseEvent evt) throws SQLException { + + + ResultSet resultats = null; + DB db = new DB(); + resultats= db.getScore(); + + int i =1; + while (resultats.next()) { + String nomRes = resultats.getString(3); + int scoreRes = resultats.getInt(4); + if(i==1){ + + + scoreMenuItem1.setText(""+scoreRes); + scoreMenu1.setText(nomRes); + scoreMenu1.add(scoreMenuItem1); + score.add(scoreMenu1); + + } + if(i==2){ + + + scoreMenuItem2.setText(""+scoreRes); + scoreMenu2.setText(nomRes); + scoreMenu2.add(scoreMenuItem1); + score.add(scoreMenu2); + } + if(i==3){ + + + scoreMenuItem3.setText(""+scoreRes); + scoreMenu3.setText(nomRes); + scoreMenu3.add(scoreMenuItem3); + score.add(scoreMenu3); + } + if(i==4){ + + + scoreMenuItem4.setText(""+scoreRes); + scoreMenu4.setText(nomRes); + scoreMenu4.add(scoreMenuItem4); + score.add(scoreMenu4); + } + if(i==5){ + + + scoreMenuItem5.setText(""+scoreRes); + scoreMenu5.setText(nomRes); + scoreMenu5.add(scoreMenuItem5); + score.add(scoreMenu5); + } + + + + + + + i++; + } + + } + + + + + + + + + + + + + + + + // changer le curseur du jeu + public void pmouseEntered(MouseEvent evt) { + + Toolkit toolkit = Toolkit.getDefaultToolkit(); + Image image = toolkit.getImage("cursor.png"); // le cursor peut etre + // personnaliser % au + // joueur actif + Cursor a = toolkit.createCustomCursor(image, new Point(this.getX(), + this.getY()), ""); + this.setCursor(a); + } + + + + + + + // fonctionne qui organise le role du joueur + + public void quiJoue1(MouseEvent evt, Joueur j1, Joueur j2) { + + + if (Accueil.nbHexagone != 0) { + +// + if(iteration>1){ + nbClick++; + if(nbClick>2)nbClick=1; + if (nbClick == 1) { + ptClick.setLocation( + (int) p.dinstanceMinimale(evt.getPoint().x, + evt.getPoint().y).getX(), + (int) p.dinstanceMinimale(evt.getPoint().x, + evt.getPoint().y).getY()); + + if((int) p.dinstanceMinimale(evt.getPoint().x,evt.getPoint().y).getX()>=0&&(int) p.dinstanceMinimale(evt.getPoint().x,evt.getPoint().y).getY()>=0) + if (p.hextab[(int) p.dinstanceMinimale(evt.getPoint().x,evt.getPoint().y).getX()] + [(int) p.dinstanceMinimale(evt.getPoint().x,evt.getPoint().y).getY()].getNumJoueur() != j1.getNum()) + { + nbClick--;//le test de la premiere click + + + } + + } + if (nbClick == 2) { + Point newPoint = new Point(p.dinstanceMinimale( + evt.getPoint().x, evt.getPoint().y)); + if ((int) newPoint.getX()>=0 && (int) newPoint.getY()>=0) + if (p.hextab[(int) newPoint.getX()][(int) newPoint.getY()] + .getNumJoueur() == 0) { +// + if (p.saut(ptClick, newPoint) == true) { + + p.hextab[(int) newPoint.getX()][(int) newPoint + .getY()].setNumJoueur(j1.getNum()); + p.hextab[(int) newPoint.getX()][(int) newPoint + .getY()].setCouleur(j1.getCouleur());; + + p.hextab[(int) ptClick.getX()][(int) ptClick.getY()] + .setNumJoueur(0); + p.hextab[(int) ptClick.getX()][(int) ptClick.getY()] + .setCouleur(jaune); + + + //j1.setScore(j1.getScore()+5); + iteration++; + iterationPrecedente=1; + + p.mangePointVoisin(newPoint,j1); + + //nbHexagone--; + + + +// if (nbHexagone != 0) { + + if (nbHexagone != 0&&p.deplaceOrdi(j2)) { + +// Point pointOrd = p.caseOrdiIter1(); +// +// p.hextab[pointOrd.x][pointOrd.y].setCouleur(j2.getCouleur()); +// j2.setScore(j2.getScore() + 5); + + nbHexagone--; + } + + j1.setScore(j1.getScore()); + j2.setScore(j2.getScore()); + + } + if (p.clonage(ptClick, newPoint) == true) { + p.hextab[(int) newPoint.getX()][(int) newPoint + .getY()].setNumJoueur(j1.getNum()); + p.hextab[(int) newPoint.getX()][(int) newPoint + .getY()].setCouleur(j1.getCouleur()); + + //j1.setScore(j1.getScore()+5); + p.mangePointVoisin(newPoint,j1); + + iteration++; + + iterationPrecedente=1; + nbHexagone--; + + //if (nbHexagone != 0) { + if (nbHexagone != 0&&p.deplaceOrdi(j2)) { + + + nbHexagone--; + } + + j1.setScore(j1.getScore()); + j2.setScore(j2.getScore()); + } + } + } + + + + } + } else {// le cas ou tous les case sont pleine le jeu est terminer + + JPanel fin = new JPanel(); + fin.setBackground(new Color(200, 200, 0)); + // fin.add(); + + this.setContentPane(jeu); + + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.pack(); + this.setLocationRelativeTo(null); + this.setVisible(true); + } + + } + + + + //humain vs Humain + + public void quiJoue2(MouseEvent evt, Joueur j1, Joueur j2) { + if(p.testDeplace(j1)==false){iteration++; + if(this.nbJoueur==2)p.mangeTous(j2); + + } + + if(j1.getPerd()==0){ + + if (Accueil.nbHexagone != 0) { + if(iteration>1){ + nbClick++; + if(nbClick>2)nbClick=1; + if (nbClick == 1) { + ptClick.setLocation( + (int) p.dinstanceMinimale(evt.getPoint().x, + evt.getPoint().y).getX(), + (int) p.dinstanceMinimale(evt.getPoint().x, + evt.getPoint().y).getY()); + + if (p.hextab[(int) p.dinstanceMinimale(evt.getPoint().x, + evt.getPoint().y).getX()][(int) p + .dinstanceMinimale(evt.getPoint().x, + evt.getPoint().y).getY()].getNumJoueur() != j1 + .getNum()) { + nbClick--;//le test de la premiere click + + + } + + } + if (nbClick == 2) { + Point newPoint = new Point(p.dinstanceMinimale( + evt.getPoint().x, evt.getPoint().y)); + if ((int) newPoint.getX()>=0 && (int) newPoint.getY()>=0) + if (p.hextab[(int) newPoint.getX()][(int) newPoint.getY()] + .getNumJoueur() == 0) { +// + if (p.saut(ptClick, newPoint) == true) { + + p.hextab[(int) newPoint.getX()][(int) newPoint + .getY()].setNumJoueur(j1.getNum()); + p.hextab[(int) newPoint.getX()][(int) newPoint + .getY()].setCouleur(j1.getCouleur());; + + p.hextab[(int) ptClick.getX()][(int) ptClick.getY()] + .setNumJoueur(0); + p.hextab[(int) ptClick.getX()][(int) ptClick.getY()] + .setCouleur(jaune); + p.mangePointVoisin(newPoint,j1); + + + + j1.setScore(j1.getScore()); + j2.setScore(j2.getScore()); + + iteration++; + iterationPrecedente++; + + } + if (p.clonage(ptClick, newPoint) == true) { + p.hextab[(int) newPoint.getX()][(int) newPoint + .getY()].setNumJoueur(j1.getNum()); + p.hextab[(int) newPoint.getX()][(int) newPoint + .getY()].setCouleur(j1.getCouleur()); + + p.mangePointVoisin(newPoint,j1); + + iteration++; + iterationPrecedente++; + + nbHexagone--; + j1.setScore(j1.getScore()); + j2.setScore(j2.getScore()); + } + } + } + if(j1.getScore()==0){iteration++; + + iterationPrecedente++; + + j1.setPerd(1); + } + + + } + } else {// le cas ou tous les case sont pleine le jeu est terminer + + JPanel fin = new JPanel(); + fin.setBackground(new Color(200, 200, 0)); + // fin.add(); + + this.setContentPane(jeu); + + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.pack(); + this.setLocationRelativeTo(null); + this.setVisible(true); + } + } + } + + + + + // position de la souris dans le plan + public void positionMouse(MouseEvent e) { + + // longJeu--; + + if (p.countComponents() > 0) + p.remove(0); + + jeu.remove(p); + validate(); + repaint(); + + p.add(j); + jeu.add(p); + + + } + + private void jouerActionPerformed(java.awt.event.ActionEvent evt) { + if (longjeu.getText().length() > 0) { + int passe = 0; // passe c'est fait pour passer vers le jeu + if(Integer.parseInt(longjeu.getText()) < 8){ + if (Integer.parseInt(longjeu.getText()) < 3) + longJeu = 3; + else + longJeu = Integer.parseInt(longjeu.getText()); + // + if (nbjoueur.getSelectedIndex() == 1) + nbJoueur = 2; + if (nbjoueur.getSelectedIndex() == 2) + nbJoueur = 3; + + + jeu = new JPanel(); + jeu.setPreferredSize(new Dimension(900, 700)); + + jouer.setText("jouer"); + + nbjoueur.disable(); + longjeu.disable(); + + psJoueur2Label.setVisible(false); + joueur2.setVisible(false); + psJoueur3Label.setVisible(false); + joueur3.setVisible(false); + + lesJoueurs.setVisible(true); + + + j1.setActif(1);//pou lui rendre le joueur actif numero 1 + EtatJeu etat =new EtatJeu(); + etat.setBackground(new Color(230,200,150)); + JOUEUR[0]=j1; + JOUEUR[1]=j2; + JOUEUR[2]=j3; + JOUEUR[3]=j4; + + // setvisible false dans la grille + + // Plateau p = new Plateau(); + p = new Plateau(); + // p.getComponents(); + + j = new AlgoJeu(); + + + + j1.setScore(10); + j2.setScore(10); + j3.setScore(10); + j4.setScore(10); + + // // pour changer le curseur + j.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + // lorsque l'utilisateur reprendre la derniere jeu sauvegareder + + if (reprendreJeuSauvgarde==true){ + + } + + + if (iteration ==2){ + j1.setScore(10); + j2.setScore(10); + j3.setScore(10); + j4.setScore(10);} + + JOUEUR[0]=j1; + JOUEUR[1]=j2; + JOUEUR[2]=j3; + JOUEUR[3]=j4; + + if (nbJoueur == 1){ + iterationInitialisation=3; + quiJoue1(evt, j1, j2); + + + + } + + else if (nbJoueur == 2){ + + iterationInitialisation=3; + + if(j1.getPerd()==1)quiJoue2(evt, j2, j1); + else if (j2.getPerd()==1)quiJoue2(evt, j1, j2); + else { + if(iteration %2==0) + quiJoue2(evt, j1, j2); + else quiJoue2(evt, j2, j1); + } + } + + else{ + iterationInitialisation=12; + if(iteration%3==1){ + + quiJoue1(evt, j1, j4); + j2.setBorder(BorderFactory.createEmptyBorder(0,10,10,10)); + +// j2.setActif(1); +// j1.setActif(0); + j1.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + + } + else if (iteration%3==2){ +// j3.setActif(1); +// j2.setActif(0); + + quiJoue2(evt, j2, j1); + j3.setBorder(BorderFactory.createEmptyBorder(0,10,10,10)); + j2.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + + } + else { + + quiJoue2(evt, j3, j2); + j1.setBorder(BorderFactory.createEmptyBorder(0,10,10,10)); +// j1.setActif(1); +// j3.setActif(0); + j3.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + + + } + + + //quiJoue1(evt, j3, j4); + + } + positionMouse(evt); + + //pour terminer le jeu + int joueurGagne =etat.changeEtatJeu(); + j1.setScore(j1.getScore()); + j2.setScore(j2.getScore()); + j3.setScore(j3.getScore()); + j4.setScore(j4.getScore()); + + //afficher le gagnat du jeu + + + //afficher le gagnat du jeu + + if (joueurGagne==0) { + int posMax=0; + for(int i =1 ; i <4 ; i++){ + if(JOUEUR[i].getScore()>JOUEUR[posMax].getScore()) + posMax=i; + } + etat.gangnatLabel.setText(JOUEUR[posMax].getPsoeudo() + ": gagne"); + } + if (joueurGagne==1) etat.gangnatLabel.setText(j1.getPsoeudo() + ": gagne"); + if (joueurGagne==2) etat.gangnatLabel.setText(j2.getPsoeudo() + ": gagne"); + if (joueurGagne==3) etat.gangnatLabel.setText(j3.getPsoeudo() + ": gagne"); + if (joueurGagne==4) etat.gangnatLabel.setText(j4.getPsoeudo() + ": gagne"); + + } + }); + + // pour changer le curseur + p.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + positionMouse(evt); + + } + }); + // + // j.refresh(); + + p.add(j); + + + // j.refresh(); + + p.setBorder(new javax.swing.border.LineBorder(new java.awt.Color( + 255, 153, 0), 1, true)); + + if (nbJoueur == 1) { + if (joueur1.getText().length() > 0) { + + j1.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j1.setBackground(new java.awt.Color(255, 255, 255)); + j1.setNum(1); + j1.setPsoeudo(joueur1.getText()); + + j1.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j2.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j2.setBackground(new java.awt.Color(255, 255, 255)); + j2.setNum(4); + + j2.setPsoeudo("Ordinateur"); + + j2.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconNoir.png"))); + + jeu.add(logoLabel); + jeu.add(j1); + jeu.add(j2); + + setJMenuBar(barMenu); + jeu.add(etat); + jeu.add(p); + + this.setContentPane(jeu); + + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.pack(); + this.setLocationRelativeTo(null); + this.setVisible(true); + iteration++; + + } + + } + + if (nbJoueur == 2) { + + psJoueur2Label.setVisible(true); + joueur2.setVisible(true); + + if (joueur2.getText().length() > 0 + && joueur1.getText().length() > 0) { + + passe = 1; + j1.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j1.setBackground(new java.awt.Color(255, 255, 255)); + j1.setNum(1); + j1.setPsoeudo(joueur1.getText()); + j1.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j2.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j2.setBackground(new java.awt.Color(255, 255, 255)); + j2.setNum(2); + j2.setPsoeudo(joueur2.getText()); + j2.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconBleu.png"))); + + jeu.add(logoLabel); + jeu.add(j1); + jeu.add(j2); + + setJMenuBar(barMenu); + jeu.add(etat); + jeu.add(p); + + this.setContentPane(jeu); + + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.pack(); + this.setLocationRelativeTo(null); + this.setVisible(true); + iteration++; + + } + + } + + if (nbJoueur == 3) { + + psJoueur2Label.setVisible(true); + joueur2.setVisible(true); + psJoueur3Label.setVisible(true); + joueur3.setVisible(true); + + if (joueur1.getText().length() > 0 + && joueur2.getText().length() > 0 + && joueur3.getText().length() > 0) { + + j1.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j1.setBackground(new java.awt.Color(255, 255, 255)); + j1.setNum(1); + j1.setPsoeudo(joueur1.getText()); + j1.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconVert.png"))); + + j2.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j2.setBackground(new java.awt.Color(255, 255, 255)); + j2.setNum(2); + j2.setPsoeudo(joueur2.getText()); + j2.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconBleu.png"))); + + j3.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j3.setBackground(new java.awt.Color(255, 255, 255)); + j3.setNum(3); + j3.setPsoeudo(joueur3.getText()); + j3.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconRouge.png"))); + + j4.setBorder(new javax.swing.border.LineBorder( + new java.awt.Color(255, 0, 255), 1, true)); + j4.setBackground(new java.awt.Color(255, 255, 255)); + j4.setNum(4); + j4.setPsoeudo("Ordianteur"); + j4.coleurLabel.setIcon(new javax.swing.ImageIcon(getClass() + .getResource("iconNoir.png"))); + + jeu.add(logoLabel); + jeu.add(j1); + jeu.add(j2); + jeu.add(j3); + jeu.add(j4); + + + setJMenuBar(barMenu); + jeu.add(etat); + jeu.add(p); + + this.setContentPane(jeu); + + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.pack(); + this.setLocationRelativeTo(null); + this.setVisible(true); + iteration++; + + } + + } + + }else { + longjeu.setText("saisir entier <=8 "); + longjeu.setBackground(new Color(255,0,0)); + } + } + + } + + /** + * @param args + * the command line arguments + */ + public static void main(String args[]) { + + /* Set the Nimbus look and feel */ + // + /* + * If Nimbus (introduced in Java SE 6) is not available, stay with the + * default look and feel. For details see + * http://download.oracle.com/javase + * /tutorial/uiswing/lookandfeel/plaf.html + */ + try { + for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager + .getInstalledLookAndFeels()) { + if ("Nimbus".equals(info.getName())) { + javax.swing.UIManager.setLookAndFeel(info.getClassName()); + break; + } + } + } catch (ClassNotFoundException ex) { + java.util.logging.Logger.getLogger(Accueil.class.getName()).log( + java.util.logging.Level.SEVERE, null, ex); + } catch (InstantiationException ex) { + java.util.logging.Logger.getLogger(Accueil.class.getName()).log( + java.util.logging.Level.SEVERE, null, ex); + } catch (IllegalAccessException ex) { + java.util.logging.Logger.getLogger(Accueil.class.getName()).log( + java.util.logging.Level.SEVERE, null, ex); + } catch (javax.swing.UnsupportedLookAndFeelException ex) { + java.util.logging.Logger.getLogger(Accueil.class.getName()).log( + java.util.logging.Level.SEVERE, null, ex); + } + // + // + + /* Create and display the form */ + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new Accueil().setVisible(true); + } + }); + } + + // Variables declaration - do not modify + private javax.swing.JButton jouer; + private javax.swing.JLabel nbJoeurLabel; + private javax.swing.JLabel longJeuLabel; + private javax.swing.JLabel logoLabel; + + private javax.swing.JLabel psJoueur1Label; + private javax.swing.JLabel psJoueur2Label; + private javax.swing.JLabel psJoueur3Label; + + private javax.swing.JList nbjoueur; + private javax.swing.JPanel ParametreJeu; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JTextField longjeu; + private javax.swing.JTextField joueur1; + private javax.swing.JTextField joueur2; + private javax.swing.JTextField joueur3; + private javax.swing.JPanel lesJoueurs; + private javax.swing.JMenuBar barMenu; + + private javax.swing.JMenu scoreMenu1; + private javax.swing.JMenuItem scoreMenuItem1; + private javax.swing.JMenu scoreMenu2; + private javax.swing.JMenuItem scoreMenuItem2; + private javax.swing.JMenu scoreMenu3; + private javax.swing.JMenuItem scoreMenuItem3; + private javax.swing.JMenu scoreMenu4; + private javax.swing.JMenuItem scoreMenuItem4; + private javax.swing.JMenu scoreMenu5; + private javax.swing.JMenuItem scoreMenuItem5; + + private javax.swing.JMenu jeuMenu; + private javax.swing.JMenu quitter; + private javax.swing.JMenu reprendre; + private javax.swing.JMenu reprendreDernierePartie; + private javax.swing.JMenu sauvegarder; + private javax.swing.JMenu score; + // End of variables declaration +} diff --git a/src/hexagone/AlgoJeu.java b/src/hexagone/AlgoJeu.java new file mode 100644 index 0000000..989cf97 --- /dev/null +++ b/src/hexagone/AlgoJeu.java @@ -0,0 +1,96 @@ +package hexagone; + +import java.awt.BasicStroke; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Event; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Point; +import java.awt.Toolkit; +import java.awt.event.MouseEvent; + +import javax.swing.JPanel; + +public class AlgoJeu extends JPanel { + + private static final long serialVersionUID = 1L; + private final int largeur = 800; + private final int haut = 700; + private int size = 15; + + private Font font = new Font("Arial", Font.BOLD, 18); + FontMetrics metrics; + + public AlgoJeu() { + + // chaque joueur capable de deplacer un point de deux pas au maximum. + // lorsque il presse sur entrer alor le point ser fixe dans sa place. + // impossible de placer un point dans une case pleine/bloquée + // impossible de sortir de la grille + // à chaque point gangé le joueur gangne son score sera additionné avec + // 5. + // il pert sa partie lorsque il ne trouve pas un emplacement pour + // deplacé ses point + + setPreferredSize(new Dimension(largeur, haut)); + // this.setLocation(50,50); + + } + + public void refresh() { + removeAll(); + revalidate(); + + // revalidate(); + // repaint(); + + } + + public void paintComponent(Graphics g) { + Graphics2D pl2d = (Graphics2D) g; + Point origin = new Point(largeur / 2, haut / 2); + + pl2d.setStroke(new BasicStroke(4.0f, BasicStroke.CAP_SQUARE, + BasicStroke.JOIN_MITER)); + + metrics = g.getFontMetrics(); + + GridHexagone(pl2d, origin, Accueil.longJeu * 2 - 1, 15, 8); + } + + private void GridHexagone(Graphics g, Point origin, int size, int radius, + int padding) { + + for (int row = 0; row < size; row++) { + for (int col = 0; col < size; col++) { + if (Plateau.hextab[row][col] != null) { + if (Plateau.hextab[row][col].getStatut() == 0) + dessinerHexagone(g, + Plateau.hextab[row][col].getCouleur(), + (int) Plateau.hextab[row][col].getPointCentre() + .getX(), // + (int) Plateau.hextab[row][col].getPointCentre() + .getY(), // + radius); + // Plateau.hextab[row][col].setStatut(0); + } + } + } + } + + private void dessinerHexagone(Graphics g, int couleur, int x, int y, int r) { + Graphics2D pl2d = (Graphics2D) g; + + Hexagone hexagon = new Hexagone(x, y, r); + hexagon.draw(pl2d, x, y, 0, couleur, true); // ce couleur va être + // changer c'est le couleur + // du fond + hexagon.draw(pl2d, x, y, 5, 0xf111ee, false); + + } + +} diff --git a/src/hexagone/EtatJeu.java b/src/hexagone/EtatJeu.java new file mode 100644 index 0000000..4f37232 --- /dev/null +++ b/src/hexagone/EtatJeu.java @@ -0,0 +1,171 @@ +package hexagone; + +import java.awt.Dimension; + +import javax.swing.JLabel; +import javax.swing.JPanel; + +public class EtatJeu extends JPanel { + + JLabel etatLabel; + JLabel etatJeuLabel; + JLabel gangnatLabel; + + public EtatJeu() { + + this.setPreferredSize(new Dimension(100, 112)); + gangnatLabel = new javax.swing.JLabel(); + etatLabel = new javax.swing.JLabel(); + etatJeuLabel = new javax.swing.JLabel(); + + javax.swing.GroupLayout thisLayout = new javax.swing.GroupLayout(this); + this.setLayout(thisLayout); + thisLayout + .setHorizontalGroup(thisLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + thisLayout + .createSequentialGroup() + .addContainerGap() + .addGroup( + thisLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addComponent( + gangnatLabel, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent( + etatJeuLabel, + javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, + 80, + Short.MAX_VALUE) + .addComponent( + etatLabel, + javax.swing.GroupLayout.DEFAULT_SIZE, + 80, + Short.MAX_VALUE)) + .addContainerGap())); + thisLayout + .setVerticalGroup(thisLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + thisLayout + .createSequentialGroup() + .addContainerGap( + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent( + etatLabel, + javax.swing.GroupLayout.PREFERRED_SIZE, + 24, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent( + etatJeuLabel, + javax.swing.GroupLayout.PREFERRED_SIZE, + 24, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent( + gangnatLabel, + javax.swing.GroupLayout.PREFERRED_SIZE, + 24, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(7, 7, 7))); + + // setPreferredSize(new Dimension(40, 40)); + etatLabel.setText(" etat de Jeu: "); + etatJeuLabel.setText(" En cours "); + + } + + public int changeEtatJeu() { + int nb0=0; + int nb1=0; + int nb2=0; + int nb3=0; + int nb4=0; + boolean termine=false; + + if (Accueil.iteration >= 2) { + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (Plateau.hextab[i][j] != null) { + if(Plateau.hextab[i][j].getNumJoueur()==0) nb0++; + if(Plateau.hextab[i][j].getNumJoueur()==1) nb1++; + if(Plateau.hextab[i][j].getNumJoueur()==2) nb2++; + if(Plateau.hextab[i][j].getNumJoueur()==3) nb3++; + if(Plateau.hextab[i][j].getNumJoueur()==4) nb4++; + + } + } + } + } + + if(nb0==0)etatJeuLabel.setText(" Terminé "); + else{ + gangnatLabel.setText(""); + etatJeuLabel.setText(" En cours ");} + if(nb1!=0&&nb2==0&&nb3==0&&nb4==0){etatJeuLabel.setText(" Terminé "); termine=true; + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (Plateau.hextab[i][j] != null) { + Plateau.hextab[i][j].setNumJoueur(1); + Plateau.hextab[i][j].setCouleur(0x1df307); + + } + } + } + return 1; + } + if(nb1==0&&nb2!=0&&nb3==0&&nb4==0){etatJeuLabel.setText(" Terminé "); termine=true; + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (Plateau.hextab[i][j] != null) { + Plateau.hextab[i][j].setNumJoueur(2); + Plateau.hextab[i][j].setCouleur(0x2d1fea); + + } + } + } + return 2; + } + if(nb1==0&&nb2==0&&nb3!=0&&nb4==0){etatJeuLabel.setText(" Terminé "); termine=true; + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (Plateau.hextab[i][j] != null) { + Plateau.hextab[i][j].setNumJoueur(3); + Plateau.hextab[i][j].setCouleur(0xef8f82); + + } + } + } + + return 3; + } + if(nb1==0&&nb2==0&&nb3==0&&nb4!=0){etatJeuLabel.setText(" Terminé "); + termine=true; + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (Plateau.hextab[i][j] != null) { + Plateau.hextab[i][j].setNumJoueur(4); + Plateau.hextab[i][j].setCouleur(0x000000); + + } + } + } + return 4; + } + + return -1; + + } + +} diff --git a/src/hexagone/Hexagone.java b/src/hexagone/Hexagone.java new file mode 100644 index 0000000..ecfe54f --- /dev/null +++ b/src/hexagone/Hexagone.java @@ -0,0 +1,155 @@ +package hexagone; + +import java.awt.*; + +public class Hexagone extends Polygon { + + private static final long serialVersionUID = 1L; + + public static final int sides = 6; + + private Point[] points = new Point[sides]; + private Point centre = new Point(0, 0); + private int radius; + private int rotation = 90; + + /// + private int row = 0;// + private int col = 0;// + private int couleur = 0;// + private int numJoueur = 0;// + + + public void setNumJoueur(int numJoueur) { + this.numJoueur = numJoueur; + } + + public int getNumJoueur() { + return this.numJoueur; + } + + public void setCouleur(int Couleur) { + this.couleur = Couleur; + } + + public int getCouleur() { + return this.couleur; + } + + public void setRow(int row) { + this.row = row; + } + + public int getRow() { + return this.row; + } + + public void setCol(int col) { + this.col = col; + } + + public int getCol() { + return this.col; + } + + public Point getPointCentre() { + return this.centre; + } + + + private int statut = 0; // si statut ==1 alors la case est pleine sinon la + // case est vide + + public Hexagone(Point centre, int radius) { + npoints = sides; + xpoints = new int[sides]; + ypoints = new int[sides]; + + this.centre = centre; + this.radius = radius; + + genererPoints(); + } + + public Hexagone(int x, int y, int radius) { + this(new Point(x, y), radius); + } + + public int getRadius() { + return radius; + } + + public int getStatut() { + return this.statut; + } + + public void setStatut(int statut) { + this.statut = statut; + } + + public void setRadius(int radius) { + this.radius = radius; + + genererPoints(); + } + + public int getRotation() { + return rotation; + } + + public void setRotation(int rotation) { + this.rotation = rotation; + + genererPoints(); + } + + public void setCentre(Point centre) { + this.centre = centre; + + genererPoints(); + } + + public void setCentre(int x, int y) { + setCentre(new Point(x, y)); + } + + private double getAngle(double fraction) { + return fraction * Math.PI * 2 + Math.toRadians((rotation + 180) % 360); + } + + private Point getPoint(double angle) { + int x = (int) (centre.x + Math.cos(angle) * radius); + int y = (int) (centre.y + Math.sin(angle) * radius); + + return new Point(x, y); + } + + protected void genererPoints() { + for (int p = 0; p < sides; p++) { + double angle = getAngle((double) p / sides); + Point point = getPoint(angle); + xpoints[p] = point.x; + ypoints[p] = point.y; + points[p] = point; + } + } + + public void draw(Graphics2D g, int x, int y, int lineThickness, int colorValue, boolean filled) { + // Store before changing. + Stroke tmpS = g.getStroke(); + Color tmpC = g.getColor(); + + g.setColor(new Color(colorValue)); + g.setStroke(new BasicStroke(lineThickness, BasicStroke.CAP_SQUARE,BasicStroke.JOIN_MITER)); + + if (filled) { + g.fillPolygon(xpoints, ypoints, npoints); + } else { + g.drawPolygon(xpoints, ypoints, npoints); + } + + // Set values to previous when done. + g.setColor(tmpC); + g.setStroke(tmpS); + } +} diff --git a/src/hexagone/Joueur.java b/src/hexagone/Joueur.java new file mode 100644 index 0000000..96117e0 --- /dev/null +++ b/src/hexagone/Joueur.java @@ -0,0 +1,216 @@ +package hexagone; + +import java.awt.Dimension; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +public class Joueur extends JPanel { + + // chaque joueur est caracterise par son score, son psoeudo, sa couleur + + private int score = 0; + private int actif = 0; + private int perdu = 0; + private int num = 0; // le numero du joueur dans le jeu [0,1,2,3] + private String psoeudo = ""; + private int couleurs[] = { 0x1df307, 0x2d1fea, 0xef8f82, 0x000000 }; + private int couleur = 0xeeee; + + JLabel nomLabel; + JLabel scoreLabel; + JLabel coleurLabel; + + public Joueur() { + + this.setPreferredSize(new Dimension(100, 112)); + coleurLabel = new javax.swing.JLabel(); + nomLabel = new javax.swing.JLabel(); + scoreLabel = new javax.swing.JLabel(); + + javax.swing.GroupLayout thisLayout = new javax.swing.GroupLayout(this); + this.setLayout(thisLayout); + thisLayout + .setHorizontalGroup(thisLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + thisLayout + .createSequentialGroup() + .addContainerGap() + .addGroup( + thisLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addComponent( + coleurLabel, + javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent( + scoreLabel, + javax.swing.GroupLayout.Alignment.TRAILING, + javax.swing.GroupLayout.DEFAULT_SIZE, + 80, + Short.MAX_VALUE) + .addComponent( + nomLabel, + javax.swing.GroupLayout.DEFAULT_SIZE, + 80, + Short.MAX_VALUE)) + .addContainerGap())); + thisLayout + .setVerticalGroup(thisLayout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + thisLayout + .createSequentialGroup() + .addContainerGap( + javax.swing.GroupLayout.DEFAULT_SIZE, + Short.MAX_VALUE) + .addComponent( + nomLabel, + javax.swing.GroupLayout.PREFERRED_SIZE, + 24, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent( + scoreLabel, + javax.swing.GroupLayout.PREFERRED_SIZE, + 24, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap( + javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent( + coleurLabel, + javax.swing.GroupLayout.PREFERRED_SIZE, + 24, + javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(7, 7, 7))); + + // setPreferredSize(new Dimension(40, 40)); + nomLabel.setText("Nom: " + psoeudo); + scoreLabel.setText("Score: " + score); + // coleurLabel.setText("Couleur: ..."); + + } + + public int getScore() { + return score; + } + + public void setScore(int score) { + + this.score = score; + this.updateScore(); + //this.scoreLabel.setText("Score: " + score); + + } + + // changer récupérer la valeur du champ psoeudo + + public String getPsoeudo() { + return psoeudo; + } + + + + public void setPsoeudo(String psoeudo) { + this.psoeudo = psoeudo; + this.nomLabel.setText("Nom: " + psoeudo); + } + + // changer récupérer la valeur du champ num + + public int getNum() { + return this.num; + } + + public void setNum(int num) { + this.num = num; + + } + //le joueur perdu ou non + // changer récupérer la valeur du champ num + + public int getPerd() { + return this.perdu; + } + + public void setPerd(int perdu) { + this.perdu = perdu; + + } +//le joueur actif + public int getActif() { + return this.actif; + } + + public void setActif(int actif) { + this.actif = actif ; + + } + + // mise a joure le score le score + public void updateScore(){ + + int scor=0; + boolean jeuTermine = true; + + boolean faireTerminerJeu=true; + + + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (Plateau.hextab[i][j]!=null){ + if (Plateau.hextab[i][j].getNumJoueur()==this.num){ + scor ++; + + } + + if(Plateau.hextab[i][j].getNumJoueur()!=this.num&&Plateau.hextab[i][j].getNumJoueur()!=0&&this.num!=0){ + faireTerminerJeu=false; + + } + + if(Plateau.hextab[i][j].getNumJoueur()==0) + { + jeuTermine=false; + + } + } + + + + //hexOrdi[i][j] = null; + + } + + + + + } + + + + if (jeuTermine==true)Accueil.jeuTermine=true; + + + System.out.println("");//************************************"); + this.score=scor*5; + this.scoreLabel.setText("Score: " + scor*5); + + } + + + // changer récupérer la valeur du champ couleur + + public int getCouleur() { + return couleurs[this.num-1]; + } + +} diff --git a/src/hexagone/Logowithname.png b/src/hexagone/Logowithname.png new file mode 100644 index 0000000..dc9a8f4 Binary files /dev/null and b/src/hexagone/Logowithname.png differ diff --git a/src/hexagone/Parametre.java b/src/hexagone/Parametre.java new file mode 100644 index 0000000..2caf81d --- /dev/null +++ b/src/hexagone/Parametre.java @@ -0,0 +1,9 @@ +package hexagone; + +public class Parametre { + + public Parametre() { + // TODO Auto-generated constructor stub + } + +} diff --git a/src/hexagone/Plateau.java b/src/hexagone/Plateau.java new file mode 100644 index 0000000..53ec41d --- /dev/null +++ b/src/hexagone/Plateau.java @@ -0,0 +1,713 @@ +package hexagone; + +import java.awt.*; +import java.util.Random; + +import javax.swing.*; + + +public class Plateau extends JPanel { + + private int iteration = 0; // pour avoir qu'elle notre etat (initalisation + // du plteau, initialisation du jeu, jeu ) + + public static Hexagone[][] hextab = new Hexagone[900][900];// + //public static Hexagone[][] hexOrdi = new Hexagone[900][900];//tableau de case de lor + public Graphics2D pl2d; + + private static final long serialVersionUID = 1L; + private final int largeur = 800; + private final int haut = 550; + private int size = 15; + + private Font font = new Font("Arial", Font.BOLD, 18); + FontMetrics metrics; + + public Plateau() { + setPreferredSize(new Dimension(largeur, haut)); + + // a refaire + + if (Accueil.iteration == 0) { + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + + hextab[i][j] = null; + //hexOrdi[i][j] = null; + + } + } + } + + } + + public int getHexLength() { + return hextab.length; + } + + public void paintComponent(Graphics g) { + this.pl2d = (Graphics2D) g; + Point origin = new Point(largeur / 2, haut / 2); + + pl2d.setStroke(new BasicStroke(4.0f, BasicStroke.CAP_SQUARE, + BasicStroke.JOIN_MITER)); + + metrics = g.getFontMetrics(); + + + // a refaire + if (Accueil.iteration == 1){// pour eliminer la grille du plateau + // principale + + //Accueil.longJeu * 2 - 1 + GridHexagone(pl2d, origin, Accueil.longJeu * 2 - 1, this.size, 8); + initialiserPointDdepart(); + Accueil.iteration++; + + } + } + + private void GridHexagone(Graphics g, Point origin, int size, int radius,int padding) { + double angle30 = Math.toRadians(30); + int milieu = size / 2; + //padding espace entre les exagones + double y = Math.sin(angle30) * (radius + padding); + double x = Math.cos(angle30) * (radius + padding); + + for (int row = 0; row < size; row++) { + int cols = size - java.lang.Math.abs(row - milieu); + + for (int col = 0; col < cols; col++) { + + dessinerHexagone(g, // + (int) (origin.x + x * (col * 2 + 1 - cols)), // + (int) (origin.y + y * (row - milieu) * 3), // + radius, col, row); + } + } + } + + private void dessinerHexagone(Graphics g, int x, int y, int r, int col, int row) { + Graphics2D pl2d = (Graphics2D) g; + + Hexagone hexagon = new Hexagone(x, y, r); + // + + + if (Accueil.iteration == 1) { + Accueil.nbHexagone++; + + // hextab[row][col].x=x; + // hextab[row][col].y=y; + hextab[row][col] = hexagon; + hextab[row][col].setCouleur(0xeaf111); + // hextab[row][col].setNumJoueur(-1); + } else + hexagon.draw(pl2d, x, y, 0, 0xeaf111, true); + hexagon.draw(pl2d, x, y, 5, 0xf111ee, false); + + } + + // initialisation des point de depart + + + public void initialiserPointDdepart(){ + + + ///0x1df307, 0x2d1fea, 0xef8f82, + if(Accueil.nbJoueur==1){ + hextab[0][0].setCouleur(0x1df307); + hextab[0][0].setNumJoueur(1); + + hextab[Accueil.longJeu * 2 - 2][0].setCouleur(0x1df307); + hextab[Accueil.longJeu * 2 - 2][0].setNumJoueur(1); + + this.caseOrdiIter1(); + this.caseOrdiIter1(); + } + else if(Accueil.nbJoueur==2){ + hextab[0][0].setCouleur(0x1df307); + hextab[0][0].setNumJoueur(1); + hextab[Accueil.longJeu * 2 - 2][0].setCouleur(0x1df307); + hextab[Accueil.longJeu * 2 - 2][0].setNumJoueur(1); + + + hextab[Accueil.longJeu-1][0].setCouleur(0x2d1fea); + hextab[Accueil.longJeu-1][0].setNumJoueur(2); + hextab[Accueil.longJeu-1][Accueil.longJeu * 2 - 2].setCouleur(0x2d1fea); + hextab[Accueil.longJeu-1][Accueil.longJeu * 2 - 2].setNumJoueur(2); + + + + } + else { + hextab[0][0].setCouleur(0x1df307); + hextab[0][0].setNumJoueur(1); + hextab[Accueil.longJeu * 2 - 2][0].setCouleur(0x1df307); + hextab[Accueil.longJeu * 2 - 2][0].setNumJoueur(1); + + + hextab[Accueil.longJeu-1][0].setCouleur(0x2d1fea); + hextab[Accueil.longJeu-1][0].setNumJoueur(2); + hextab[Accueil.longJeu-1][Accueil.longJeu * 2 - 2].setCouleur(0x2d1fea); + hextab[Accueil.longJeu-1][Accueil.longJeu * 2 - 2].setNumJoueur(2); + + + hextab[0][Accueil.longJeu-1].setCouleur(0xef8f82); + hextab[0][Accueil.longJeu-1].setNumJoueur(3); + hextab[Accueil.longJeu * 2 - 2][Accueil.longJeu-1].setCouleur(0xef8f82); + hextab[Accueil.longJeu * 2 - 2][Accueil.longJeu-1].setNumJoueur(3); + + this.caseOrdiIter1(); + this.caseOrdiIter1(); + + + + } + + + } + + + + public double getSizeHex() { + return (double) this.size; + } + + public int getIteration() { + return iteration; + } + + public void setIteration(int iteration) { + this.iteration = iteration; + } + + // fonctionnel + // cette fonction rendre (row, col) de la matrice qui contient le point le + // plus proche du click souris + + public Point dinstanceMinimale(int x, int y) { + + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (hextab[i][j] != null) { + if (Math.sqrt((x - hextab[i][j].getPointCentre().getX()) + * (x - hextab[i][j].getPointCentre().getX()) + + (y - hextab[i][j].getPointCentre().getY()) + * (y - hextab[i][j].getPointCentre().getY())) <= getSizeHex()) { + + Hexagone hexagon = new Hexagone(x, y, 15); + return new Point(i, j); + } + } + + } + } + + return new Point(-1, -1); + } + + // pour vérifier le deplacement est possible ou non + public boolean exist(int i, int j) { + return true; + } + + // pour verifier la possibilete de clonage ou pas + public boolean clonage(Point prevPoint, Point newPoint) { + + + if (newPoint.getX() == prevPoint.getX() - 1 && newPoint.getY() == prevPoint.getY() ) return true; + if (newPoint.getX() == prevPoint.getX() && newPoint.getY() == prevPoint.getY() - 1) return true; + if (newPoint.getX() == prevPoint.getX() && newPoint.getY() == prevPoint.getY() + 1) return true; + if (newPoint.getX() == prevPoint.getX() + 1 && newPoint.getY() == prevPoint.getY()) return true; + + + + if(newPoint.getX()>Accueil.longJeu){//dans le cas où le joueur clique sur une case de la partie basse + if (newPoint.getX() == prevPoint.getX() - 1 && newPoint.getY() == prevPoint.getY() + 1) return true; + if (newPoint.getX() == prevPoint.getX() + 1 && newPoint.getY() == prevPoint.getY() -1) return true; + + } + else if(newPoint.getX()Accueil.longJeu){//dans le cas où le joueur clique sur une case de la partie basse + + + if (newPoint.getX() == prevPoint.getX() + 2 && newPoint.getY() == prevPoint.getY() - 2) return true;//oki + + if (newPoint.getX() == prevPoint.getX() - 2 && newPoint.getY() == prevPoint.getY() + 2) return true;//oki + + if (newPoint.getX() == prevPoint.getX() + 2 && newPoint.getY() == prevPoint.getY() - 1) return true; + if (newPoint.getX() == prevPoint.getX() + 1 && newPoint.getY() == prevPoint.getY() - 2) return true; + if (newPoint.getX() == prevPoint.getX() + 1 && newPoint.getY() == prevPoint.getY() + 1) return true; + if (newPoint.getX() == prevPoint.getX() - 1 && newPoint.getY() == prevPoint.getY() + 2) return true; + if (newPoint.getX() == prevPoint.getX() - 1 && newPoint.getY() == prevPoint.getY() - 1) return true; + if (newPoint.getX() == prevPoint.getX() - 2 && newPoint.getY() == prevPoint.getY() + 1) return true; + if (newPoint.getX() == prevPoint.getX() - 1 && newPoint.getY() == prevPoint.getY() - 2) return true; + + } + + else if (newPoint.getX()=0 && (int) newPoint.getY() - 1>=0 ) + if (hextab [(int)newPoint.getX() ][(int) newPoint.getY() - 1]!=null) + if (hextab [(int)newPoint.getX() ][(int) newPoint.getY() - 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() ][(int) newPoint.getY() - 1].getNumJoueur()!=j.getNum()){ + hextab [(int)newPoint.getX() ][(int) newPoint.getY() - 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() ][(int) newPoint.getY() - 1].setNumJoueur(j.getNum()); + score =score +5; + } + if( (int)newPoint.getX() >=0 && (int) newPoint.getY() + 1>=0 ) + if (hextab [(int)newPoint.getX() ][(int) newPoint.getY() + 1]!=null) + if (hextab [(int)newPoint.getX() ][(int) newPoint.getY() + 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() ][(int) newPoint.getY() + 1].getNumJoueur()!=j.getNum()){ + hextab [(int)newPoint.getX() ][(int) newPoint.getY() + 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() ][(int) newPoint.getY() + 1].setNumJoueur(j.getNum()); + score =score +5; + } + if((int)newPoint.getX() + 1 >=0 && (int) newPoint.getY()>=0 ) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY()]!=null) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY()].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY()].getNumJoueur()!=j.getNum()) { + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY()].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY()].setNumJoueur(j.getNum()); + score =score +5; + } + + + if((int)newPoint.getX() - 1 >=0 && (int) newPoint.getY()>=0 ) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY()]!=null) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY()].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY()].getNumJoueur()!=j.getNum()) { + hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY()].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY()].setNumJoueur(j.getNum()); + score =score +5; + } + + + + + + + + + + + + if(newPoint.getX()>Accueil.longJeu){//dans le cas où le joueur clique sur une case de la partie basse + + + + if((int)newPoint.getX() - 1 >=0 && (int) newPoint.getY() + 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1]!=null) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1].getNumJoueur()!=j.getNum()) + { hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + if((int)newPoint.getX() + 1 >=0 && (int) newPoint.getY() - 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1]!=null) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=j.getNum()) { + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + + + + + + } + else if(newPoint.getX()=0 && (int) newPoint.getY() - 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1]!=null) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=j.getNum()) + { hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + if((int)newPoint.getX() + 1 >=0 && (int) newPoint.getY() + 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() + 1]!=null) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY()+ 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() + 1].getNumJoueur()!=j.getNum()) { + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() + 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() + 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + + + } + else if(newPoint.getX()==Accueil.longJeu-2){//oki _2 + + + if((int)newPoint.getX() - 1 >=0 && (int) newPoint.getY() - 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1]!=null) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=j.getNum()) + { hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() - 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + if((int)newPoint.getX() + 1 >=0 && (int) newPoint.getY() + 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() + 1]!=null) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() + 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() + 1].getNumJoueur()!=j.getNum()) { + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() + 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() + 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + + + } + + + + else if(newPoint.getX()==Accueil.longJeu-1){//Milieuu oki + + + + + if((int)newPoint.getX() - 1 >=0 && (int) newPoint.getY() - 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() -1 ][(int) newPoint.getY() - 1]!=null) + if (hextab [(int)newPoint.getX() -1 ][(int) newPoint.getY() - 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() -1 ][(int) newPoint.getY() - 1].getNumJoueur()!=j.getNum()) + { hextab [(int)newPoint.getX() -1 ][(int) newPoint.getY() - 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() -1 ][(int) newPoint.getY() - 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + if((int)newPoint.getX() + 1 >=0 && (int) newPoint.getY() - 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1]!=null) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=j.getNum()) { + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + } + else if(newPoint.getX()==Accueil.longJeu){//apres milieu oki + + + + + if((int)newPoint.getX() + 1>=0 && (int) newPoint.getY() - 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1]!=null) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].getNumJoueur()!=j.getNum()) + { hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() + 1 ][(int) newPoint.getY() - 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + if((int)newPoint.getX() - 1 >=0 && (int) newPoint.getY() + 1>=0 )//verif.......... + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1]!=null) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1].getNumJoueur()!=0 ) + if (hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1].getNumJoueur()!=j.getNum()) + { hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1].setCouleur(j.getCouleur()); + hextab [(int)newPoint.getX() - 1 ][(int) newPoint.getY() + 1].setNumJoueur(j.getNum()); + score =score +5; + } + + + + + + } + + + + j.setScore(j.getScore()+score); + } + + // choix de l'ordianteur + + public Point caseOrdiIter1() { + boolean trouve = false; + int x = 0, y = 0; + Random rand = new Random(); + while (trouve == false) { + x = rand.nextInt(Accueil.longJeu * 2 - 1); + y = rand.nextInt(Accueil.longJeu * 2 - 1); + if (hextab[x][y] != null) { + if (hextab[x][y].getNumJoueur() == 0) { // si la case est + // contient comme num + // joueur -1 donc elle + // est vide + hextab[x][y].setNumJoueur(4); + hextab[x][y].setCouleur(0x000000); + trouve = true; + } + } + } + + return new Point(x, y); + } + + public boolean deplaceOrdi(Joueur joueur){ + //lorsque l'ordianteur il cherche tous d'abord un point des ses points dans le tableau des hexagone + //si son point alors + // si il est possible de cloner alors + // il clone + // il appel la fontion de mager par le point par son nom + // si non si il est possible de sauter + // il saute + // il mange + // + // + // + // + + + int x = 0, y = 0; + Random rand = new Random(); + Point[] possiblePoint = {new Point(2,2), new Point(2,1), new Point(2,0), new Point(2,-1), new Point(2,-2), + new Point(1,2), new Point(1,1), new Point(1,0), new Point(1,-1), new Point(1,-2), + new Point(0,2), new Point(0,1), new Point(0,-1), new Point(0,-2), + new Point(-1,2), new Point(-1,1), new Point(-1,0), new Point(-1,-1), new Point(1,-2), + new Point(-2,2), new Point(-2,1), new Point(-2,0), new Point(-2,-1), new Point(-2,-2), + }; + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (hextab[i][j] != null) { + if (hextab[i][j].getNumJoueur()==joueur.getNum()){ + + for (int p =0; p <=23; p++){ + Point prevPoint=new Point(i,j); + Point newPoint=new Point((int)possiblePoint[p].getX()+i,(int)possiblePoint[p].getY()+j ); + if((int)newPoint.getX()>=0&&(int)newPoint.getY()>=0) + if(hextab[(int)newPoint.getX()][(int)newPoint.getY()]!=null) + if(hextab[(int)newPoint.getX()][(int)newPoint.getY()].getNumJoueur()==0){ + + if(clonage(prevPoint,newPoint )){ + hextab[(int)newPoint.getX()][(int)newPoint.getY()].setNumJoueur(joueur.getNum()); + hextab[(int)newPoint.getX()][(int)newPoint.getY()].setCouleur(joueur.getCouleur()); + + this.mangePointVoisin(newPoint, joueur); + + + return true; + }else if(saut(prevPoint,newPoint) == true){ + + hextab[(int)newPoint.getX()][(int)newPoint.getY()].setNumJoueur(joueur.getNum()); + hextab[(int)newPoint.getX()][(int)newPoint.getY()].setCouleur(joueur.getCouleur()); + this.mangePointVoisin(newPoint, joueur); + + return true; + + } + } + } + } + } + } + } + + return false ; + + + + + +} + + + public void mangeTous(Joueur joueur){ + + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (hextab[i][j] != null) { + if (hextab[i][j].getNumJoueur()==0){ + + + hextab[i][j].setNumJoueur(joueur.getNum()); + hextab[i][j].setCouleur(joueur.getCouleur()); + + + + } + } + } + } + + + + + +} + + public boolean testDeplace(Joueur j1){ + + int x = 0, y = 0; + Random rand = new Random(); + Point[] possiblePoint = {new Point(2,2), new Point(2,1), new Point(2,0), new Point(2,-1), new Point(2,-2), + new Point(1,2), new Point(1,1), new Point(1,0), new Point(1,-1), new Point(1,-2), + new Point(0,2), new Point(0,1), new Point(0,-1), new Point(0,-2), + new Point(-1,2), new Point(-1,1), new Point(-1,0), new Point(-1,-1), new Point(1,-2), + new Point(-2,2), new Point(-2,1), new Point(-2,0), new Point(-2,-1), new Point(-2,-2), + }; + for (int i = 0; i < Accueil.longJeu * 2 - 1; i++) { + for (int j = 0; j < Accueil.longJeu * 2 - 1; j++) { + if (hextab[i][j] != null) { + if (hextab[i][j].getNumJoueur()==j1.getNum()){ + + for (int p =0; p <=23; p++){ + Point prevPoint=new Point(i,j); + Point newPoint=new Point((int)possiblePoint[p].getX()+i,(int)possiblePoint[p].getY()+j ); + if((int)newPoint.getX()>=0&&(int)newPoint.getY()>=0) + if(hextab[(int)newPoint.getX()][(int)newPoint.getY()]!=null) + if(hextab[(int)newPoint.getX()][(int)newPoint.getY()].getNumJoueur()==0){ + + if(clonage(prevPoint,newPoint )){ + + return true; + }else if(saut(prevPoint,newPoint) == true){ + return true; + + } + } + } + } + } + } + } + + return false ; + + + + + +} + +} diff --git a/src/hexagone/cursor.png b/src/hexagone/cursor.png new file mode 100644 index 0000000..9d33616 Binary files /dev/null and b/src/hexagone/cursor.png differ diff --git a/src/hexagone/iconBleu.png b/src/hexagone/iconBleu.png new file mode 100644 index 0000000..c938457 Binary files /dev/null and b/src/hexagone/iconBleu.png differ diff --git a/src/hexagone/iconNoir.png b/src/hexagone/iconNoir.png new file mode 100644 index 0000000..f83bd4a Binary files /dev/null and b/src/hexagone/iconNoir.png differ diff --git a/src/hexagone/iconRouge.png b/src/hexagone/iconRouge.png new file mode 100644 index 0000000..cb2bd62 Binary files /dev/null and b/src/hexagone/iconRouge.png differ diff --git a/src/hexagone/iconVert.png b/src/hexagone/iconVert.png new file mode 100644 index 0000000..7c85063 Binary files /dev/null and b/src/hexagone/iconVert.png differ diff --git a/src/hexagone/logo.png b/src/hexagone/logo.png new file mode 100644 index 0000000..7e05a34 Binary files /dev/null and b/src/hexagone/logo.png differ