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(); };