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

update stashes

parent c678116b
Branches
No related tags found
No related merge requests found
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
......@@ -42,13 +41,13 @@ Window {
color: "#323232"
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) {
if (mot != ""){
if (mot !== "") {
// Saisie d'une lettre (de A à Z)
if (/^[a-zA-Z]$/.test(event.text)) {
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();
indice_case++;
event.accepted = true;
......@@ -56,94 +55,65 @@ Window {
}
// Gestion de la touche 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--;
let cellIndex = current_essai * nb_lettres + indice_case;
var cellIndex = current_essai * nb_lettres + indice_case;
caseArray[cellIndex]._textText = "";
event.accepted = true;
}
}
// Passage à la ligne suivante avec la touche Entrée
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) {
// Construire le mot entré en majuscules
var candidate = [];
for (var i = 0; i < nb_lettres; i++){
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
// 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) {
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 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)
// Par défaut, on ne change pas le style (chaîne vide)
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++) {
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()) {
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
resultColors[i] = ""; // ne change pas le style de base
}
}
// 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++) {
if (resultColors[i] === "") { // lettre non marquée en vert
if (resultColors[i] === "") {
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
// 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++) {
var case_verif = caseArray[current_essai * nb_lettres + i];
if (resultColors[i] !== "") {
......@@ -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
>>>>>>> Stashed changes
if (current_essai < nb_essais - 1) {
current_essai++;
indice_case = 0;
......@@ -164,8 +139,7 @@ Window {
mot = "";
}
} else {
// Le mot n'existe pas dans le dictionnaire :
// Colorer toute la ligne en rouge
// 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";
......@@ -176,20 +150,18 @@ Window {
event.accepted = true;
}
}
}
}
// Disposition globale en colonne
// Timer pour réinitialiser le style de la ligne en cas de mot inexistant
Timer {
id: revertTimer
interval: 1000 // 1 seconde (1000 millisecondes)
repeat: false // Ne se répète pas
interval: 1000 // 1 seconde
repeat: false
onTriggered: {
// Réinitialiser la couleur
console.log('coucou');
for (var ind = 0; ind < nb_lettres; ind++) {
var case_verif = caseArray[current_essai * nb_lettres + ind];
console.log("Réinitialisation du style de la ligne");
for (var i = 0; i < nb_lettres; i++) {
var case_verif = caseArray[current_essai * nb_lettres + i];
case_verif.rectangleColor = "#323232";
case_verif.rectangleBordercolor = "#ffffff";
}
......@@ -198,9 +170,7 @@ Window {
Row {
id: main_row
anchors.fill: parent
spacing: 150
Rectangle {
......@@ -233,12 +203,13 @@ Window {
MouseArea {
anchors.fill: parent
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);
motusGame.startTimer();
case3._textText = mot;
mot_split = mot.split("");
console.log(mot_split)
console.log(mot_split);
}
}
}
......@@ -405,7 +376,6 @@ Window {
}
}
Rectangle {
id: rectangle1
width: 600
......@@ -418,7 +388,6 @@ Window {
anchors.bottom: parent.bottom
anchors.bottomMargin: 50
Column {
anchors.fill: parent
anchors.margins: 10
......@@ -439,11 +408,15 @@ Window {
Repeater {
model: modelData
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
height: 60
color: keyColor // Lier la couleur affichée à keyColor
color: keyColor // Liaison dynamique avec keyColor
radius: 5
border.color: keyColor // Pareil pour la bordure
border.color: keyColor // Même couleur pour la bordure
Text {
anchors.centerIn: parent
......@@ -476,7 +449,7 @@ Window {
}
Component.onCompleted: {
// Enregistrer chaque touche dans keysArray pour y accéder plus tard
mainWindow.keysArray.push(keyRect)
mainWindow.keysArray.push(keyRect);
}
}
}
......@@ -520,7 +493,6 @@ Window {
}
}
}
}
}
......@@ -541,7 +513,6 @@ Window {
visible: motusGame.loose
color: "red"
font.pixelSize: 30
anchors.horizontalCenterOffset: 0
anchors.horizontalCenter: parent.horizontalCenter
}
......@@ -551,8 +522,6 @@ Window {
visible: motusGame.win
color: "green"
font.pixelSize: 30
anchors.horizontalCenterOffset: 0
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