Squashed commit of the following:
commit41f1be6be7Author: ROGER <gwendal.roger@etu.univ-lyon1.fr> Date: Tue Feb 4 16:18:24 2025 +0100 04/02/2025 : Ajout de Console.errorln pour les remontée d'erreurs commitef3506c4ebAuthor: ROGER <gwendal.roger@etu.univ-lyon1.fr> Date: Tue Feb 4 16:07:59 2025 +0100 04/02/2025 : Ajout de la JavaDoc commitf57aa34d36Author: Morph01 <thibaut6969delastreet@gmail.com> Date: Mon Feb 3 11:37:12 2025 +0100 Squashed commit of the following: commit 60c1634e1a159bf992b2ed1cdff632490294c48b Author: Morph01 <thibaut6969delastreet@gmail.com> Date: Mon Feb 3 11:36:25 2025 +0100 fix: remove .idea et .vscode
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -30,3 +30,6 @@ replay_pid*
|
||||
|
||||
# Ignore Gradle build output directory
|
||||
build
|
||||
|
||||
.idea
|
||||
.vscode
|
||||
|
||||
3
.idea/.gitignore
generated
vendored
3
.idea/.gitignore
generated
vendored
@@ -1,3 +0,0 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
6
.idea/compiler.xml
generated
6
.idea/compiler.xml
generated
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel target="1.8" />
|
||||
</component>
|
||||
</project>
|
||||
17
.idea/gradle.xml
generated
17
.idea/gradle.xml
generated
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
<option value="$PROJECT_DIR$/app" />
|
||||
</set>
|
||||
</option>
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
20
.idea/jarRepositories.xml
generated
20
.idea/jarRepositories.xml
generated
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="MavenRepo" />
|
||||
<option name="name" value="MavenRepo" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
||||
5
.idea/misc.xml
generated
5
.idea/misc.xml
generated
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
|
||||
</project>
|
||||
124
.idea/uiDesigner.xml
generated
124
.idea/uiDesigner.xml
generated
@@ -1,124 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
88
.idea/workspace.xml
generated
88
.idea/workspace.xml
generated
@@ -1,88 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="78fccc4f-112b-4fb4-8f59-c375aeac8595" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/app/src/main/java/sudoku/Symbole.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/sudoku/Symbole.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ExternalProjectsData">
|
||||
<projectState path="$PROJECT_DIR$">
|
||||
<ProjectState />
|
||||
</projectState>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="ProjectColorInfo"><![CDATA[{
|
||||
"associatedIndex": 6
|
||||
}]]></component>
|
||||
<component name="ProjectId" id="2rwHskpjH0QskAu0G8vmtPc1Ozz" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"git-widget-placeholder": "feature/solveur",
|
||||
"kotlin-language-version-configured": "true",
|
||||
"last_opened_file_path": "/usr/lib/jvm/java-21-openjdk",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"project.structure.last.edited": "Project",
|
||||
"project.structure.proportion": "0.0",
|
||||
"project.structure.side.proportion": "0.0",
|
||||
"settings.editor.selected.configurable": "reference.projectsettings.compiler.javacompiler",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
}
|
||||
}]]></component>
|
||||
<component name="RunManager">
|
||||
<configuration default="true" type="JetRunConfigurationType">
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
<configuration default="true" type="KotlinStandaloneScriptRunConfigurationType">
|
||||
<option name="filePath" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-jdk-9823dce3aa75-125ca727e0f0-intellij.indexing.shared.core-IU-243.23654.117" />
|
||||
<option value="bundled-js-predefined-d6986cc7102b-822845ee3bb5-JavaScript-IU-243.23654.117" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="78fccc4f-112b-4fb4-8f59-c375aeac8595" name="Changes" comment="" />
|
||||
<created>1737463425999</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1737463425999</updated>
|
||||
<workItem from="1737463427147" duration="1086000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
<component name="XSLT-Support.FileAssociations.UIState">
|
||||
<expand />
|
||||
<select />
|
||||
</component>
|
||||
</project>
|
||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"java.configuration.updateBuildConfiguration": "automatic"
|
||||
}
|
||||
@@ -5,6 +5,10 @@ public class App {
|
||||
return "Hello World!";
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode main permettant de lancer l'application sudoku et d'afficher les erreurs s'il y en a.
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
System.out.println(new App().getGreeting());
|
||||
|
||||
|
||||
@@ -2,30 +2,72 @@ package sudoku;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Bloc {
|
||||
private final List<Case> cases;
|
||||
private final String couleur;
|
||||
private final int couleurIndex;
|
||||
|
||||
/**
|
||||
* Constructeur permettant de créer un bloc de couleur
|
||||
* @param couleur
|
||||
* @param couleurIndex
|
||||
*/
|
||||
public Bloc(String couleur, int couleurIndex) {
|
||||
this.cases = new ArrayList<>();
|
||||
this.couleur = couleur;
|
||||
this.couleurIndex = couleurIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant d'ajouter une case à un bloc
|
||||
* @param c
|
||||
*/
|
||||
public void ajouterCase(Case c) {
|
||||
cases.add(c);
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de savoir si une case contient un symbole précis
|
||||
* @param s
|
||||
* @return
|
||||
*/
|
||||
public boolean contains(Symbole s) {
|
||||
for (Case c : cases) {
|
||||
if (c.getSymbole().equals(s)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de renvoyer la couleur d'un bloc
|
||||
* @return
|
||||
*/
|
||||
public String getCouleur() {
|
||||
return couleur;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de renvoyer l'index de couleur d'un bloc
|
||||
* @return
|
||||
*/
|
||||
public int getCouleurIndex() {
|
||||
return couleurIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de renvoyer une liste de cases associée à un bloc
|
||||
* @return
|
||||
*/
|
||||
public List<Case> getCases() {
|
||||
return cases;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant d'afficher un bloc complet avec les cases qui le compose
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Bloc [cases=" + cases + ", couleur=" + couleur + ", couleurIndex=" + couleurIndex + " \u001B[0m]";
|
||||
|
||||
@@ -5,28 +5,54 @@ public class Case {
|
||||
private final int colonne;
|
||||
private Symbole symbole;
|
||||
|
||||
/**
|
||||
* Constructeur permettant de créer une case grace aux paramètres suivants :
|
||||
* @param ligne
|
||||
* @param colonne
|
||||
* @param symbole
|
||||
*/
|
||||
public Case(int ligne, int colonne, Symbole symbole) {
|
||||
this.ligne = ligne;
|
||||
this.colonne = colonne;
|
||||
this.symbole = symbole;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de renvoyer la coordonnée de la ligne qui compose la case
|
||||
* @return
|
||||
*/
|
||||
public int getLigne() {
|
||||
return ligne;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de renvoyer la coordonnée de la colonne qui compose la case
|
||||
* @return
|
||||
*/
|
||||
public int getColonne() {
|
||||
return colonne;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de renvoyer le symbole qui compose la case
|
||||
* @return
|
||||
*/
|
||||
public Symbole getSymbole() {
|
||||
return symbole;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de modifier le symbole qui compose la case
|
||||
* @param symbole
|
||||
*/
|
||||
public void setSymbole(Symbole symbole) {
|
||||
this.symbole = symbole;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode qui permet d'afficher le symbole de la case ou "-" si la case est vide
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return (symbole == null) ? "-" : symbole.toString();
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package sudoku;
|
||||
|
||||
/**
|
||||
* Interface permettant d'évaluer toutes les contraintes et de retourner un boolean indiquant si elles ont étés respectées.
|
||||
*/
|
||||
public interface Contrainte {
|
||||
boolean estRespectee(Grille grille, Case c);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
package sudoku;
|
||||
|
||||
public class ContrainteBloc implements Contrainte {
|
||||
/**
|
||||
* Méthode permettant de savoir si l'ensemble des contraintes concernant le bloc sont respectées.</br>
|
||||
* Renvoie 0 si au moins l'une des contraintes n'est pas respectée </br>
|
||||
* Renvoie 1 si toutes les contraintes sont respectées
|
||||
* @param grille
|
||||
* @param c
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean estRespectee(Grille grille, Case c) {
|
||||
int blocSize = (int) Math.sqrt(grille.getTaille());
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
package sudoku;
|
||||
|
||||
public class ContrainteColonne implements Contrainte {
|
||||
/**
|
||||
* Méthode permettant de savoir si l'ensemble des contraintes concernant la colonne sont respectées.</br>
|
||||
* Renvoie 0 si au moins l'une des contraintes n'est pas respectée</br>
|
||||
* Renvoie 1 si toutes les contraintes sont respectées
|
||||
* @param grille
|
||||
* @param c
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean estRespectee(Grille grille, Case c) {
|
||||
int colonne = c.getColonne();
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
package sudoku;
|
||||
|
||||
public class ContrainteLigne implements Contrainte {
|
||||
/**
|
||||
* Méthode permettant de savoir si l'ensemble des contraintes concernant la ligne sont respectées.</br>
|
||||
* Renvoie 0 si au moins l'une des contraintes n'est pas respectée</br>
|
||||
* Renvoie 1 si toutes les contraintes sont respectées
|
||||
* @param grille
|
||||
* @param c
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean estRespectee(Grille grille, Case c) {
|
||||
int ligne = c.getLigne();
|
||||
|
||||
@@ -17,6 +17,11 @@ public class Grille {
|
||||
private Multidoku multidoku; // Référence à Multidoku
|
||||
private List<String> generatedColors;
|
||||
|
||||
/**
|
||||
* Constructeur permettant d'initialiser une griller grace aux paramètres suivants :
|
||||
* @param taille
|
||||
* @param sudoku
|
||||
*/
|
||||
public Grille(int taille, Sudoku sudoku) {
|
||||
this.taille = taille;
|
||||
this.cases = new Case[taille][taille];
|
||||
@@ -79,6 +84,12 @@ public class Grille {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de connaitre la valeur d'une case (symbole) grace aux paramètres suivants :
|
||||
* @param ligne
|
||||
* @param colonne
|
||||
* @return
|
||||
*/
|
||||
public Case getCase(int ligne, int colonne) {
|
||||
return cases[ligne][colonne];
|
||||
}
|
||||
@@ -274,17 +285,29 @@ public class Grille {
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Console.errorln("Une erreur est survenue : " + e.getMessage());
|
||||
Console.errorln("Une erreur est survenue : " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de retourner la liste des symboles possible. Cela dépend de ce qu'a saisit l'utilisateur dans la méthode askSetSymbolesPossibles
|
||||
* @return
|
||||
*/
|
||||
public List<Symbole> getSymbolesPossibles() {
|
||||
return symbolesPossibles;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant d'ajouter un symbole à la liste des symboles possibles
|
||||
* @param symbolesPossibles
|
||||
*/
|
||||
public void setSymbolesPossibles(ArrayList<Symbole> symbolesPossibles) {
|
||||
this.symbolesPossibles = symbolesPossibles;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant d'afficher la liste des symboles possibles
|
||||
*/
|
||||
public void printSymbolesPossibles() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (Symbole symbole : symbolesPossibles) {
|
||||
@@ -293,6 +316,10 @@ public class Grille {
|
||||
System.out.println(sb);
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de retourner la taille de la grille
|
||||
* @return
|
||||
*/
|
||||
public int getTaille() {
|
||||
return taille;
|
||||
}
|
||||
@@ -334,6 +361,10 @@ public class Grille {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de retourner la longueure du symbole le plus long pour dimensionner corectement les cases et la grille
|
||||
* @return
|
||||
*/
|
||||
public int getLongueurSymboleLePlusLong() {
|
||||
int max = 0;
|
||||
for (Symbole symbole : symbolesPossibles) {
|
||||
@@ -344,6 +375,10 @@ public class Grille {
|
||||
return max;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant d'afficher la grille
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@@ -6,6 +6,14 @@ import sudoku.core.Console;
|
||||
|
||||
public class ResolveurBacktraceSimple implements Resolveur {
|
||||
|
||||
/**
|
||||
* Méthode permettant de résoudre un sudoku à partir des paramètres suivant :</br>
|
||||
* - S : Sudoku</br>
|
||||
* - afficherEtape : 0 ou 1
|
||||
* @param s
|
||||
* @param afficherEtape
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean resoudre(Sudoku s, boolean afficherEtape) {
|
||||
EtatResolution etat = new EtatResolution(0, 0);
|
||||
@@ -45,15 +53,27 @@ public class ResolveurBacktraceSimple implements Resolveur {
|
||||
return true; // Si la grille est déjà résolue
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant d'afficher le sudoku à chaque étape de sa résolution
|
||||
* @param s
|
||||
* @param compteur
|
||||
* @param compteurGeneral
|
||||
*/
|
||||
private void afficherEtapeResolution(Sudoku s, int compteur, int compteurGeneral) {
|
||||
System.out.println("Sudoku, Etape " + compteur + " (Tentative " + compteurGeneral + ")");
|
||||
System.out.println(s.getGrille().toString());
|
||||
}
|
||||
|
||||
|
||||
private static class EtatResolution {
|
||||
int compteur;
|
||||
int compteurGeneral;
|
||||
|
||||
/**
|
||||
* Méthode permettant de fixer l'état de la résolution
|
||||
* @param compteur
|
||||
* @param compteurGeneral
|
||||
*/
|
||||
EtatResolution(int compteur, int compteurGeneral) {
|
||||
this.compteur = compteur;
|
||||
this.compteurGeneral = compteurGeneral;
|
||||
|
||||
@@ -14,6 +14,10 @@ public class Sudoku {
|
||||
private final List<Contrainte> contraintes;
|
||||
private String nom;
|
||||
|
||||
/**
|
||||
* Constructeur permettant d'initialiser un sudoku à partir de la taille de sa grille
|
||||
* @param taille
|
||||
*/
|
||||
public Sudoku(int taille) {
|
||||
this.grille = new Grille(taille, this);
|
||||
this.contraintes = new ArrayList<>();
|
||||
@@ -56,6 +60,10 @@ public class Sudoku {
|
||||
return grille.verifierToutesContraintes(contraintes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de retourner la grille complète
|
||||
* @return
|
||||
*/
|
||||
public Grille getGrille() {
|
||||
return grille;
|
||||
}
|
||||
@@ -331,10 +339,10 @@ public class Sudoku {
|
||||
try {
|
||||
tailleGrille = Integer.parseInt(scanner.nextLine());
|
||||
if (tailleGrille <= 0) {
|
||||
System.out.println("Erreur : Veuillez entrer un entier positif.");
|
||||
Console.errorln("Erreur : Veuillez entrer un entier positif.");
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
System.out.println("Erreur : Entrée invalide. Veuillez entrer un nombre.");
|
||||
Console.errorln("Erreur : Entrée invalide. Veuillez entrer un nombre.");
|
||||
}
|
||||
}
|
||||
return tailleGrille;
|
||||
@@ -400,14 +408,14 @@ public class Sudoku {
|
||||
break; // Sortie de la boucle si l'utilisateur tape ESC
|
||||
}
|
||||
if (input.isEmpty()) {
|
||||
System.out.println("Veuillez entrer un numéro de ligne valide.");
|
||||
Console.errorln("Veuillez entrer un numéro de ligne valide.");
|
||||
continue; // Recommencer la saisie de la ligne si l'entrée est vide
|
||||
}
|
||||
try {
|
||||
ligne = Integer.parseInt(input); // Convertir la ligne en entier
|
||||
break; // Sortir de la boucle si la ligne est valide
|
||||
} catch (NumberFormatException e) {
|
||||
System.out.println("Veuillez entrer un numéro de ligne valide (un nombre entier).");
|
||||
Console.errorln("Veuillez entrer un numéro de ligne valide (un nombre entier).");
|
||||
}
|
||||
}
|
||||
// ARRET DE LA BOUCLE SI SAISIE DE "ESC"
|
||||
@@ -421,14 +429,14 @@ public class Sudoku {
|
||||
System.out.println("Entrez le numéro de colonne :");
|
||||
input = scanner.nextLine(); // Lire la colonne
|
||||
if (input.isEmpty()) {
|
||||
System.out.println("Veuillez entrer un numéro de colonne valide.");
|
||||
Console.errorln("Veuillez entrer un numéro de colonne valide.");
|
||||
continue; // Recommencer la saisie de la colonne si l'entrée est vide
|
||||
}
|
||||
try {
|
||||
colonne = Integer.parseInt(input); // Convertir la colonne en entier
|
||||
break; // Sortir de la boucle si la colonne est valide
|
||||
} catch (NumberFormatException e) {
|
||||
System.out.println("Veuillez entrer un numéro de colonne valide (un nombre entier).");
|
||||
Console.errorln("Veuillez entrer un numéro de colonne valide (un nombre entier).");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -438,7 +446,7 @@ public class Sudoku {
|
||||
System.out.println("Entrez le symbole :");
|
||||
symbole = scanner.nextLine(); // Lire le symbole
|
||||
if (symbole.isEmpty()) {
|
||||
System.out.println("Veuillez entrer un symbole valide.");
|
||||
Console.errorln("Veuillez entrer un symbole valide.");
|
||||
continue; // Recommencer la saisie du symbole si l'entrée est vide
|
||||
}
|
||||
try {
|
||||
@@ -501,7 +509,7 @@ public class Sudoku {
|
||||
// Vérification des limites
|
||||
if (choixLigne < 0 || choixLigne >= tailleGrille || choixColonne < 0
|
||||
|| choixColonne >= tailleGrille) {
|
||||
System.out.println("Erreur : Coordonnées hors limites ! Veuillez réessayer.");
|
||||
Console.errorln("Erreur : Coordonnées hors limites ! Veuillez réessayer.");
|
||||
coordonneesValides = false;
|
||||
continue;
|
||||
}
|
||||
@@ -509,7 +517,7 @@ public class Sudoku {
|
||||
// Vérification si la coordonnée existe déjà dans TOUTE la grille
|
||||
String coordonneeStr = choixLigne + "-" + choixColonne;
|
||||
if (toutesLesCoordonnees.contains(coordonneeStr)) {
|
||||
System.out.println(
|
||||
Console.errorln(
|
||||
"Erreur : Ces coordonnées sont déjà utilisées dans un autre bloc ! Veuillez en entrer une nouvelle.");
|
||||
coordonneesValides = false;
|
||||
}
|
||||
@@ -526,7 +534,7 @@ public class Sudoku {
|
||||
sudoku.getGrille().creerBlocPersonnalise(listeCases);
|
||||
System.out.println("Bloc " + nombreBloc + " enregistré avec succès !");
|
||||
} catch (IllegalArgumentException e) {
|
||||
System.out.println("Erreur lors de la création du bloc : " + e.getMessage());
|
||||
Console.errorln("Erreur lors de la création du bloc : " + e.getMessage());
|
||||
System.out.println("Veuillez recommencer la saisie de ce bloc.");
|
||||
continue; // Recommence le bloc en cours
|
||||
}
|
||||
|
||||
@@ -3,23 +3,46 @@ package sudoku;
|
||||
public class Symbole {
|
||||
private final String valeur;
|
||||
|
||||
/**
|
||||
* Constructeur permettant de créer un symbole
|
||||
* @param symbole
|
||||
*/
|
||||
public Symbole(String symbole) {
|
||||
this.valeur = symbole;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de créer un symbole de type String
|
||||
* @param s
|
||||
* @return
|
||||
*/
|
||||
// Factory methods pour différents types
|
||||
public static Symbole of(String s) {
|
||||
return new Symbole(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de créer un symbole de type int
|
||||
* @param n
|
||||
* @return
|
||||
*/
|
||||
public static Symbole of(int n) {
|
||||
return new Symbole(String.valueOf(n));
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de créer un symbole de type char
|
||||
* @param c
|
||||
* @return
|
||||
*/
|
||||
public static Symbole of(char c) {
|
||||
return new Symbole(String.valueOf(c));
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de vérifier si un symbole est de type int
|
||||
* @return
|
||||
*/
|
||||
public boolean isInt() {
|
||||
try {
|
||||
Integer.parseInt(valeur);
|
||||
@@ -29,15 +52,28 @@ public class Symbole {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de vérifier si un symbole est de type letter (char)
|
||||
* @return
|
||||
*/
|
||||
public boolean isLetter() {
|
||||
return valeur.length() == 1 && Character.isLetter(valeur.charAt(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de vérifier si un symbole est de type string
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return valeur;
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de retourner un booléen si 2 objets sont identiques
|
||||
* @param obj
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
|
||||
Reference in New Issue
Block a user