From 5fcfa08d7fdc2cd9eebbccc7dc2109cf32c095ec Mon Sep 17 00:00:00 2001
From: Monoki Dorina <mondo1@cortex.itk.ppke.hu>
Date: Sun, 19 May 2024 13:20:38 +0200
Subject: [PATCH] van 3 palya, ha veget er az egyik akkor elindul egy uj

---
 application.cpp |  1 -
 button.cpp      | 42 ----------------------
 button.hpp      | 25 -------------
 feladat.txt     |  2 +-
 feladat1.txt    |  1 +
 feladat2.txt    |  1 +
 feladat3.txt    |  1 +
 gamemaster.cpp  | 96 +++++++++++++++++++++++++++++++++----------------
 gamemaster.hpp  |  4 ++-
 megoldas.txt    |  2 +-
 megoldas1.txt   |  1 +
 megoldas2.txt   |  1 +
 megoldas3.txt   |  1 +
 myapp.cpp       | 49 ++++++++++++++++++++++---
 myapp.hpp       |  4 +--
 palyaszam.txt   |  1 +
 save.txt        |  2 +-
 17 files changed, 124 insertions(+), 110 deletions(-)
 delete mode 100644 button.cpp
 delete mode 100644 button.hpp
 create mode 100644 feladat1.txt
 create mode 100644 feladat2.txt
 create mode 100644 feladat3.txt
 create mode 100644 megoldas1.txt
 create mode 100644 megoldas2.txt
 create mode 100644 megoldas3.txt
 create mode 100644 palyaszam.txt

