Skip to content
Snippets Groups Projects
Commit 02bba2ec authored by Pouchet Pierre's avatar Pouchet Pierre
Browse files
parents adb5abf9 c678116b
No related merge requests found
......@@ -25,6 +25,16 @@ Window {
property string mot: ""
property var mot_split: []
property var keysArray: []
function changeKeyColor(letter, newColor) {
for (var i = 0; i < keysArray.length; i++) {
if (keysArray[i].keyLetter === letter) {
keysArray[i].keyColor = newColor;
}
}
}
// Rectangle principal qui couvre la fenêtre
Rectangle {
id: mainRect
......@@ -57,21 +67,45 @@ Window {
else if (event.key === Qt.Key_Return) {
// On ne passe à la ligne suivante que si la ligne est complètement remplie
if (indice_case === nb_lettres) {
var mot_entre = "";
// Construire le mot entré en majuscules
var candidate = [];
for (var i = 0; i < nb_lettres; i++){
mot_entre += caseArray[current_essai * nb_lettres + i]._textText;
candidate[i] = caseArray[current_essai * nb_lettres + i]._textText.toUpperCase();
}
<<<<<<< Updated upstream
console.log("Mot entré :", mot_entre.toUpperCase());
if (motusGame.existWord(mot_entre.toUpperCase())){
// Vérification de la proposition sur la ligne actuelle
=======
var mot_entre = candidate.join("");
console.log("Mot entré :", mot_entre);
if (motusGame.existWord(mot_entre)) {
// Le mot existe, on procède à l'évaluation avec gestion des doublons
var target = mot_split.map(function(letter) {
return letter.toUpperCase();
});
// Construire un tableau de fréquence des lettres du mot cible
var targetCounts = {};
>>>>>>> Stashed changes
for (var i = 0; i < nb_lettres; i++) {
var case_verif = caseArray[current_essai * nb_lettres + i];
var lettre_verif = case_verif._textText;
if (lettre_verif === mot_split[i].toUpperCase()) {
case_verif.rectangleColor = "#42cc3d";
case_verif.rectangleBordercolor = "#42cc3d";
var letter = target[i];
targetCounts[letter] = (targetCounts[letter] || 0) + 1;
}
// Tableau pour stocker la couleur à appliquer pour chaque case.
// Par défaut, on ne change pas le style (chaine vide)
var resultColors = new Array(nb_lettres);
// Première passe : marquer en vert les lettres bien placées
for (var i = 0; i < nb_lettres; i++) {
if (candidate[i] === target[i]) {
resultColors[i] = "#42cc3d"; // vert
targetCounts[candidate[i]]--;
} else {
<<<<<<< Updated upstream
for (var j = 0; j < nb_lettres; j++) {
if (lettre_verif === mot_split[j].toUpperCase()) {
......@@ -101,17 +135,48 @@ Window {
}
// Passage à la ligne suivante si possible
=======
resultColors[i] = ""; // ne pas modifier le style
}
}
// Deuxième passe : marquer en jaune les lettres présentes mais mal placées
for (var i = 0; i < nb_lettres; i++) {
if (resultColors[i] === "") { // lettre non marquée en vert
var letter = candidate[i];
if (targetCounts[letter] && targetCounts[letter] > 0) {
resultColors[i] = "#f0d437"; // jaune
targetCounts[letter]--;
}
// Sinon, resultColors[i] reste vide pour conserver le style de base
}
}
// Appliquer les couleurs aux cases et aux touches uniquement si une couleur est définie
for (var i = 0; i < nb_lettres; i++) {
var case_verif = caseArray[current_essai * nb_lettres + i];
if (resultColors[i] !== "") {
case_verif.rectangleColor = resultColors[i];
case_verif.rectangleBordercolor = resultColors[i];
changeKeyColor(candidate[i], resultColors[i]);
}
}
// Passage à la ligne suivante et mise à jour du focus
>>>>>>> Stashed changes
if (current_essai < nb_essais - 1) {
current_essai++;
indice_case = 0;
case_focus = caseArray[current_essai * nb_lettres];
} else {
// Fin de partie : vous pouvez désactiver l'interface ou afficher un message
// Fin de partie : désactiver l'interface ou afficher un message
mot = "";
}
} else {
// Le mot n'existe pas dans le dictionnaire : coloration en rouge puis réinitialisation
for (i = 0; i < nb_lettres; i++) {
case_verif = caseArray[current_essai * nb_lettres + i];
// Le mot n'existe pas dans le dictionnaire :
// Colorer toute la ligne en rouge
for (var i = 0; i < nb_lettres; i++) {
var case_verif = caseArray[current_essai * nb_lettres + i];
case_verif.rectangleColor = "#cf1b2a";
case_verif.rectangleBordercolor = "#cf1b2a";
}
......@@ -120,6 +185,7 @@ Window {
event.accepted = true;
}
}
}
}
// Disposition globale en colonne
......@@ -153,7 +219,6 @@ Window {
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.leftMargin: 0.05*Window.width
anchors.verticalCenterOffset: 20
Column {
id: column_buttons
......@@ -383,9 +448,10 @@ Window {
delegate: Rectangle {
width: (modelData === "Entrée" || modelData === "<") ? 80 : 50
height: 60
color: "#808080"
color: keyColor // Lier la couleur affichée à keyColor
radius: 5
border.color: "#808080"
border.color: keyColor // Pareil pour la bordure
Text {
anchors.centerIn: parent
text: modelData
......@@ -415,14 +481,16 @@ Window {
}
}
}
Component.onCompleted: {
// Enregistrer chaque touche dans keysArray pour y accéder plus tard
mainWindow.keysArray.push(keyRect)
}
}
}
}
}
}
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment