Mise à jour du JavaDoc
This commit is contained in:
parent
83349af79a
commit
0f7aa1529f
@ -9,6 +9,9 @@ import java.awt.*;
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class AutoSimulationView extends JPanel {
|
||||
/**
|
||||
* The automatic simulation model
|
||||
*/
|
||||
public final AutoSimulation model;
|
||||
|
||||
/**
|
||||
@ -22,6 +25,10 @@ public class AutoSimulationView extends JPanel {
|
||||
this.setPreferredSize(new Dimension(700, 500));
|
||||
}
|
||||
|
||||
/**
|
||||
* Paint the view
|
||||
* @param g The graphics
|
||||
*/
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
|
@ -1,13 +1,28 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* Class containing custom settings for JButtons used in the application.
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class Button extends JButton {
|
||||
/**
|
||||
* Constructor
|
||||
* @param text The text of the button
|
||||
*/
|
||||
public Button (String text) {
|
||||
super(text);
|
||||
setFont(new Font("Arial", Font.BOLD, 15));
|
||||
setBackground(new Color(96, 175, 255));
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param text The text of the button
|
||||
* @param dimension The dimension of the button
|
||||
*/
|
||||
public Button(String text, Dimension dimension) {
|
||||
super(text);
|
||||
setPreferredSize(dimension);
|
||||
|
@ -1,10 +1,27 @@
|
||||
/**
|
||||
* Class used to edit the grid model
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class Editor {
|
||||
/**
|
||||
* The grid model
|
||||
*/
|
||||
private final Grid gridModel;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param gridModel The grid model
|
||||
*/
|
||||
public Editor(Grid gridModel) {
|
||||
this.gridModel = gridModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the grid model
|
||||
* @return The grid model
|
||||
*/
|
||||
public Grid getGrid() {
|
||||
return this.gridModel;
|
||||
}
|
||||
|
@ -6,18 +6,68 @@ import java.awt.event.MouseEvent;
|
||||
import java.io.File;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* Controller for the grid editor
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class EditorController extends GridController {
|
||||
/**
|
||||
* The editor model
|
||||
*/
|
||||
private final Editor model;
|
||||
|
||||
/**
|
||||
* The editor view
|
||||
*/
|
||||
private final EditorView view;
|
||||
|
||||
/**
|
||||
* Enum for the edit mode
|
||||
*/
|
||||
private enum Mode { DISABLED, WALL, THESEE, EXIT }
|
||||
|
||||
/**
|
||||
* The edit mode
|
||||
*/
|
||||
private Mode editMode = Mode.DISABLED;
|
||||
|
||||
/**
|
||||
* If the grid has been edited
|
||||
*/
|
||||
private boolean edited = false;
|
||||
|
||||
/**
|
||||
* Button used to place Thésée in the grid
|
||||
*/
|
||||
private final Button editTheseeButton = new Button("Modifier Thésée");
|
||||
|
||||
/**
|
||||
* Button used to place the exit in the grid
|
||||
*/
|
||||
private final Button editExitButton = new Button("Modifier Sortie");
|
||||
|
||||
/**
|
||||
* Button used to edit the walls in the grid
|
||||
*/
|
||||
private final Button editWallButton = new Button("Modifier Murs");
|
||||
|
||||
/**
|
||||
* Button used to export the grid
|
||||
*/
|
||||
private final Button exportButton = new Button("Exporter");
|
||||
|
||||
/**
|
||||
* Button used to start the simulation
|
||||
*/
|
||||
private final Button startButton = new Button("Démarrer");
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param model The editor model
|
||||
* @param view The editor view
|
||||
*/
|
||||
public EditorController(Editor model, EditorView view) {
|
||||
super(model.getGrid(), view);
|
||||
this.model = model;
|
||||
|
@ -1,11 +1,27 @@
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
/**
|
||||
* This the view for the editor
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class EditorView extends GridView {
|
||||
/**
|
||||
* Constructor
|
||||
* @param window the window
|
||||
*/
|
||||
public EditorView(Window window) {
|
||||
super(window);
|
||||
this.setBackground(new Color(193, 190, 180));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the square at the mouse position
|
||||
* @param e the mouse event
|
||||
* @return the square at the mouse position, or null if there is no square at this position
|
||||
*/
|
||||
public Square click(MouseEvent e) {
|
||||
if ((e.getX() < this.gridStartX) || (e.getX() > (this.gridStartX + this.gridSize)) || (e.getY() < this.gridStartY) || (e.getY() > (this.gridStartY + this.gridSize))) return null;
|
||||
int x = (e.getX() - this.gridStartX) / this.squareSize;
|
||||
|
@ -1,4 +1,15 @@
|
||||
/**
|
||||
* GridController
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class GridController {
|
||||
/**
|
||||
* Constructor
|
||||
* @param model The grid
|
||||
* @param view The grid's view
|
||||
*/
|
||||
public GridController(Grid model, GridView view) {
|
||||
view.setGrid(model);
|
||||
new TheseeController(model.getThesee(), view);
|
||||
|
@ -1,17 +1,51 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* Manages the display of the grid
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class GridView extends JPanel {
|
||||
/**
|
||||
* The window
|
||||
*/
|
||||
public final Window window;
|
||||
|
||||
/**
|
||||
* The grid model
|
||||
*/
|
||||
protected Grid model;
|
||||
|
||||
/**
|
||||
* The grid size in pixels
|
||||
*/
|
||||
protected int gridSize;
|
||||
|
||||
/**
|
||||
* The grid x start position in pixels
|
||||
*/
|
||||
protected int gridStartX;
|
||||
|
||||
/**
|
||||
* The grid y start position in pixels
|
||||
*/
|
||||
protected int gridStartY;
|
||||
|
||||
/**
|
||||
* The size of one square in pixels
|
||||
*/
|
||||
protected int squareSize;
|
||||
|
||||
/**
|
||||
* The font used to display the characters
|
||||
*/
|
||||
private Font font;
|
||||
|
||||
/**
|
||||
* Manages the display of the grid
|
||||
* Constructor
|
||||
* @param window The window
|
||||
*/
|
||||
public GridView(Window window) {
|
||||
super();
|
||||
@ -20,10 +54,17 @@ public class GridView extends JPanel {
|
||||
this.setPreferredSize(new Dimension(700, 500));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the grid model
|
||||
* @param model The grid model
|
||||
*/
|
||||
public void setGrid(Grid model) {
|
||||
this.model = model;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the proportions of the grid
|
||||
*/
|
||||
private void calculateProportions() {
|
||||
this.gridSize = Math.min((getHeight() - 50), getWidth()) - 10;
|
||||
this.gridStartX = (getWidth() - this.gridSize) / 2;
|
||||
@ -32,6 +73,10 @@ public class GridView extends JPanel {
|
||||
this.font = new Font("Arial", Font.PLAIN, (int) (this.squareSize * 0.75));
|
||||
}
|
||||
|
||||
/**
|
||||
* Paints the grid
|
||||
* @param g The graphics
|
||||
*/
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
|
@ -3,9 +3,19 @@ import javax.swing.filechooser.FileNameExtensionFilter;
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* The home view
|
||||
*/
|
||||
public class HomeView extends JPanel {
|
||||
/**
|
||||
* The window
|
||||
*/
|
||||
public final Window window;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param window the window
|
||||
*/
|
||||
public HomeView(Window window) {
|
||||
this.window = window;
|
||||
|
||||
@ -32,6 +42,10 @@ public class HomeView extends JPanel {
|
||||
add(panelBoutons, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the title
|
||||
* @return the title
|
||||
*/
|
||||
private static JLabel getTitre() {
|
||||
JLabel texte = new JLabel("Choisissez votre type de grille", SwingConstants.CENTER);
|
||||
texte.setPreferredSize(new Dimension(800, 50));
|
||||
@ -40,6 +54,10 @@ public class HomeView extends JPanel {
|
||||
return texte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the button to choose a grid
|
||||
* @return the button
|
||||
*/
|
||||
private Button choisirGrille() {
|
||||
Button choisirGrille = new Button("Générer une grille", new Dimension(250, 50));
|
||||
|
||||
@ -92,6 +110,10 @@ public class HomeView extends JPanel {
|
||||
return choisirGrille;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the button to import a grid
|
||||
* @return the button
|
||||
*/
|
||||
private Button importerGrille() {
|
||||
Button importerGrille = new Button("Importer une grille", new Dimension(250, 50));
|
||||
|
||||
@ -124,6 +146,7 @@ public class HomeView extends JPanel {
|
||||
/**
|
||||
* Shows a warning message if the grid size is too big
|
||||
* @param size the size of the grid
|
||||
* @param parentComponent the parent component
|
||||
* @return true if the user wants to continue, false otherwise
|
||||
*/
|
||||
public static boolean sizeWarning(JComponent parentComponent, int size) {
|
||||
@ -133,6 +156,10 @@ public class HomeView extends JPanel {
|
||||
return choice != 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Paints the background
|
||||
* @param g The graphics
|
||||
*/
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
|
@ -1,6 +1,14 @@
|
||||
import javax.swing.*;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* The main class used to launch the application
|
||||
*/
|
||||
public class Main {
|
||||
/**
|
||||
* The main method
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
Window window = new Window();
|
||||
|
||||
|
@ -67,6 +67,9 @@ public class ManualSimulationController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes the next move of the simulation
|
||||
*/
|
||||
private void move() {
|
||||
if (model.getSimulation().isEnded()) return;
|
||||
this.algo.nextMove();
|
||||
|
@ -23,6 +23,10 @@ public class ManualSimulationView extends GridView {
|
||||
super.setGrid(this.model.getGrid());
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the moves counter to the view
|
||||
* @param g The graphics
|
||||
*/
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
|
@ -1,11 +1,50 @@
|
||||
/**
|
||||
* Represents a square in the grid
|
||||
* @see Grid
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class Square {
|
||||
/**
|
||||
* The row of the square in the grid
|
||||
*/
|
||||
private final int row;
|
||||
|
||||
/**
|
||||
* The column of the square in the grid
|
||||
*/
|
||||
private final int column;
|
||||
|
||||
/**
|
||||
* The type of the square
|
||||
* 0: empty
|
||||
* 1: wall
|
||||
* 2: exit
|
||||
*/
|
||||
private int type = 0;
|
||||
|
||||
/**
|
||||
* Whether the square has been visited or not
|
||||
*/
|
||||
private boolean isVisited = false;
|
||||
|
||||
/**
|
||||
* Whether the square is accessible from Thésée's position or not
|
||||
*/
|
||||
private boolean isAccessible = false;
|
||||
|
||||
/**
|
||||
* The grid model
|
||||
*/
|
||||
private final Grid gridModel;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
* @param gridModel The grid model
|
||||
* @param row The row of the square in the grid
|
||||
* @param column The column of the square in the grid
|
||||
*/
|
||||
public Square(Grid gridModel, int row, int column) {
|
||||
this.gridModel = gridModel;
|
||||
this.row = row;
|
||||
@ -28,12 +67,17 @@ public class Square {
|
||||
return this.type == 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the current square is Thésée's position
|
||||
* @return true if the current square is Thésée's position, false otherwise
|
||||
*/
|
||||
public boolean isThesee() {
|
||||
return this.gridModel.getThesee().getSquare() == this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current square as a wall
|
||||
* @throws Exception If the current square is Thésée's position or the exit
|
||||
*/
|
||||
public void setWall() throws Exception {
|
||||
if (this.gridModel.getThesee().getSquare() == this) throw new Exception("Vous ne pouvez pas placer un mur sur la même case que Thésée. Déplacez d'abord Thésée puis réessayez.");
|
||||
@ -43,6 +87,7 @@ public class Square {
|
||||
|
||||
/**
|
||||
* Removes the existing exit from the grid (if it exists) and sets the current square as an exit
|
||||
* @throws Exception If the current square is Thésée's position
|
||||
*/
|
||||
public void setExit() throws Exception {
|
||||
if (this.gridModel.getThesee().getSquare() == this) throw new Exception("Vous ne pouvez pas placer la sortie sur la même case que Thésée. Déplacez d'abord Thésée puis réessayez.");
|
||||
@ -63,30 +108,58 @@ public class Square {
|
||||
this.type = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the row of the square in the grid
|
||||
* @return The row of the square in the grid
|
||||
*/
|
||||
public int getRow() {
|
||||
return this.row;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the column of the square in the grid
|
||||
* @return The column of the square in the grid
|
||||
*/
|
||||
public int getColumn() {
|
||||
return this.column;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the grid model
|
||||
* @return The grid model
|
||||
*/
|
||||
public Grid getGrid() {
|
||||
return this.gridModel;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the square has been visited or not
|
||||
* @return true if the current square has been visited, false otherwise
|
||||
*/
|
||||
public boolean isVisited() {
|
||||
return this.isVisited;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the square visited status
|
||||
* @param isVisited Whether the current square has been visited or not
|
||||
*/
|
||||
public void setVisited(boolean isVisited) {
|
||||
this.isVisited = isVisited;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the square is accessible from Thésée's position or not
|
||||
* @return true if the current square is accessible from Thésée's position, false otherwise
|
||||
*/
|
||||
public boolean isAccessible() {
|
||||
return this.isAccessible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the square accessibility status
|
||||
* @param isAccessible Whether the current square is accessible from Thésée's position or not
|
||||
*/
|
||||
public void setAccessible(boolean isAccessible) {
|
||||
this.isAccessible = isAccessible;
|
||||
}
|
||||
|
@ -1,8 +1,18 @@
|
||||
/**
|
||||
* Represents Thésée in the labyrinth.
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class Thesee {
|
||||
/**
|
||||
* The square where Thésée is.
|
||||
*/
|
||||
private Square square;
|
||||
|
||||
/**
|
||||
* The initial square where Thésée is.
|
||||
*/
|
||||
private Square intialSquare;
|
||||
|
||||
/**
|
||||
|
@ -1,12 +1,34 @@
|
||||
/**
|
||||
* The controller of Thésée.
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class TheseeController {
|
||||
/**
|
||||
* The model of Thésée
|
||||
*/
|
||||
private final Thesee model;
|
||||
|
||||
/**
|
||||
* The view of Thésée
|
||||
*/
|
||||
private GridView gridView;
|
||||
|
||||
/**
|
||||
* Constructor (with view)
|
||||
* @param model The model of Thésée
|
||||
* @param gridView The view of Thésée
|
||||
*/
|
||||
public TheseeController(Thesee model, GridView gridView) {
|
||||
this.model = model;
|
||||
this.gridView = gridView;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor (without view)
|
||||
* @param model The model of Thésée
|
||||
*/
|
||||
public TheseeController(Thesee model) {
|
||||
this.model = model;
|
||||
}
|
||||
|
@ -2,9 +2,26 @@ import javax.swing.JFrame;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Toolkit;
|
||||
|
||||
/**
|
||||
* Window class that extends JFrame with custom settings for the program.
|
||||
* @version 1.0
|
||||
* @author Amir Daouadi
|
||||
* @author Lyanis Souidi
|
||||
*/
|
||||
public class Window extends JFrame {
|
||||
/**
|
||||
* The title of the program.
|
||||
*/
|
||||
private static final String programTitle = "Labyrinthe";
|
||||
|
||||
/**
|
||||
* The title of the current page.
|
||||
*/
|
||||
private String pageTitle = "";
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public Window() {
|
||||
super(programTitle);
|
||||
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
||||
@ -15,10 +32,18 @@ public class Window extends JFrame {
|
||||
this.setMinimumSize(new Dimension(800, 850));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the title of the current page.
|
||||
* @return The title of the current page.
|
||||
*/
|
||||
public String getPageTitle() {
|
||||
return this.pageTitle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the title of the current page.
|
||||
* @param title The title of the current page.
|
||||
*/
|
||||
public void setPageTitle(String title) {
|
||||
this.pageTitle = title;
|
||||
this.setTitle(this.pageTitle + " - " + Window.programTitle);
|
||||
|
Loading…
Reference in New Issue
Block a user