diff --git a/gamemaster.cpp b/gamemaster.cpp
index f52cc4d57f586d38c68ecb978d1e1beefee4f0dd..379a6e977842f2cebebb563381ea68e525fbdbe1 100644
--- a/gamemaster.cpp
+++ b/gamemaster.cpp
@@ -77,10 +77,26 @@ set<int> GameMaster::szabalytalanok()
             }
         }
     }
-
     return s;
 }
 
+bool GameMaster::szabalyos_e(int jelenlegi_int, int jelenlegi_ertek)
+{
+    bool valasz=true;
+    std::set<int> aura_halmaz = aura(jelenlegi_int);
+    for (int i=0; i<_megoldas.size(); i++)
+    {
+        if (aura_halmaz.find(i) != aura_halmaz.end())
+        {
+            if (jelenlegi_ertek == _megoldas[i] && _megoldas[i]!=0)
+            {
+                valasz=false;
+            }
+        }
+    }
+    return valasz;
+}
+
 int GameMaster::negyzet_szama(Index jelenlegi)
 {
     if (jelenlegi.sor <= 2)
@@ -125,6 +141,42 @@ bool GameMaster::kesz()
     return valasz;
 }
 
+void GameMaster::uj_jatek()
+{
+    for (int i=0; i<_megoldas.size(); i++)
+    {
+        _megoldas[i]=0;
+    }
+
+    for (int i=0; i<17; i++)
+    {
+        _megoldas[i] = rand()%9+1;
+        cout << i << " " <<_megoldas[i] << endl;
+
+        while (!szabalyos_e(i,_megoldas[i]))
+        {
+            _megoldas[i] = rand()%9+1;
+            cout << i << " " << _megoldas[i] << endl;
+        }
+        //fajl_kiiras("megoldas_generalo.txt",_megoldas);
+    }
+
+    for (int i=17; i<_megoldas.size(); i++)
+    {
+        for (int j=1; j<=9; j++)
+        {
+            if (szabalyos_e(i,j))
+            {
+                _megoldas[i]=j;
+                j = 9;
+            }
+        }
+        cout << i << " " << _megoldas[i] << endl;
+    }
+
+    fajl_kiiras("megoldas_generalo.txt",_megoldas);
+}
+
 void GameMaster::save(int sorszam, int ertek)
 {
     _save[sorszam]=ertek;
diff --git a/gamemaster.hpp b/gamemaster.hpp
index 8efc431c1ed66bf69bb2422ab98d1654ac9bcdec..37d84a035f75d952bde64ab1fdf4e79b84fd460b 100644
--- a/gamemaster.hpp
+++ b/gamemaster.hpp
@@ -22,9 +22,12 @@ class GameMaster
 
         std::set<int> aura(int);
         std::set<int> szabalytalanok();
-        virtual bool kesz();
         virtual int negyzet_szama(Index);
 
+        virtual bool kesz();
+        virtual bool szabalyos_e(int,int);
+        virtual void uj_jatek();
+
     protected:
         std::string _fajl_megoldas, _fajl_feladat, _fajl_save;
         std::vector<int> _megoldas, _feladat, _save;