diff --git a/mester.cpp b/mester.cpp
index e7d927868b39d8fd97c689adf03a33e2348cbdd3..69a21f5e836085d94def1f3a9e4115e8d42ad551 100644
--- a/mester.cpp
+++ b/mester.cpp
@@ -2,6 +2,8 @@
 #include "palya.h"
 #include "palyamezo.h"
 #include "player.h"
+#include <vector>
+#include <iostream>
 
 using namespace genv;
 
@@ -12,6 +14,10 @@ Mester::Mester()
     aktiv = player1;
 }
 
+void Mester::set_negyzetek(std::vector<Palyamezo*> v){
+    negyzetek = v;
+}
+
 void Mester::PlayerChange(){
     if(aktiv == player1)    {aktiv = player2;}
     else if(aktiv == player2)    {aktiv = player1;}
@@ -33,6 +39,91 @@ void Mester::iranyitas(Palyamezo* f, event ev) {
     }
 }
 
-void Mester::szabalyzat() {}
+int Mester::atlo_vizsg(Palyamezo* f, int szam){
+    int streak = 1;
+    for(int i = 1; i<=4;){
+        if(negyzetek[szam-(i*20)]->occupied_by == f->occupied_by){
+            streak++;
+            if(szam-((i+1)*20) > 0)
+                i++;
+        } else {
+            i = 5;
+        }
+    }
+    for(int i = 1; i<=4;){
+        if(negyzetek[szam+(i*20)]->occupied_by == f->occupied_by){
+            streak++;
+            if(szam+((i+1)*20) < 381)
+                i++;
+        } else {
+            i = 5;
+        }
+    }
+    return streak;
+}
+
+int Mester::horizont_vizsg(Palyamezo* f, int szam){
+    int streak = 1;
+    for(int i = 1; i<=4;){
+        if(negyzetek[szam-(i*19)]->occupied_by == f->occupied_by){
+            streak++;
+            std::cout << "daaamn" << std::endl;
+            if(szam-((i+1)*19) > 0)
+                i++;
+        } else {
+            i = 5;
+        }
+    }
+    for(int i = 1; i<=4;){
+        if(negyzetek[szam+(i*19)]->occupied_by == f->occupied_by){
+            streak++;
+            if(szam+((i+1)*19) < 381)
+                i++;
+        } else {
+            i = 5;
+        }
+    }
+    return streak;
+}
+
+int Mester::vertic_vizsg(Palyamezo* f, int szam){
+    int streak = 1;
+    for(int i = 1; i<=4;){
+        if(negyzetek[szam-i]->occupied_by == f->occupied_by){
+            streak++;
+            if(szam-(i+1) > 0)
+                i++;
+        } else {
+            i = 5;
+        }
+    }
+    for(int i = 1; i<=4;){
+        if(negyzetek[szam+i]->occupied_by == f->occupied_by){
+            streak++;
+            if(szam+(i+1) < 381)
+                i++;
+        } else {
+            i = 5;
+        }
+    }
+    return streak;
+}
+
+bool Mester::streak_vizsgalo(Palyamezo* vizsgalt){
+    int vizsgalt_index = vizsgalt->index;
+    if(atlo_vizsg(vizsgalt, vizsgalt_index) >= 5 || horizont_vizsg(vizsgalt, vizsgalt_index) >= 5 || vertic_vizsg(vizsgalt, vizsgalt_index) >= 5){
+        return true;
+        std::cout << "daaamn" << std::endl;}
+    else {
+        return false;
+        std::cout << "not really" << std::endl;}
+}
+
+void Mester::szabalyzat(Palyamezo* f){
+    streak_vizsgalo(f);
+    //if(streak_vizsgalo())
+        //aktiv->pontszam_novelo();
+}
+
 
 Mester::~Mester() {}
diff --git a/mester.h b/mester.h
index e4c3da24a7e34ae117e0841f991a06eeb8e8a1be..f9c1bf68f28bf09366407f9d893f82a0f2238733 100644
--- a/mester.h
+++ b/mester.h
@@ -14,9 +14,14 @@ class Mester
     std::vector<Palyamezo*> negyzetek;
 public:
     Mester();
+    void set_negyzetek(std::vector<Palyamezo*> v);
     void iranyitas(Palyamezo* f, genv::event ev);
     void PlayerChange();