diff --git a/application.cpp b/application.cpp
index 02f66d3..32da063 100644
--- a/application.cpp
+++ b/application.cpp
@@ -16,7 +16,6 @@ void Application::event_loop()
 {
     event ev;
     int focus = action("start", ev, 0);
-    widgets[focus]->kezel(ev);
 
     for (Widget *w : widgets)
     {
diff --git a/button.cpp b/button.cpp
deleted file mode 100644
index 60adeeb..0000000
--- a/button.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-#include "button.hpp"
-
-using namespace genv;
-
-Button::Button(Application* parent, int x, int y, int szel, int mag,
-               std::string cimke, std::function<void()> f):
-    Widget(parent, x, y, szel, mag), _cimke(cimke), _f(f) {}
-
-
-void Button::rajzol() const
-{
-    // hatter
-    gout << color(dark_purple);
-    gout << move_to(_x,_y) << box(_szel,_mag);
-
-    // keret
-    gout << color(light_purple);
-    gout << move_to(_x,_y) << line(_szel,0) << line(0,_mag) << line(-_szel,0) << line(0,-_mag);
-
-    // szoveg
-    gout << font("LiberationSans-Regular.ttf",20);
-
-    gout << move_to(_x+ (_szel-gout.twidth(_cimke))/2,
-            _y+(_mag-gout.cascent()-gout.cdescent())/2)
-
-         << text(_cimke);
-}
-
-void Button::kezel(event ev)
-{
-    if (ev.type == ev_mouse && ev.button==btn_left
-        && belul(ev.pos_x,ev.pos_y))
-    {
-        action();
-    }
-}
-
-void Button::action()
-{
-    _f();
-}
-
diff --git a/button.hpp b/button.hpp
deleted file mode 100644
index 7b00344..0000000
--- a/button.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef BUTTON_HPP
-#define BUTTON_HPP
-
-#include "widget.hpp"
-#include <functional>
-
-
-class Button : public Widget
-{
-    public:
-        Button(Application* parent, int x, int y, int szel, int mag,
-               std::string cimke, std::function<void()>);
-
-        virtual void rajzol() const override;
-        virtual void kezel(genv::event ev) override;
-
-        void action();
-
-    protected:
-        std::string _cimke;
-        std::function<void()> _f;
-
-};
-
-#endif // BUTTON_HPP
diff --git a/feladat.txt b/feladat.txt
index 5a61e0c..76742c8 100644
--- a/feladat.txt
+++ b/feladat.txt
@@ -1 +1 @@
-9 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 5 3 0 0 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0
\ No newline at end of file
+9 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 5 3 0 0 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0 
diff --git a/feladat1.txt b/feladat1.txt
new file mode 100644
index 0000000..5a61e0c
--- /dev/null
+++ b/feladat1.txt
@@ -0,0 +1 @@
+9 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 5 3 0 0 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0
\ No newline at end of file
diff --git a/feladat2.txt b/feladat2.txt
new file mode 100644
index 0000000..184de54
--- /dev/null
+++ b/feladat2.txt
@@ -0,0 +1 @@
+0 1 4 7 0 6 0 0 0 0 0 0 5 0 3 6 0 0 0 3 6 4 2 0 0 1 9 0 0 1 0 7 0 2 0 3 3 0 0 1 4 0 0 6 7 0 0 0 3 6 2 0 5 4 0 0 0 2 0 4 0 0 5 2 7 5 9 0 1 4 0 6 4 8 3 0 5 0 9 0 0
\ No newline at end of file
diff --git a/feladat3.txt b/feladat3.txt
new file mode 100644
index 0000000..460f63f
--- /dev/null
+++ b/feladat3.txt
@@ -0,0 +1 @@
+0 6 0 0 2 0 5 0 0 0 9 0 0 0 3 6 2 4 4 2 7 5 6 0 0 0 3 6 0 4 0 0 5 7 0 0 1 8 0 0 3 7 4 0 6 2 0 0 1 4 0 9 3 8 7 5 3 6 0 1 2 0 0 0 1 0 0 7 0 3 6 5 9 4 0 3 0 2 0 7 0
\ No newline at end of file
diff --git a/gamemaster.cpp b/gamemaster.cpp
index 379a6e9..8e41c64 100644
--- a/gamemaster.cpp
+++ b/gamemaster.cpp
@@ -10,9 +10,15 @@ GameMaster::GameMaster(Application* parent, std::string mo, std::string fe) :
 {
     _parent->register_gm(this);
 
-    _megoldas = fajl_beolvasas(_fajl_megoldas);
-    _feladat = fajl_beolvasas(_fajl_feladat);
-    _save = fajl_beolvasas(_fajl_save);
+    std::ifstream fajl("palyaszam.txt");
+    if (!fajl.good())
+    {
+        cout << "NEM JO A FAJL" << endl;
+    }
+    fajl >> _palyaszam;
+    fajl.close();
+
+    kezdo_jatek();
 
     // megmondja hogy melyik indexek melyik nagy negyzethez tartoznak
     _negyzetek.resize(9);
@@ -141,40 +147,68 @@ bool GameMaster::kesz()
     return valasz;
 }
 
-void GameMaster::uj_jatek()
+void GameMaster::kezdo_jatek()
 {
-    for (int i=0; i<_megoldas.size(); i++)
+    if (_palyaszam==1)
     {
-        _megoldas[i]=0;
+        _megoldas = fajl_beolvasas("megoldas1.txt");
+        _feladat = fajl_beolvasas("feladat1.txt");
     }
 
-    for (int i=0; i<17; i++)
+    if (_palyaszam==2)
     {
-        _megoldas[i] = rand()%9+1;
-        cout << i << " " <<_megoldas[i] << endl;
+        _megoldas = fajl_beolvasas("megoldas2.txt");
+        _feladat = fajl_beolvasas("feladat2.txt");
+    }
 
-        while (!szabalyos_e(i,_megoldas[i]))
-        {
-            _megoldas[i] = rand()%9+1;
-            cout << i << " " << _megoldas[i] << endl;
-        }
-        //fajl_kiiras("megoldas_generalo.txt",_megoldas);
+    if (_palyaszam==3)
+    {
+        _megoldas = fajl_beolvasas("megoldas3.txt");
+        _feladat = fajl_beolvasas("feladat3.txt");
+    }
+
+    fajl_kiiras("megoldas.txt",_megoldas);
+
+    fajl_kiiras("feladat.txt",_feladat);
+
+    _save = fajl_beolvasas(_fajl_save);
+}
+
+void GameMaster::uj_jatek()
+{
+    if (_palyaszam<3)
+        _palyaszam++;
+    else
+        _palyaszam=1;
+
+    std::ofstream fajl("palyaszam.txt");
+    fajl << _palyaszam;
+    fajl.close();
+
+    if (_palyaszam==1)
+    {
+        _megoldas = fajl_beolvasas("megoldas1.txt");
+        _feladat = fajl_beolvasas("feladat1.txt");
     }
 
-    for (int i=17; i<_megoldas.size(); i++)
+    if (_palyaszam==2)
     {
-        for (int j=1; j<=9; j++)
-        {
-            if (szabalyos_e(i,j))
-            {
-                _megoldas[i]=j;
-                j = 9;
-            }
-        }
-        cout << i << " " << _megoldas[i] << endl;
+        _megoldas = fajl_beolvasas("megoldas2.txt");
+        _feladat = fajl_beolvasas("feladat2.txt");
+    }
+
+    if (_palyaszam==3)
+    {
+        _megoldas = fajl_beolvasas("megoldas3.txt");
+        _feladat = fajl_beolvasas("feladat3.txt");
     }
 
-    fajl_kiiras("megoldas_generalo.txt",_megoldas);
+    fajl_kiiras("megoldas.txt",_megoldas);
+
+    fajl_kiiras("feladat.txt",_feladat);
+
+    _save = _feladat;
+    fajl_kiiras("save.txt",_save);
 }
 
 void GameMaster::save(int sorszam, int ertek)
@@ -214,11 +248,6 @@ std::vector<int> GameMaster::fajl_beolvasas(std::string fajlnev)
     return v;
 }
 
-void GameMaster::save_fajlba()
-{
-    fajl_kiiras(_fajl_save,_save);
-}
-
 void GameMaster::fajl_kiiras(std::string fajlnev,std::vector<int> v) const
 {
     std::ofstream fajl(fajlnev);
@@ -229,3 +258,8 @@ void GameMaster::fajl_kiiras(std::string fajlnev,std::vector<int> v) const
     fajl << endl;
     fajl.close();
 }
+
+void GameMaster::save_fajlba() const
+{
+    fajl_kiiras(_fajl_save,_save);
+}
diff --git a/gamemaster.hpp b/gamemaster.hpp
index 37d84a0..2bc84b2 100644
--- a/gamemaster.hpp
+++ b/gamemaster.hpp
@@ -14,7 +14,7 @@ class GameMaster
 
         std::vector<int> fajl_beolvasas(std::string fajlnev);
         void fajl_kiiras(std::string fajlnev, std::vector<int> v) const;
-        void save_fajlba();
+        void save_fajlba() const;
 
         std::vector<int> get_feladat();
         std::vector<int> get_save();
@@ -27,12 +27,14 @@ class GameMaster
         virtual bool kesz();
         virtual bool szabalyos_e(int,int);
         virtual void uj_jatek();
+        virtual void kezdo_jatek();
 
     protected:
         std::string _fajl_megoldas, _fajl_feladat, _fajl_save;
         std::vector<int> _megoldas, _feladat, _save;
         Application *_parent;
         std::vector<std::vector<int>> _negyzetek;
+        int _palyaszam;
 };
 
 #endif // GAMEMASTER_HPP
