Skip to content
Snippets Groups Projects
Commit 8c8bf9d3 authored by Massies Alexandre's avatar Massies Alexandre
Browse files

update stashes

parent c678116b
No related branches found
No related tags found
No related merge requests found
import QtQuick 2.12 import QtQuick 2.12
import QtQuick.Window 2.12 import QtQuick.Window 2.12
import QtQuick.Controls 2.12 import QtQuick.Controls 2.12
...@@ -42,13 +41,13 @@ Window { ...@@ -42,13 +41,13 @@ Window {
color: "#323232" color: "#323232"
focus: true focus: true
// Gestion des touches du clavier physique (déclarée sous forme de fonction) // Gestion des touches du clavier physique
Keys.onPressed: function(event) { Keys.onPressed: function(event) {
if (mot != ""){ if (mot !== "") {
// Saisie d'une lettre (de A à Z) // Saisie d'une lettre (de A à Z)
if (/^[a-zA-Z]$/.test(event.text)) { if (/^[a-zA-Z]$/.test(event.text)) {
if (indice_case < nb_lettres) { // On s'assure de ne pas dépasser la ligne if (indice_case < nb_lettres) { // On s'assure de ne pas dépasser la ligne
let cellIndex = current_essai * nb_lettres + indice_case; var cellIndex = current_essai * nb_lettres + indice_case;
caseArray[cellIndex]._textText = event.text.toUpperCase(); caseArray[cellIndex]._textText = event.text.toUpperCase();
indice_case++; indice_case++;
event.accepted = true; event.accepted = true;
...@@ -56,94 +55,65 @@ Window { ...@@ -56,94 +55,65 @@ Window {
} }
// Gestion de la touche Backspace // Gestion de la touche Backspace
else if (event.key === Qt.Key_Backspace) { else if (event.key === Qt.Key_Backspace) {
if (indice_case > 0) { // On peut effacer si on a déjà saisi une lettre if (indice_case > 0) {
indice_case--; indice_case--;
let cellIndex = current_essai * nb_lettres + indice_case; var cellIndex = current_essai * nb_lettres + indice_case;
caseArray[cellIndex]._textText = ""; caseArray[cellIndex]._textText = "";
event.accepted = true; event.accepted = true;
} }
} }
// Passage à la ligne suivante avec la touche Entrée // Passage à la ligne suivante avec la touche Entrée
else if (event.key === Qt.Key_Return) { 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) { if (indice_case === nb_lettres) {
// Construire le mot entré en majuscules // Construire le mot entré en majuscules
var candidate = []; var candidate = [];
for (var i = 0; i < nb_lettres; i++){ for (var i = 0; i < nb_lettres; i++){
candidate[i] = caseArray[current_essai * nb_lettres + i]._textText.toUpperCase(); 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(""); var mot_entre = candidate.join("");
console.log("Mot entré :", mot_entre); console.log("Mot entré :", mot_entre);
if (motusGame.existWord(mot_entre)) { if (motusGame.existWord(mot_entre)) {
// Le mot existe, on procède à l'évaluation avec gestion des doublons // Le mot existe, on procède à l'évaluation
// Préparer le mot cible en majuscules (mot_split contient le mot à deviner)
var target = mot_split.map(function(letter) { var target = mot_split.map(function(letter) {
return letter.toUpperCase(); return letter.toUpperCase();
}); });
// Construire un tableau de fréquence des lettres du mot cible // Construire un tableau de fréquence des lettres du mot cible
var targetCounts = {}; var targetCounts = {};
>>>>>>> Stashed changes
for (var i = 0; i < nb_lettres; i++) { for (var i = 0; i < nb_lettres; i++) {
var letter = target[i]; var letter = target[i];
targetCounts[letter] = (targetCounts[letter] || 0) + 1; targetCounts[letter] = (targetCounts[letter] || 0) + 1;
} }
// Tableau pour stocker la couleur à appliquer pour chaque case. // Tableau pour stocker la couleur à appliquer pour chaque case.
// Par défaut, on ne change pas le style (chaine vide) // Par défaut, on ne change pas le style (chaîne vide)
var resultColors = new Array(nb_lettres); var resultColors = new Array(nb_lettres);
// Première passe : marquer en vert les lettres bien placées // Première passe : lettres bien placées (vert)
for (var i = 0; i < nb_lettres; i++) { for (var i = 0; i < nb_lettres; i++) {
if (candidate[i] === target[i]) { if (candidate[i] === target[i]) {
resultColors[i] = "#42cc3d"; // vert resultColors[i] = "#42cc3d"; // vert
targetCounts[candidate[i]]--; targetCounts[candidate[i]]--;
} else { } else {
<<<<<<< Updated upstream resultColors[i] = ""; // ne change pas le style de base
for (var j = 0; j < nb_lettres; j++) {
if (lettre_verif === mot_split[j].toUpperCase()) {
case_verif.rectangleColor = "#f0d437";
case_verif.rectangleBordercolor = "#f0d437";
break;
}
}
}
}
if (mot_entre.toUpperCase() === mot.toUpperCase()) {
motusGame.setWinbool(true);
console.log("✅ Victoire !");
}
// 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 // Deuxième passe : lettres présentes mais mal placées (jaune)
for (var i = 0; i < nb_lettres; i++) { for (var i = 0; i < nb_lettres; i++) {
if (resultColors[i] === "") { // lettre non marquée en vert if (resultColors[i] === "") {
var letter = candidate[i]; var letter = candidate[i];
if (targetCounts[letter] && targetCounts[letter] > 0) { if (targetCounts[letter] && targetCounts[letter] > 0) {
resultColors[i] = "#f0d437"; // jaune resultColors[i] = "#f0d437"; // jaune
targetCounts[letter]--; targetCounts[letter]--;
} }
// Sinon, resultColors[i] reste vide pour conserver le style de base // Sinon, resultColors[i] reste vide et le style de base est conservé
} }
} }
// Appliquer les couleurs aux cases et aux touches uniquement si une couleur est définie // Appliquer les couleurs aux cases et aux touches si une couleur a été définie
for (var i = 0; i < nb_lettres; i++) { for (var i = 0; i < nb_lettres; i++) {
var case_verif = caseArray[current_essai * nb_lettres + i]; var case_verif = caseArray[current_essai * nb_lettres + i];
if (resultColors[i] !== "") { if (resultColors[i] !== "") {
...@@ -153,8 +123,13 @@ Window { ...@@ -153,8 +123,13 @@ Window {
} }
} }
// Vérifier si le mot entré correspond exactement au mot à deviner
if (mot_entre.toUpperCase() === mot.toUpperCase()) {
motusGame.setWinbool(true);
console.log("✅ Victoire !");
}
// Passage à la ligne suivante et mise à jour du focus // Passage à la ligne suivante et mise à jour du focus
>>>>>>> Stashed changes
if (current_essai < nb_essais - 1) { if (current_essai < nb_essais - 1) {
current_essai++; current_essai++;
indice_case = 0; indice_case = 0;
...@@ -164,8 +139,7 @@ Window { ...@@ -164,8 +139,7 @@ Window {
mot = ""; mot = "";
} }
} else { } else {
// Le mot n'existe pas dans le dictionnaire : // Le mot n'existe pas dans le dictionnaire : colorer toute la ligne en rouge
// Colorer toute la ligne en rouge
for (var i = 0; i < nb_lettres; i++) { for (var i = 0; i < nb_lettres; i++) {
var case_verif = caseArray[current_essai * nb_lettres + i]; var case_verif = caseArray[current_essai * nb_lettres + i];
case_verif.rectangleColor = "#cf1b2a"; case_verif.rectangleColor = "#cf1b2a";
...@@ -176,20 +150,18 @@ Window { ...@@ -176,20 +150,18 @@ Window {
event.accepted = true; event.accepted = true;
} }
} }
} }
} }
// Disposition globale en colonne
// Timer pour réinitialiser le style de la ligne en cas de mot inexistant
Timer { Timer {
id: revertTimer id: revertTimer
interval: 1000 // 1 seconde (1000 millisecondes) interval: 1000 // 1 seconde
repeat: false // Ne se répète pas repeat: false
onTriggered: { onTriggered: {
// Réinitialiser la couleur console.log("Réinitialisation du style de la ligne");
console.log('coucou'); for (var i = 0; i < nb_lettres; i++) {
for (var ind = 0; ind < nb_lettres; ind++) { var case_verif = caseArray[current_essai * nb_lettres + i];
var case_verif = caseArray[current_essai * nb_lettres + ind];
case_verif.rectangleColor = "#323232"; case_verif.rectangleColor = "#323232";
case_verif.rectangleBordercolor = "#ffffff"; case_verif.rectangleBordercolor = "#ffffff";
} }
...@@ -198,9 +170,7 @@ Window { ...@@ -198,9 +170,7 @@ Window {
Row { Row {
id: main_row id: main_row
anchors.fill: parent anchors.fill: parent
spacing: 150 spacing: 150
Rectangle { Rectangle {
...@@ -233,12 +203,13 @@ Window { ...@@ -233,12 +203,13 @@ Window {
MouseArea { MouseArea {
anchors.fill: parent anchors.fill: parent
cursorShape: Qt.PointingHandCursor cursorShape: Qt.PointingHandCursor
onClicked: { // début d'une game, il faut bloquer les boutons de régénération etc onClicked: {
// Début d'une partie, désactivation des boutons de régénération, etc.
mot = motusGame.getRandomWord(nb_lettres); mot = motusGame.getRandomWord(nb_lettres);
motusGame.startTimer(); motusGame.startTimer();
case3._textText = mot; case3._textText = mot;
mot_split = mot.split(""); mot_split = mot.split("");
console.log(mot_split) console.log(mot_split);
} }
} }
} }
...@@ -405,7 +376,6 @@ Window { ...@@ -405,7 +376,6 @@ Window {
} }
} }
Rectangle { Rectangle {
id: rectangle1 id: rectangle1
width: 600 width: 600
...@@ -418,7 +388,6 @@ Window { ...@@ -418,7 +388,6 @@ Window {
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.bottomMargin: 50 anchors.bottomMargin: 50
Column { Column {
anchors.fill: parent anchors.fill: parent
anchors.margins: 10 anchors.margins: 10
...@@ -439,11 +408,15 @@ Window { ...@@ -439,11 +408,15 @@ Window {
Repeater { Repeater {
model: modelData model: modelData
delegate: Rectangle { delegate: Rectangle {
id: keyRect
property string keyLetter: modelData // Stocke la lettre associée
property color keyColor: "#808080" // Couleur par défaut
width: (modelData === "Entrée" || modelData === "<") ? 80 : 50 width: (modelData === "Entrée" || modelData === "<") ? 80 : 50
height: 60 height: 60
color: keyColor // Lier la couleur affichée à keyColor color: keyColor // Liaison dynamique avec keyColor
radius: 5 radius: 5
border.color: keyColor // Pareil pour la bordure border.color: keyColor // Même couleur pour la bordure
Text { Text {
anchors.centerIn: parent anchors.centerIn: parent
...@@ -476,7 +449,7 @@ Window { ...@@ -476,7 +449,7 @@ Window {
} }
Component.onCompleted: { Component.onCompleted: {
// Enregistrer chaque touche dans keysArray pour y accéder plus tard // Enregistrer chaque touche dans keysArray pour y accéder plus tard
mainWindow.keysArray.push(keyRect) mainWindow.keysArray.push(keyRect);
} }
} }
} }
...@@ -520,7 +493,6 @@ Window { ...@@ -520,7 +493,6 @@ Window {
} }
} }
} }
} }
} }
...@@ -541,7 +513,6 @@ Window { ...@@ -541,7 +513,6 @@ Window {
visible: motusGame.loose visible: motusGame.loose
color: "red" color: "red"
font.pixelSize: 30 font.pixelSize: 30
anchors.horizontalCenterOffset: 0
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
} }
...@@ -551,8 +522,6 @@ Window { ...@@ -551,8 +522,6 @@ Window {
visible: motusGame.win visible: motusGame.win
color: "green" color: "green"
font.pixelSize: 30 font.pixelSize: 30
anchors.horizontalCenterOffset: 0
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment