diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..50feff073eccdef949c33365db0f893248e44e93
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,56 @@
+cmake_minimum_required(VERSION 3.5)
+
+project(bakayenminer VERSION 0.1 LANGUAGES CXX)
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+
+set(CMAKE_AUTOUIC ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_AUTORCC ON)
+set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated -Wno-deprecated-declarations")
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
+find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
+
+set(PROJECT_SOURCES
+        main.cpp
+        mainwindow.cpp
+        mainwindow.h
+        mainwindow.ui
+)
+
+if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
+    qt_add_executable(bakayenminer
+        MANUAL_FINALIZATION
+        ${PROJECT_SOURCES}
+    )
+# Define target properties for Android with Qt 6 as:
+#    set_property(TARGET bakayenminer APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
+#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
+# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
+else()
+    if(ANDROID)
+        add_library(bakayenminer SHARED
+            ${PROJECT_SOURCES}
+        )
+# Define properties for Android with Qt 5 after find_package() calls as:
+#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
+    else()
+        add_executable(bakayenminer
+            ${PROJECT_SOURCES}
+        )
+    endif()
+endif()
+
+target_link_libraries(bakayenminer PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
+
+set_target_properties(bakayenminer PROPERTIES
+    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
+    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
+    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
+)
+
+if(QT_VERSION_MAJOR EQUAL 6)
+    qt_finalize_executable(bakayenminer)
+endif()
diff --git a/img/icon.ico b/img/icon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..622d34cce42a9058f721fc8d8742abb944f922f2
Binary files /dev/null and b/img/icon.ico differ
diff --git a/img/mine_1.png b/img/mine_1.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b128af81f2c49f09d7c32b181abefae67450929
Binary files /dev/null and b/img/mine_1.png differ
diff --git a/img/mine_2.png b/img/mine_2.png
new file mode 100644
index 0000000000000000000000000000000000000000..423f47eacc8c94b475d5c7a07dfafd61b78ddc86
Binary files /dev/null and b/img/mine_2.png differ
diff --git a/img/mine_3.png b/img/mine_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..0f87c966c5cd89817214b5e65426386a434bb0ee
Binary files /dev/null and b/img/mine_3.png differ
diff --git a/img/mine_4.png b/img/mine_4.png
new file mode 100644
index 0000000000000000000000000000000000000000..26ac336b04d2a36291668c9e51327bdd80a41354
Binary files /dev/null and b/img/mine_4.png differ
diff --git a/img/mine_5.png b/img/mine_5.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d2309d273c0167ea957d192e395950c5c8b04eb
Binary files /dev/null and b/img/mine_5.png differ
diff --git a/img/mine_6.png b/img/mine_6.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d43170c599391376a5bb2fce0399a1cc8c8c9f6
Binary files /dev/null and b/img/mine_6.png differ
diff --git a/img/mine_7.png b/img/mine_7.png
new file mode 100644
index 0000000000000000000000000000000000000000..5a8d74b5322fe6ea75a9fd52431a3af0767d6da2
Binary files /dev/null and b/img/mine_7.png differ
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fd3e533415011b7a24814fe7f3ac990d6a811132
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,11 @@
+#include "mainwindow.h"
+
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+    QApplication a(argc, argv);
+    MainWindow w;
+    w.show();
+    return a.exec();
+}
diff --git a/mainwindow.cpp b/mainwindow.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..8a5833336b80287681fbbb8969bc477871032aa4
--- /dev/null
+++ b/mainwindow.cpp
@@ -0,0 +1,246 @@
+#include "mainwindow.h"
+#include "./ui_mainwindow.h"
+#include <QPixmap>
+#include <QBitmap>
+#include <QDebug>
+#include <QDir>
+#include <QTimer>
+#include <QRandomGenerator>
+#include <QMessageBox>
+
+MainWindow::MainWindow(QWidget *parent)
+    : QMainWindow(parent)
+    , ui(new Ui::MainWindow)
+{
+    ui->setupUi(this);
+    mine_1_pic = QPixmap("../img/mine_1.png");
+    mine_2_pic = QPixmap("../img/mine_2.png");
+    mine_3_pic = QPixmap("../img/mine_3.png");
+    mine_4_pic = QPixmap("../img/mine_4.png");
+    mine_5_pic = QPixmap("../img/mine_5.png");
+    mine_6_pic = QPixmap("../img/mine_6.png");
+    mine_7_pic = QPixmap("../img/mine_7.png");
+    ui->label->setPixmap(mine_1_pic);
+    ui->label->setAlignment (Qt::AlignCenter);
+    qDebug() << QDir::currentPath();
+    ui->upLabel->setText("Bakachan s'est faite isekai dans un monde mystérieux. Son nouveau travail \nest maintenant d'aller miner du bakacoin dans le donjon du roi démon. \nSuivez ses aventures et convertissez ensuite votre précieux Bakacoins en \nvéritables Bakayens auprès du marchand!");
+    ui->BakacoinCounter->setText("Bakacoins en votre possession : 0");
+}
+
+MainWindow::~MainWindow()
+{
+    delete ui;
+}
+
+void MainWindow::Mine()
+{
+    int gencurrentFloor = QRandomGenerator::global()->bounded(1,10);
+    int gendirection = QRandomGenerator::global()->bounded(0,2);
+    int genroom = QRandomGenerator::global()->bounded(1,10);
+    int genenvironment = QRandomGenerator::global()->bounded(1,5);
+    int genmeter = QRandomGenerator::global()->bounded(1,10);
+    int genmovDirection = QRandomGenerator::global()->bounded(0,4);
+    int genmonster = QRandomGenerator::global()->bounded(1,8);
+    int gencolor = QRandomGenerator::global()->bounded(1,10);
+    int genmonsterSize = QRandomGenerator::global()->bounded(1,10);
+    int gendamage = QRandomGenerator::global()->bounded(1,10);
+    QString colorstr="";
+    QString tmptxt = "";
+    currentFloor = 8+gencurrentFloor/5;
+    direction = 2 + gendirection;
+    room = 8 + genroom/5;
+    environment = 0+genenvironment/2;
+    meter = 9 + genenvironment/5;
+    movDirection = 0+genmovDirection/2;
+    monster = 3+genmonster/4;
+    color = 7 + gencolor/5;
+    monsterSize = 7+genmonsterSize/5;
+    damage = 9+gendamage/5;
+    if(step==0) {
+        bakaText = "Bakachan se rend à la mine pour trouver du BakaCoin.\n";
+        step++;
+        ui->label->setPixmap(mine_1_pic);
+    }
+    else if(step==1) {
+        step++;
+        tmptxt = "Aujourd'hui elle décide d'aller au ";
+        if(gencurrentFloor==1) {
+            tmptxt+="1er ";
+        }
+        else{
+            tmptxt+=QString::number(gencurrentFloor)+"ème ";
+        }
+        tmptxt+="étage, cette fois, elle prend la porte de ";
+        tmptxt+=gendirection==0?"droite!\n":"gauche!\n";
+        bakaText.append(tmptxt);
+        ui->label->setPixmap(mine_2_pic);
+    }
+    else if(step==2){
+        step++;
+        tmptxt = "Elle marche jusqu'à la salle numéro "+QString::number(genroom);
+        tmptxt += ". Oh! Il s'agit d'une salle ";
+        if(genenvironment==1){
+            tmptxt += "avec plein de glace très froide!\n";
+        }
+        if(genenvironment==2){
+            tmptxt += "remplie de lave en fusion!\n";
+        }
+        if(genenvironment==3){
+            tmptxt += "avec des cristaux magiques sur les mur!\n";
+        }
+        if(genenvironment==4){
+            tmptxt += "sous-marine avec des dauphins!\n";
+        }
+        bakaText.append(tmptxt);
+        ui->label->setPixmap(mine_3_pic);
+    }
+    else if(step==3){
+        step++;
+        tmptxt = "A partir de là, elle se déplace de "+QString::number(genmeter*10)+" mètres vers ";
+        if(genmovDirection==0){
+            tmptxt+="le nord.\n";
+        }
+        if(genmovDirection==1){
+            tmptxt+="le sud.\n";
+        }
+        if(genmovDirection==2){
+            tmptxt+="l'est.\n";
+        }
+        if(genmovDirection==3){
+            tmptxt+="l'ouest.\n";
+        }
+        bakaText.append(tmptxt);
+        ui->label->setPixmap(mine_4_pic);
+    }
+    else if(step==4){
+        step++;
+        tmptxt+="Attention, ";
+        if(gencolor==1){
+            colorstr="rouge";
+        }
+        if(gencolor==2){
+            colorstr="bleu";
+        }
+        if(gencolor==3){
+            colorstr="vert";
+        }
+        if(gencolor==4){
+            colorstr="marron";
+        }
+        if(gencolor==5){
+            colorstr="doré";
+        }
+        if(gencolor==6){
+            colorstr="rose à pois vert";
+        }
+        if(gencolor==7){
+            colorstr="fushia";
+        }
+        if(gencolor==8){
+            colorstr="orange";
+        }
+        if(gencolor==9){
+            colorstr="noire";
+        }
+        if(genmonster==1){
+            tmptxt+="un petit lapin "+colorstr+" de "+QString::number(genmonsterSize*5)+" centimètres avec des griffes ";
+        }
+        if(genmonster==2){
+            tmptxt+="un slime "+colorstr+" de "+QString::number(genmonsterSize)+" mètres qui gigotte ";
+        }
+        if(genmonster==3){
+            tmptxt+="un ogre "+colorstr+" de "+QString::number(genmonsterSize)+" mètres avec une masse en bois ";
+        }
+        if(genmonster==4){
+            tmptxt+="un élémentaire "+colorstr+" de "+QString::number(genmonsterSize)+" mètres maitrisant une magie puissante ";
+        }
+        if(genmonster==5){
+            tmptxt+="une armure enchantée "+colorstr+" de "+QString::number(genmonsterSize)+" mètres avec une grosse épée ";
+        }
+        if(genmonster==6){
+            tmptxt+="une araignée "+colorstr+" de "+QString::number(genmonsterSize)+" mètres avec du poison sur les pattes ";
+        }
+        if(genmonster==7){
+            tmptxt+="un dragon millénaire "+colorstr+" de "+QString::number(genmonsterSize)+" mètres qui crache du feu ";
+        }
+        bakaText.append(tmptxt+"apparait!\n");
+        ui->label->setPixmap(mine_5_pic);
+    }
+    else if(step==5){
+        step++;
+        tmptxt = "Grâce à sa pioche, Bakachan lui fait "+QString::number(gendamage)+" dégats et le monstre meurt \\o/\n";
+        bakaText.append(tmptxt);
+        ui->label->setPixmap(mine_6_pic);
+    }
+    else if(step==6){
+        step=0;
+        if(!VerifyAnswer((QString::number(currentFloor)+QString::number(direction)+QString::number(room)+QString::number(environment)+QString::number(meter)+QString::number(movDirection)+QString::number(monster)+QString::number(color)+QString::number(monsterSize)+QString::number(damage)).toLong())){
+            tmptxt = "Malheureusement il n'y avait aucun BakaCoin dans son trésor :(, c'est maintenant la fin de la journée et Bakachan vas se coucher.";
+        }
+        else{
+            tmptxt = "Oh! Dans son trésor Bakachan trouve un merveilleux BakaCoin! Félicitations, Bakachan vas pouvoir aller dormir avec le sourir aujourd'hui!";
+            bakaCoin+=1;
+            ui->BakacoinCounter->setText("Bakacoins en votre possession : "+QString::number(bakaCoin));
+        }
+        bakaText.append(tmptxt);
+        ui->label->setPixmap(mine_7_pic);
+    }
+    ui->textBrowser->setText(bakaText);
+    globalTimer->singleShot(speed, this, &MainWindow::Mine);
+
+}
+
+bool MainWindow::VerifyAnswer(long answer)
+{
+    answer = ((answer*9+1)*2+4)*4+1;
+    QString answerstr=QString::number(answer);
+    QByteArray result = "";
+    for(int k=0;k<6;k++){
+        result.append((QString)((QString)answerstr[2*k]+(QString)answerstr[2*k+1]).toInt());
+    }
+    return result=="BRaV0!";
+}
+
+
+
+
+void MainWindow::on_startButton_clicked()
+{
+    if(!isStarted){
+        Mine();
+        isStarted = true;
+    }
+}
+
+
+void MainWindow::on_speedCheck_stateChanged(int state)
+{
+    if(state==0){
+        speed=2000;
+    }
+    else{
+        speed=200;
+    }
+}
+
+
+void MainWindow::on_SellButton_clicked()
+{
+    QMessageBox msgBox;
+    int chance;
+    if(bakaCoin==0){
+        msgBox.setText("Alors que Bakachan arrive devant le marchand, elle se rappelle qu'elle n'avait pas de BakaCoin.");
+    }
+    else{
+        chance = QRandomGenerator::global()->bounded(0,2);
+        if(chance==1){
+            msgBox.setText("Le marchand a échangé les BakaCoins de Bakachan contre des NFT Bakayen, elle ne sait pas trop ce que c'est mais c'est sûrement des supers bakayens.\nVous possédez maintenant " + QString::number(bakaCoin) + " NFT Bakayen!");
+        }
+        else{
+            msgBox.setText("Oh non! Un méchant barman a volé tous les Bakacoins de Bakachan. Il ne lui reste plus qu'à retourner à la mine. :(");
+        }
+    }
+    bakaCoin = 0;
+    msgBox.exec();
+}
+
diff --git a/mainwindow.h b/mainwindow.h
new file mode 100644
index 0000000000000000000000000000000000000000..bf387bb7b8393bbe4465e92418a92e7a3f06a6f0
--- /dev/null
+++ b/mainwindow.h
@@ -0,0 +1,55 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QPixmap>
+#include <QBitmap>
+#include <QDir>
+#include <QTimer>
+
+QT_BEGIN_NAMESPACE
+namespace Ui { class MainWindow; }
+QT_END_NAMESPACE
+
+class MainWindow : public QMainWindow
+{
+    Q_OBJECT
+public:
+    MainWindow(QWidget *parent = nullptr);
+    ~MainWindow();
+private slots:
+    void on_startButton_clicked();
+
+    void on_speedCheck_stateChanged(int arg1);
+
+    void on_SellButton_clicked();
+
+private:
+    Ui::MainWindow *ui;
+    void Mine();
+    bool VerifyAnswer(long answer);
+    QString bakaText = "";
+    int step = 0;
+    bool isStarted=false;
+    int speed = 2000;
+    QTimer* globalTimer;
+    int currentFloor;
+    int direction;
+    int room;
+    int environment;
+    int meter;
+    int movDirection;
+    int monster;
+    int color;
+    int monsterSize;
+    int damage;
+    int bakaCoin=0;
+    QPixmap mine_1_pic;
+    QPixmap mine_2_pic;
+    QPixmap mine_3_pic;
+    QPixmap mine_4_pic;
+    QPixmap mine_5_pic;
+    QPixmap mine_6_pic;
+    QPixmap mine_7_pic;
+};
+#endif // MAINWINDOW_H
diff --git a/mainwindow.ui b/mainwindow.ui
new file mode 100644
index 0000000000000000000000000000000000000000..3a13139884878cfa6998cc95d46428104c00179d
--- /dev/null
+++ b/mainwindow.ui
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>900</width>
+    <height>600</height>
+   </rect>
+  </property>
+  <property name="maximumSize">
+   <size>
+    <width>900</width>
+    <height>600</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Bakayen Miner</string>
+  </property>
+  <property name="windowIcon">
+   <iconset>
+    <normaloff>img/icon.ico</normaloff>img/icon.ico</iconset>
+  </property>
+  <widget class="QWidget" name="centralwidget">
+   <widget class="QLabel" name="label">
+    <property name="geometry">
+     <rect>
+      <x>570</x>
+      <y>10</y>
+      <width>281</width>
+      <height>300</height>
+     </rect>
+    </property>
+    <property name="minimumSize">
+     <size>
+      <width>0</width>
+      <height>300</height>
+     </size>
+    </property>
+    <property name="text">
+     <string/>
+    </property>
+   </widget>
+   <widget class="QTextBrowser" name="textBrowser">
+    <property name="geometry">
+     <rect>
+      <x>0</x>
+      <y>110</y>
+      <width>491</width>
+      <height>411</height>
+     </rect>
+    </property>
+    <property name="minimumSize">
+     <size>
+      <width>400</width>
+      <height>300</height>
+     </size>
+    </property>
+   </widget>
+   <widget class="QLabel" name="upLabel">
+    <property name="geometry">
+     <rect>
+      <x>20</x>
+      <y>20</y>
+      <width>461</width>
+      <height>71</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>TextLabel</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="BakacoinCounter">
+    <property name="geometry">
+     <rect>
+      <x>570</x>
+      <y>350</y>
+      <width>221</width>
+      <height>41</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>TextLabel</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="startButton">
+    <property name="geometry">
+     <rect>
+      <x>560</x>
+      <y>400</y>
+      <width>201</width>
+      <height>51</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Commencer à miner</string>
+    </property>
+   </widget>
+   <widget class="QPushButton" name="SellButton">
+    <property name="geometry">
+     <rect>
+      <x>580</x>
+      <y>470</y>
+      <width>161</width>
+      <height>61</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string> Convertir vos Bakacoins
+en Bakayen</string>
+    </property>
+   </widget>
+   <widget class="QLabel" name="label_2">
+    <property name="geometry">
+     <rect>
+      <x>10</x>
+      <y>530</y>
+      <width>181</width>
+      <height>18</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string>Activer la potion de célérité:</string>
+    </property>
+   </widget>
+   <widget class="QCheckBox" name="speedCheck">
+    <property name="geometry">
+     <rect>
+      <x>190</x>
+      <y>530</y>
+      <width>85</width>
+      <height>20</height>
+     </rect>
+    </property>
+    <property name="text">
+     <string/>
+    </property>
+   </widget>
+  </widget>
+  <widget class="QMenuBar" name="menubar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>900</width>
+     <height>23</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QStatusBar" name="statusbar"/>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>