diff --git a/megoldas.txt b/megoldas.txt
index e0e3317..27ef7f0 100644
--- a/megoldas.txt
+++ b/megoldas.txt
@@ -1 +1 @@
-9 8 5 6 2 1 4 7 3 3 7 6 5 4 9 8 2 1 2 4 1 7 3 8 5 6 9 8 6 7 9 5 4 1 3 2 5 3 4 2 1 7 9 8 6 1 9 2 8 6 3 7 5 4 4 5 3 1 7 2 6 9 8 6 2 9 4 8 5 3 1 7 7 1 8 3 9 6 2 4 5
\ No newline at end of file
+9 8 5 6 2 1 4 7 3 3 7 6 5 4 9 8 2 1 2 4 1 7 3 8 5 6 9 8 6 7 9 5 4 1 3 2 5 3 4 2 1 7 9 8 6 1 9 2 8 6 3 7 5 4 4 5 3 1 7 2 6 9 8 6 2 9 4 8 5 3 1 7 7 1 8 3 9 6 2 4 5 
diff --git a/megoldas1.txt b/megoldas1.txt
new file mode 100644
index 0000000..e0e3317
--- /dev/null
+++ b/megoldas1.txt
@@ -0,0 +1 @@
+9 8 5 6 2 1 4 7 3 3 7 6 5 4 9 8 2 1 2 4 1 7 3 8 5 6 9 8 6 7 9 5 4 1 3 2 5 3 4 2 1 7 9 8 6 1 9 2 8 6 3 7 5 4 4 5 3 1 7 2 6 9 8 6 2 9 4 8 5 3 1 7 7 1 8 3 9 6 2 4 5
\ No newline at end of file
diff --git a/megoldas2.txt b/megoldas2.txt
new file mode 100644
index 0000000..91fb187
--- /dev/null
+++ b/megoldas2.txt
@@ -0,0 +1 @@
+8 1 4 7 9 6 5 3 2 9 2 7 5 1 3 6 4 8 5 3 6 4 2 8 7 1 9 6 4 1 8 7 5 2 9 3 3 5 2 1 4 9 8 6 7 7 9 8 3 6 2 1 5 4 1 6 9 2 8 4 3 7 5 2 7 5 9 3 1 4 8 6 4 8 3 6 5 7 9 2 1
\ No newline at end of file
diff --git a/megoldas3.txt b/megoldas3.txt
new file mode 100644
index 0000000..e6c93dc
--- /dev/null
+++ b/megoldas3.txt
@@ -0,0 +1 @@
+3 6 1 4 2 9 5 8 7 5 9 8 7 1 3 6 2 4 4 2 7 5 6 8 1 9 3 6 3 4 8 9 5 7 1 2 1 8 9 2 3 7 4 5 6 2 7 5 1 4 6 9 3 8 7 5 3 6 8 1 2 4 9 8 1 2 9 7 4 3 6 5 9 4 6 3 5 2 8 7 1
\ No newline at end of file
diff --git a/myapp.cpp b/myapp.cpp
index 19dabe6..697bb4b 100644
--- a/myapp.cpp
+++ b/myapp.cpp
@@ -44,6 +44,20 @@ int MyApp::action(std::string id, genv::event ev, int focus)
                 palya[i]->set_aura(false);
             }
         }
