Ajout de fichier
This commit is contained in:
parent
4899d0d69c
commit
71c5d30b1a
5
.gitignore
vendored
5
.gitignore
vendored
@ -26,4 +26,7 @@ bin/
|
||||
.vscode/
|
||||
|
||||
### 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