-    void szabalyzat();
+    int atlo_vizsg(Palyamezo* f, int szam);
+    int horizont_vizsg(Palyamezo* f, int szam);
+    int vertic_vizsg(Palyamezo* f, int szam);
+    bool streak_vizsgalo(Palyamezo* f);
+    void szabalyzat(Palyamezo* f);
     ~Mester();
 };
 
diff --git a/palya.cpp b/palya.cpp
index 6596218a27048ab5c3d189165c4074a0c2a22e29..eef29e2c975a8680985f775f7a4273978f291fe6 100644
--- a/palya.cpp
+++ b/palya.cpp
@@ -11,7 +11,7 @@ Palya::Palya()
     gout.open(XX,YY);
     for(int i = 0; i<20; i++){
         for(int j = 0; j<20; j++){
-            Palyamezo* negyzet = new Palyamezo(this, 100+(i*40), 100+(j*40), 40, 40, i, j);
+            Palyamezo* negyzet = new Palyamezo(this, 100+(i*40), 100+(j*40), 40, 40, (19*i)+j);
             palyaterulet.push_back(negyzet);
             negyzet->draw();
         }
@@ -20,8 +20,12 @@ Palya::Palya()
 }
 
 void Palya::jatek(event ev){
-    for(Palyamezo* negyzet : palyaterulet)
+    mesztor->set_negyzetek(palyaterulet);
+    for(Palyamezo* negyzet : palyaterulet){
         mesztor->iranyitas(negyzet, ev);
+        if(negyzet->select(ev))
+            mesztor->szabalyzat(negyzet);
+    }
 }
 
 Palya::~Palya() {}
diff --git a/palyamezo.cpp b/palyamezo.cpp
index 8e1a46d65654661a8ad1f19342c67c572c8633a1..a62d9acf5f031c556704f0570ff22603b07a7d15 100644
--- a/palyamezo.cpp
+++ b/palyamezo.cpp
@@ -4,8 +4,8 @@
 
 using namespace genv;
 
-Palyamezo::Palyamezo(Palya* _p, int _x, int _y, int _w, int _h, int _m, int _n) :
-    Widget(_p, _x, _y, _w, _h), index_m(_m), index_n(_n) {}
+Palyamezo::Palyamezo(Palya* _p, int _x, int _y, int _w, int _h, int _i) :
+    Widget(_p, _x, _y, _w, _h), index(_i) {}
 
 void Palyamezo::draw(){
     int t = 255;
diff --git a/palyamezo.h b/palyamezo.h
index 16e4fdf0bd77d49cc42dbb982c57bcd8b35d4351..168d109f161e095415d7c3c4fe56632628c9aaf5 100644
--- a/palyamezo.h
+++ b/palyamezo.h
@@ -6,11 +6,10 @@ class Palyamezo : public Widget
 {
     bool filled = false;
     bool hovered = false;
-    int occupied_by = 0;
 public:
-    int index_m;
-    int index_n;
-    Palyamezo(Palya* _p, int _x, int _y, int _w, int _h, int _m, int _n);
+    int occupied_by = 0;
+    int index;
+    Palyamezo(Palya* _p, int _x, int _y, int _w, int _h, int _i);
     ~Palyamezo();
     void draw() override;
     void hovered_draw();
diff --git a/player.cpp b/player.cpp
index 3e413598f398dc862dd615da212e200dd570d3b0..5914062da1ebbbc9d9dca5a1a04ccc8494a9f974 100644
--- a/player.cpp
+++ b/player.cpp
@@ -8,6 +8,8 @@ string Player::get_name() {return name;}
 
 int Player::get_pontszam() {return pontszam;}
 
+void Player::pontszam_novelo() {pontszam++;}
+
 int Player::get_sorszam() {return sorszam;}
 
 Player::~Player() {}
diff --git a/player.h b/player.h
index 18e9519f2c452806742789eb4d4e48f901e0d969..9fcf7ecbf169536d281f1070752fee7614f06408 100644
--- a/player.h
+++ b/player.h
@@ -11,6 +11,7 @@ public:
     Player(std::string _nev, int _sorszam);
     std::string get_name();
     int get_pontszam();
+    void pontszam_novelo();
     int get_sorszam();
     ~Player();
 };