Ajout de fichier
This commit is contained in:
parent
4899d0d69c
commit
71c5d30b1a
5
.gitignore
vendored
5
.gitignore
vendored
@ -26,4 +26,7 @@ bin/
|
|||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
### Mac OS ###
|
### Mac OS ###
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
### Java ###
|
||||||
|
.class
|
55
src/Accueil.java
Normal file
55
src/Accueil.java
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class Accueil extends JPanel {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Appel de la méthode fenetreAccueil pour créer la fenêtre d'accueil
|
||||||
|
fenetreAccueil();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void fenetreAccueil() {
|
||||||
|
|
||||||
|
// Création de la fenêtre d'accueil
|
||||||
|
Fenetre fenetre = new Fenetre();
|
||||||
|
|
||||||
|
// Création de l'accueil
|
||||||
|
Accueil accueil = new Accueil();
|
||||||
|
fenetre.setContentPane(accueil);
|
||||||
|
|
||||||
|
// Création du texte
|
||||||
|
JLabel texte = new JLabel("Choisissez votre type de grille", SwingConstants.CENTER);
|
||||||
|
texte.setPreferredSize(new Dimension(800, 50));
|
||||||
|
texte.setFont(new Font("Arial", Font.BOLD, 30));
|
||||||
|
texte.setForeground(new Color(0, 200, 10));
|
||||||
|
|
||||||
|
// Création des boutons
|
||||||
|
Boutons boutons = new Boutons(fenetre);
|
||||||
|
|
||||||
|
//Récupération des boutons créés dans la classe Boutons
|
||||||
|
JButton choisirGrille = boutons.getChoisirGrille();
|
||||||
|
JButton importerGrille = boutons.getImporterGrille();
|
||||||
|
|
||||||
|
// Création du panel pour le texte
|
||||||
|
JPanel panelTexte = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 0));
|
||||||
|
panelTexte.add(texte);
|
||||||
|
|
||||||
|
// Création du panel pour les boutons
|
||||||
|
JPanel panelBoutons = new JPanel(new FlowLayout(FlowLayout.CENTER, 100, 200));
|
||||||
|
panelBoutons.add(choisirGrille);
|
||||||
|
panelBoutons.add(importerGrille);
|
||||||
|
panelBoutons.setOpaque(false);
|
||||||
|
|
||||||
|
// Ajout des composants au JPanel principal
|
||||||
|
accueil.setLayout(new BorderLayout());
|
||||||
|
accueil.add(panelTexte, BorderLayout.NORTH);
|
||||||
|
accueil.add(panelBoutons, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
fenetre.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void paintComponent(Graphics g) {
|
||||||
|
super.paintComponent(g);
|
||||||
|
g.drawImage(new ImageIcon("background.jpg").getImage(), 0, 0, getWidth(), getHeight(), null);
|
||||||
|
}
|
||||||
|
}
|
89
src/Boutons.java
Normal file
89
src/Boutons.java
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
import java.awt.*;
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class Boutons extends JPanel {
|
||||||
|
|
||||||
|
private JButton choisirGrille;
|
||||||
|
private JButton importerGrille;
|
||||||
|
private JFrame fenetrePrincipale;
|
||||||
|
|
||||||
|
public Boutons(JFrame fenetrePrincipale) {
|
||||||
|
// Création des boutons
|
||||||
|
choisirGrille = new JButton("Générer une grille");
|
||||||
|
choisirGrille.setPreferredSize(new Dimension(250, 50));
|
||||||
|
choisirGrille.setFont(new Font("Arial", Font.BOLD, 20));
|
||||||
|
choisirGrille.setBackground(Color.CYAN);
|
||||||
|
|
||||||
|
importerGrille = new JButton("Importer une grille");
|
||||||
|
importerGrille.setPreferredSize(new Dimension(250, 50));
|
||||||
|
importerGrille.setFont(new Font("Arial", Font.BOLD, 20));
|
||||||
|
importerGrille.setBackground(Color.GREEN);
|
||||||
|
|
||||||
|
this.fenetrePrincipale = fenetrePrincipale;
|
||||||
|
|
||||||
|
// Ajout des listeners aux boutons + gestion des erreurs
|
||||||
|
choisirGrille.addActionListener(e -> {
|
||||||
|
String strTaille = JOptionPane.showInputDialog(this, "Entrez la taille de la grille :", "Taille de la grille", JOptionPane.PLAIN_MESSAGE);
|
||||||
|
if (strTaille != null && !strTaille.isEmpty()) {
|
||||||
|
if (!Character.isDigit(strTaille.charAt(0))) {
|
||||||
|
JOptionPane.showMessageDialog(this, "Le premier caractère doit être un chiffre ou nombre.", "Erreur", JOptionPane.ERROR_MESSAGE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
int taille = Integer.parseInt(strTaille);
|
||||||
|
if (taille > 3 && taille < 21) {
|
||||||
|
// afficher la taille choisir dans la console
|
||||||
|
System.out.println("Les dimensions de la grille : " + taille + "x" + taille);
|
||||||
|
// Afficher la boîte de dialogue pour le choix du remplissage de la grille
|
||||||
|
String[] options = {"Remplir aléatoirement", "Partir d'une grille vide"};
|
||||||
|
int choix = JOptionPane.showOptionDialog(this, "Choisissez comment remplir la grille :", "Remplissage de la grille", JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]);
|
||||||
|
switch (choix) {
|
||||||
|
case 0:
|
||||||
|
// afficher la grille aléatoirement
|
||||||
|
GridPanel grille = new GridPanel();
|
||||||
|
addGrid(grille);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
// TODO: partir d'une grille vide
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// gérer le cas où aucun choix n'a été fait
|
||||||
|
JOptionPane.showMessageDialog(this, "Aucun choix n'a été fait.", "Attention", JOptionPane.WARNING_MESSAGE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
String errorMessage = "La taille doit être au moins de 4.";
|
||||||
|
if (taille >= 21) {
|
||||||
|
errorMessage = "La taille ne doit pas dépasser 20.";
|
||||||
|
}
|
||||||
|
JOptionPane.showMessageDialog(this, errorMessage, "Erreur", JOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
JOptionPane.showMessageDialog(this, "Tapez " + strTaille.charAt(0) + " pour une grille " + strTaille.charAt(0) +"x"+ strTaille.charAt(0) +".", "Erreur", JOptionPane.ERROR_MESSAGE);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
importerGrille.addActionListener(e -> {
|
||||||
|
JFileChooser fileChooser = new JFileChooser();
|
||||||
|
fileChooser.setDialogTitle("Choisissez un fichier de grille");
|
||||||
|
int choix = fileChooser.showOpenDialog(this);
|
||||||
|
if (choix == JFileChooser.APPROVE_OPTION) {
|
||||||
|
File fichier = fileChooser.getSelectedFile();
|
||||||
|
// TODO: charger la grille depuis le fichier
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public JButton getChoisirGrille() {
|
||||||
|
return choisirGrille;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JButton getImporterGrille() {
|
||||||
|
return importerGrille;
|
||||||
|
}
|
||||||
|
}
|
14
src/Fenetre.java
Normal file
14
src/Fenetre.java
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import javax.swing.JFrame;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Toolkit;
|
||||||
|
|
||||||
|
public class Fenetre extends JFrame {
|
||||||
|
public Fenetre() {
|
||||||
|
super("Accueil");
|
||||||
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
||||||
|
Dimension d = new Dimension(screenSize.width, screenSize.height);
|
||||||
|
this.setSize(d);
|
||||||
|
this.setLocationRelativeTo(null);
|
||||||
|
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
}
|
||||||
|
}
|
156
src/GridPanel.java
Normal file
156
src/GridPanel.java
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.awt.event.*;
|
||||||
|
|
||||||
|
public class GridPanel extends JPanel {
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private int gridSize = 10;
|
||||||
|
private int cellSize = 50;
|
||||||
|
private Color[][] gridColors;
|
||||||
|
private boolean editMode = false;
|
||||||
|
private boolean placeJoueurMode = false;
|
||||||
|
private boolean placeTMode = false;
|
||||||
|
private Point joueurPos = null;
|
||||||
|
private Point tPos = null;
|
||||||
|
private JButton placeJoueurButton;
|
||||||
|
private JButton placeTButton;
|
||||||
|
private JButton editButton;
|
||||||
|
|
||||||
|
public GridPanel() {
|
||||||
|
setPreferredSize(new Dimension(gridSize * cellSize, gridSize * cellSize));
|
||||||
|
setBackground(Color.WHITE);
|
||||||
|
|
||||||
|
gridColors = new Color[gridSize][gridSize];
|
||||||
|
Random rand = new Random();
|
||||||
|
for (int i = 0; i < gridSize; i++) {
|
||||||
|
for (int j = 0; j < gridSize; j++) {
|
||||||
|
gridColors[i][j] = rand.nextBoolean() ? Color.BLACK : Color.WHITE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
addMouseListener(new MouseAdapter() {
|
||||||
|
public void mouseClicked(MouseEvent e) {
|
||||||
|
int row = e.getY() / cellSize;
|
||||||
|
int col = e.getX() / cellSize;
|
||||||
|
if (editMode) {
|
||||||
|
gridColors[row][col] = gridColors[row][col] == Color.BLACK ? Color.WHITE : Color.BLACK;
|
||||||
|
repaint();
|
||||||
|
} else if (placeJoueurMode) {
|
||||||
|
joueurPos = new Point(col, row);
|
||||||
|
repaint();
|
||||||
|
} else if (placeTMode) {
|
||||||
|
tPos = new Point(col, row);
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
editButton = new JButton("Enlever/Ajouter Murs");
|
||||||
|
editButton.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
editMode = !editMode;
|
||||||
|
if (editMode) {
|
||||||
|
editButton.setText("Mode Dessin");
|
||||||
|
placeJoueurButton.setEnabled(false);
|
||||||
|
placeTButton.setEnabled(false);
|
||||||
|
} else {
|
||||||
|
editButton.setText("Enlever/Ajouter Murs");
|
||||||
|
placeJoueurButton.setEnabled(true);
|
||||||
|
placeTButton.setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
add(editButton);
|
||||||
|
|
||||||
|
placeJoueurButton = new JButton("Placer Joueur");
|
||||||
|
placeJoueurButton.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
placeJoueurMode = !placeJoueurMode;
|
||||||
|
if (placeJoueurMode) {
|
||||||
|
placeJoueurButton.setText("Mode Dessin");
|
||||||
|
editButton.setEnabled(false);
|
||||||
|
placeTButton.setEnabled(false);
|
||||||
|
} else {
|
||||||
|
placeJoueurButton.setText("Placer Joueur");
|
||||||
|
editButton.setEnabled(true);
|
||||||
|
placeTButton.setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
add(placeJoueurButton);
|
||||||
|
|
||||||
|
placeTButton = new JButton("Placer Lettre T");
|
||||||
|
placeTButton.addActionListener(new ActionListener() {
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
placeTMode = !placeTMode;
|
||||||
|
if (placeTMode) {
|
||||||
|
placeTButton.setText("Mode Dessin");
|
||||||
|
editButton.setEnabled(false);
|
||||||
|
placeJoueurButton.setEnabled(false);
|
||||||
|
} else {
|
||||||
|
placeTButton.setText("Placer Lettre T");
|
||||||
|
editButton.setEnabled(true);
|
||||||
|
placeJoueurButton.setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
add(placeTButton);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void paintComponent(Graphics g) {
|
||||||
|
super.paintComponent(g);
|
||||||
|
|
||||||
|
// Draw grid cells
|
||||||
|
for (int i = 0; i < gridSize; i++) {
|
||||||
|
for (int j = 0; j < gridSize; j++) {
|
||||||
|
g.setColor(gridColors[i][j]);
|
||||||
|
g.fillRect(j * cellSize, i * cellSize, cellSize, cellSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw horizontal lines
|
||||||
|
g.setColor(Color.BLACK);
|
||||||
|
for (int i = 1; i < gridSize; i++) {
|
||||||
|
int y = i * cellSize;
|
||||||
|
g.drawLine(0, y, getWidth(), y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw vertical lines
|
||||||
|
for (int j = 1; j < gridSize; j++) {
|
||||||
|
int x = j * cellSize;
|
||||||
|
g.drawLine(x, 0, x, getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw player and T
|
||||||
|
if (joueurPos != null){
|
||||||
|
g.setColor(Color.BLUE);
|
||||||
|
g.fillOval(joueurPos.x * cellSize, joueurPos.y * cellSize, cellSize, cellSize);
|
||||||
|
}
|
||||||
|
if (tPos != null) {
|
||||||
|
g.setColor(Color.RED);
|
||||||
|
g.fillRect(tPos.x * cellSize, tPos.y * cellSize, cellSize, cellSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
JFrame frame = new JFrame("GridPanel");
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.getContentPane().setLayout(new BorderLayout());
|
||||||
|
GridPanel gridPanel = new GridPanel();
|
||||||
|
frame.getContentPane().add(gridPanel, BorderLayout.CENTER);
|
||||||
|
frame.getContentPane().add(gridPanel.getComponents()[0], BorderLayout.NORTH);
|
||||||
|
frame.pack();
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
Timer timer = new Timer(100, new ActionListener() {
|
||||||
|
@Override
|
||||||
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
gridPanel.repaint();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
timer.start();
|
||||||
|
}
|
||||||
|
}
|
32
src/Play.java
Normal file
32
src/Play.java
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class Play extends JFrame {
|
||||||
|
public Play() {
|
||||||
|
super("Démarrage");
|
||||||
|
this.setSize(250, 250);
|
||||||
|
this.setLocationRelativeTo(null);
|
||||||
|
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
|
||||||
|
JPanel panelDemarrage = new JPanel(new BorderLayout());
|
||||||
|
panelDemarrage.setBackground(Color.WHITE);
|
||||||
|
|
||||||
|
JButton play = new JButton("Jouer");
|
||||||
|
play.setPreferredSize(new Dimension(100, 50));
|
||||||
|
play.setFont(new Font("Arial", Font.BOLD, 20));
|
||||||
|
play.setBackground(new Color(0, 150, 200));
|
||||||
|
play.addActionListener(e -> {
|
||||||
|
this.dispose(); // ferme la fenêtre de démarrage
|
||||||
|
Accueil.fenetreAccueil(); // ouvre la fenêtre d'accueil
|
||||||
|
});
|
||||||
|
|
||||||
|
JPanel panelPlay = new JPanel();
|
||||||
|
panelPlay.add(play, BorderLayout.CENTER);
|
||||||
|
|
||||||
|
panelDemarrage.add(panelPlay, BorderLayout.CENTER);
|
||||||
|
panelDemarrage.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 60));
|
||||||
|
this.setContentPane(panelDemarrage);
|
||||||
|
this.setResizable(false);
|
||||||
|
this.setVisible(true);
|
||||||
|
}
|
||||||
|
}
|
BIN
src/background.jpg
Normal file
BIN
src/background.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 80 KiB |
Loading…
Reference in New Issue
Block a user