Skip to content
Snippets Groups Projects
Commit 204d5ef3 authored by Yanis Dziki's avatar Yanis Dziki
Browse files

insch on avance

parent 83119e9a
No related branches found
No related tags found
No related merge requests found
...@@ -38,6 +38,7 @@ qt_add_qml_module(appmotus ...@@ -38,6 +38,7 @@ qt_add_qml_module(appmotus
SOURCES grillemanager.h grillemanager.cpp SOURCES grillemanager.h grillemanager.cpp
QML_FILES Case.qml QML_FILES Case.qml
QML_FILES Grille.qml QML_FILES Grille.qml
SOURCES lettermodel.h lettermodel.cpp
) )
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
......
import QtQuick import QtQuick
import QtQuick.Controls
Item { Item {
width: 900 width: 900
...@@ -15,6 +10,33 @@ Item { ...@@ -15,6 +10,33 @@ Item {
color: "#ffffff" color: "#ffffff"
anchors.fill: parent anchors.fill: parent
Grid {
id: letterGrid
columns: 8
rows: 5
spacing: 4
anchors.centerIn: parent
width: 600
height: 400
Repeater {
model: letterModel // <-- C++ ListModel exposé ici
delegate: Rectangle {
width: 60
height: 60
color: "#dddddd"
border.color: "#888"
radius: 5
Text {
anchors.centerIn: parent
text: model.letter
font.pixelSize: 24
}
}
}
}
Clavier { Clavier {
id: clavier id: clavier
x: 225 x: 225
......
...@@ -24,6 +24,16 @@ void Jeu::setContext(QQmlComponent *grilleComponent, QQuickItem* parentItem) { ...@@ -24,6 +24,16 @@ void Jeu::setContext(QQmlComponent *grilleComponent, QQuickItem* parentItem) {
} }
void Jeu::onClavierClick(QString lettre) { void Jeu::onClavierClick(QString lettre) {
if (!m_letterModel)
return;
if (currentIndex < 40) { // on évite de dépasser la grille
m_letterModel->setLetter(currentIndex, lettre);
currentIndex++;
}
brain->entreLettre(lettre.toStdString()[0]); brain->entreLettre(lettre.toStdString()[0]);
} }
...@@ -43,3 +53,7 @@ void Jeu::startGame() { ...@@ -43,3 +53,7 @@ void Jeu::startGame() {
// grilleManager.createGrid(6, 5); // à synchroniser avec les paramètres du brain // grilleManager.createGrid(6, 5); // à synchroniser avec les paramètres du brain
} }
void Jeu::setLetterModel(LetterModel* model) {
m_letterModel = model;
}
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <QQmlComponent> #include <QQmlComponent>
#include "brain.h" #include "brain.h"
#include "grillemanager.h" #include "grillemanager.h"
#include "lettermodel.h"
class Jeu : public QObject { class Jeu : public QObject {
Q_OBJECT Q_OBJECT
...@@ -22,6 +23,7 @@ public: ...@@ -22,6 +23,7 @@ public:
GrilleManager* getGrilleManager() { return &grilleManager; } GrilleManager* getGrilleManager() { return &grilleManager; }
QQuickItem* getGameWindow() const { return gameWindow; } // Getter for gameWindow QQuickItem* getGameWindow() const { return gameWindow; } // Getter for gameWindow
void setContext(QQmlComponent *grilleComponent, QQuickItem* parentItem); void setContext(QQmlComponent *grilleComponent, QQuickItem* parentItem);
void setLetterModel(LetterModel* model); // Setter pour le modèle
signals: signals:
...@@ -34,6 +36,8 @@ private: ...@@ -34,6 +36,8 @@ private:
GrilleManager grilleManager; GrilleManager grilleManager;
QQmlComponent* grilleComponent; QQmlComponent* grilleComponent;
QQuickItem* gameWindow; // Pointer to the QQuickItem of the GameWindow QQuickItem* gameWindow; // Pointer to the QQuickItem of the GameWindow
LetterModel* m_letterModel = nullptr; // Modèle QML
int currentIndex = 0; // Pour suivre où on écrit
}; };
#endif // JEU_H #endif // JEU_H
#include "lettermodel.h"
LetterModel::LetterModel(QObject *parent)
: QAbstractListModel(parent)
{
// Initialiser 40 lettres avec "_"
m_letters.fill("_", 40);
}
int LetterModel::rowCount(const QModelIndex &parent) const {
Q_UNUSED(parent);
return m_letters.size();
}
QVariant LetterModel::data(const QModelIndex &index, int role) const {
if (!index.isValid() || index.row() < 0 || index.row() >= m_letters.size())
return QVariant();
if (role == LetterRole)
return m_letters.at(index.row());
return QVariant();
}
QHash<int, QByteArray> LetterModel::roleNames() const {
return {
{ LetterRole, "letter" }
};
}
void LetterModel::setLetter(int index, const QString &value) {
if (index >= 0 && index < m_letters.size()) {
m_letters[index] = value;
emit dataChanged(this->index(index), this->index(index), { LetterRole });
}
}
#pragma once
#include <QAbstractListModel>
#include <QString>
#include <QVector>
class LetterModel : public QAbstractListModel {
Q_OBJECT
public:
enum Roles {
LetterRole = Qt::UserRole + 1
};
explicit LetterModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role) const override;
QHash<int, QByteArray> roleNames() const override;
Q_INVOKABLE void setLetter(int index, const QString &value);
private:
QVector<QString> m_letters;
};
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "jeu.h" #include "jeu.h"
#include "vraiecase.h" #include "vraiecase.h"
#include "grillemanager.h" #include "grillemanager.h"
#include "lettermodel.h"
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv); QGuiApplication app(argc, argv);
...@@ -17,6 +18,9 @@ int main(int argc, char *argv[]) { ...@@ -17,6 +18,9 @@ int main(int argc, char *argv[]) {
// Charger l'interface utilisateur (QML) // Charger l'interface utilisateur (QML)
LetterModel letterModel;
engine.rootContext()->setContextProperty("letterModel", &letterModel);
engine.loadFromModule("motus", "Main"); engine.loadFromModule("motus", "Main");
QObject *rootObject = engine.rootObjects().first(); // Gets the first root object QObject *rootObject = engine.rootObjects().first(); // Gets the first root object
QQuickItem *rootItem = qobject_cast<QQuickItem *>(rootObject); QQuickItem *rootItem = qobject_cast<QQuickItem *>(rootObject);
...@@ -26,6 +30,7 @@ int main(int argc, char *argv[]) { ...@@ -26,6 +30,7 @@ int main(int argc, char *argv[]) {
QQuickItem *parentItem = rootItem; QQuickItem *parentItem = rootItem;
// Créer l'objet Jeu sans mot // Créer l'objet Jeu sans mot
Jeu jeu; Jeu jeu;
jeu.setLetterModel(&letterModel);
engine.rootContext()->setContextProperty("jeu", &jeu); engine.rootContext()->setContextProperty("jeu", &jeu);
jeu.setContext(&grilleComponent,parentItem); jeu.setContext(&grilleComponent,parentItem);
...@@ -33,3 +38,5 @@ int main(int argc, char *argv[]) { ...@@ -33,3 +38,5 @@ int main(int argc, char *argv[]) {
return app.exec(); return app.exec();
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment