From 4c62d9c3cf501d1428305f53cb6f05dbb5d306e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Papp=20Benj=C3=A1min?= <papbe5@cortex.itk.ppke.hu>
Date: Mon, 20 May 2024 00:08:15 +0200
Subject: [PATCH] =?UTF-8?q?m=C3=A9g=20nem=20pontosan=20ismeri=20fel=20a=20?=
 =?UTF-8?q?5jelet=20egym=C3=A1s=20mellett,=20de=20m=C3=A1r=20zavart,=20hog?=
 =?UTF-8?q?y=20r=C3=A9gen=20volt=20commit=20(debug=20version)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mester.cpp    | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 mester.h      |  7 +++-
 palya.cpp     |  8 +++--
 palyamezo.cpp |  4 +--
 palyamezo.h   |  7 ++--
 player.cpp    |  2 ++
 player.h      |  1 +
 7 files changed, 112 insertions(+), 10 deletions(-)

diff --git a/mester.cpp b/mester.cpp
index e7d9278..69a21f5 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 e4c3da2..f9c1bf6 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 6596218..eef29e2 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 8e1a46d..a62d9ac 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 16e4fdf..168d109 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 3e41359..5914062 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 18e9519..9fcf7ec 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();
 };
-- 
GitLab