+        set<int> szabalytalan_set = _game->szabalytalanok();
+
+        for (int i=0; i<palya.size(); i++)
+        {
+            if (szabalytalan_set.find(i) != szabalytalan_set.end())
+            {
+                palya[i]->set_szabalyos(false);
+            }
+            else
+            {
+                palya[i]->set_szabalyos(true);
+            }
+        }
+        palya[focus]->kezel(ev);
     }
 
     if (id=="key")
@@ -92,6 +106,13 @@ int MyApp::action(std::string id, genv::event ev, int focus)
             }
         }
 
+        /*// csak arra volt, hogy teszteljem a palyak valtakozasat
+        if (ev.keycode==key_enter)
+        {
+            uj_palya();
+            focus = action("start", ev, 0);
+        }*/
+
         if (ev.keycode >= 49 && ev.keycode <= 57)
         {
             palya[focus]->set_ertek(ev.keycode-48);
@@ -113,8 +134,10 @@ int MyApp::action(std::string id, genv::event ev, int focus)
 
             if (_game->kesz())  /// UJ JATEK
             {
-                cout << "BEFEJEZTED OMG" << endl;
-                _replay_btn = new Button(this, 30,30,300,80,"uj jatek", [=](){uj_jatek();});
+                // cout << "BEFEJEZTED" << endl;
+
+                uj_palya();
+                focus = action("start", ev, 0);
             }
         }
 
@@ -172,7 +195,25 @@ int MyApp::action(std::string id, genv::event ev, int focus)
     return focus;
 }
 
-void MyApp::uj_jatek()
+void MyApp::uj_palya()
 {
-    cout << "megnyomtad a replayt" << endl;
+    _game->uj_jatek();
+
+    palya.clear();
+    vector<int> game_feladat = _game->get_feladat();
+    vector<int> game_save = _game->get_save();
+
+    for (int j=0; j<9; j++)  // sor
+    {
+        for (int i=0; i<9; i++)  // oszlop
+        {
+            Index sorszam_index(j,i);
+            Field *f = new Field(this,i*78,j*78,78,sorszam,game_feladat[sorszam]);
+            palya.push_back(f);
+            if (game_feladat[sorszam] == 0)
+            {
+                palya[sorszam]->set_ertek(game_save[sorszam]);
+            }
+        }
+    }
 }
diff --git a/myapp.hpp b/myapp.hpp
index c56b8cd..3cf2734 100644
--- a/myapp.hpp
+++ b/myapp.hpp
@@ -5,18 +5,16 @@
 #include "widget.hpp"
 #include "field.hpp"
 #include "gamemaster.hpp"
-#include "button.hpp"
 
 class MyApp : public Application
 {
     public:
         MyApp(int,int);
         int action(std::string,genv::event,int) override;
-        void uj_jatek();
+        void uj_palya();
 
     protected:
         std::vector<Field*> palya;
-        Button* _replay_btn;
 };
 
 #endif // MYAPP_HPP
diff --git a/palyaszam.txt b/palyaszam.txt
new file mode 100644
index 0000000..56a6051
--- /dev/null
+++ b/palyaszam.txt
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/save.txt b/save.txt
index e49992e..76742c8 100644
--- a/save.txt
+++ b/save.txt
@@ -1 +1 @@
-0 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 0 3 0 5 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0 
+9 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 5 3 0 0 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0 
-- 
GitLab