From cc1ed139d3342d93ed21ad04603430e6d12b575f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Papp=20Benj=C3=A1min?= <papbe5@cortex.itk.ppke.hu>
Date: Sun, 19 May 2024 15:33:20 +0200
Subject: [PATCH] =?UTF-8?q?player=20l=C3=A9trehozva,=20m=C3=A1r=20lehet=20?=
 =?UTF-8?q?=C3=A1br=C3=A1kat=20nyomni=20a=20p=C3=A1ly=C3=A1ra?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 main.cpp      |  1 -
 mester.cpp    | 29 ++++++++++++++++++++++-------
 mester.h      |  9 ++++++---
 palya.cpp     |  2 +-
 palya.h       |  2 +-
 palyamezo.cpp | 16 ++++++++++++++++
 palyamezo.h   |  8 ++++++--
 player.cpp    | 13 +++++++++++++
 player.h      | 18 ++++++++++++++++++
 widget.cpp    | 10 ++++++----
 10 files changed, 89 insertions(+), 19 deletions(-)
 create mode 100644 player.cpp
 create mode 100644 player.h

diff --git a/main.cpp b/main.cpp
index 9a5d6f5..dbdcfe3 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,6 +1,5 @@
 #include "palya.h"
 
-using namespace std;
 using namespace genv;
 
 int main()
diff --git a/mester.cpp b/mester.cpp
index 0901d21..3370a8e 100644
--- a/mester.cpp
+++ b/mester.cpp
@@ -1,25 +1,40 @@
 #include "mester.h"
 #include "palya.h"
 #include "palyamezo.h"
+#include "player.h"
 #include <iostream>
 
 using namespace genv;
+using namespace std;
 
-Mester::Mester(Palya* _p) : p(_p) {}
+Mester::Mester()
+{
+    player1 = new Player("Player1", 0);
+    player2 = new Player("Player2", 1);
+    aktiv = player1;
+}
+
+void Mester::PlayerChange(){
+    if(aktiv == player1)    {aktiv = player2;}
+    else
+        if(aktiv == player2)    {aktiv = player1;}
+}
 
 void Mester::iranyitas(Palyamezo* f, event ev) {
-    if(f->hozzaer(ev) && !f->filled && !f->chosen){
+    if(f->hozzaer(ev) && !f->get_filled() && !f->get_chosen()){
         f->chosen_draw();
         f->set_chosen();
     }
-    if(!f->hozzaer(ev) && !f->filled && f->chosen){
+    if(!f->hozzaer(ev) && !f->get_filled() && f->get_chosen()){
         f->draw();
         f->reset_chosen();
     }
-    if(f->select(ev) && !f->filled)
-        lepes = true;
+    if(f->select(ev) && !f->get_filled()){
+        cout << aktiv->get_name() << endl;
+        f->mark(aktiv->get_sorszam());
+        f->fillin();
+        PlayerChange();
+    }
 }
 
-void Mester::turn() {}
-
 Mester::~Mester() {}
diff --git a/mester.h b/mester.h
index 62aeca9..3df8040 100644
--- a/mester.h
+++ b/mester.h
@@ -4,16 +4,19 @@
 
 class Palya;
 class Palyamezo;
+class Player;
 
 class Mester
 {
     Palya* p;
     genv::event ev;
-    bool lepes = false;
+    Player* player1;
+    Player* player2;
+    Player* aktiv;
 public:
-    Mester(Palya* _p);
+    Mester();
     void iranyitas(Palyamezo* f, genv::event ev);
-    void turn();
+    void PlayerChange();
     ~Mester();
 };
 
diff --git a/palya.cpp b/palya.cpp
index 363310f..6596218 100644
--- a/palya.cpp
+++ b/palya.cpp
@@ -16,7 +16,7 @@ Palya::Palya()
             negyzet->draw();
         }
     }
-    mesztor = new Mester(this);
+    mesztor = new Mester();
 }
 
 void Palya::jatek(event ev){
diff --git a/palya.h b/palya.h
index 6bf74b3..01bef8e 100644
--- a/palya.h
+++ b/palya.h
@@ -10,9 +10,9 @@ class Palya
 {
     const int XX = 1000;
     const int YY = 1000;
+    std::vector<Palyamezo*> palyaterulet;
 public:
     Palya();
-    std::vector<Palyamezo*> palyaterulet;
     Mester* mesztor;
     void jatek(genv::event ev);
     ~Palya();
diff --git a/palyamezo.cpp b/palyamezo.cpp
index bda2805..cceab95 100644
--- a/palyamezo.cpp
+++ b/palyamezo.cpp
@@ -1,4 +1,6 @@
 #include "palyamezo.h"
+#define red 235,25,25
+#define blue 0,175,255
 
 using namespace genv;
 
@@ -17,6 +19,12 @@ void Palyamezo::chosen_draw(){
     gout << move_to(x+1,y+1) << color(t,t,t) << box(w-2,h-2);
 }
 
+bool Palyamezo::get_filled() {return filled;}
+
+void Palyamezo::fillin() {filled = true;}
+
+bool Palyamezo::get_chosen() {return chosen;}
+
 void Palyamezo::set_chosen(){
     if(!chosen)
         chosen = true;
@@ -27,4 +35,12 @@ void Palyamezo::reset_chosen(){
         chosen = false;
 }
 
+void Palyamezo::mark(int id){
+    gout << move_to(x+1,y+1) << color(0,0,0) << box(w-2,h-2);
+    if(id == 0)
+        gout << move_to(x+5,y+5) << color(red) << line(0,30) << line(30,0) << line(0,-30) << line(-30,0);
+    if(id == 1)
+        gout << move_to(x+5,y+35) << color(blue) << line(30,0) << line_to(x+w/2,y+5) << line_to(x+5,y+35);
+}
+
 Palyamezo::~Palyamezo() {}
diff --git a/palyamezo.h b/palyamezo.h
index af4b2d3..107f436 100644
--- a/palyamezo.h
+++ b/palyamezo.h
@@ -6,15 +6,19 @@ class Palyamezo : public Widget
 {
     int index_m;
     int index_n;
+    bool filled = false;
+    bool chosen = false;
 public:
     Palyamezo(Palya* _p, int _x, int _y, int _w, int _h, int _m, int _n);
     ~Palyamezo();
     void draw() override;
     void chosen_draw();
-    bool filled = false;
-    bool chosen = false;
+    bool get_filled();
+    void fillin();
+    bool get_chosen();
     void set_chosen();
     void reset_chosen();
+    void mark(int id);
 };
 
 #endif // PALYAMEZO_H
diff --git a/player.cpp b/player.cpp
new file mode 100644
index 0000000..3e41359
--- /dev/null
+++ b/player.cpp
@@ -0,0 +1,13 @@
+#include "player.h"
+
+using namespace std;
+
+Player::Player(string _name, int _sorszam) : name(_name), sorszam(_sorszam) {}
+
+string Player::get_name() {return name;}
+
+int Player::get_pontszam() {return pontszam;}
+
+int Player::get_sorszam() {return sorszam;}
+
+Player::~Player() {}
diff --git a/player.h b/player.h
new file mode 100644
index 0000000..18e9519
--- /dev/null
+++ b/player.h
@@ -0,0 +1,18 @@
+#ifndef PLAYER_H
+#define PLAYER_H
+#include <string>
+
+class Player
+{
+    std::string name;
+    int pontszam = 0;
+    int sorszam;
+public:
+    Player(std::string _nev, int _sorszam);
+    std::string get_name();
+    int get_pontszam();
+    int get_sorszam();
+    ~Player();
+};
+
+#endif // PLAYER_H
diff --git a/widget.cpp b/widget.cpp
index 61c0f6f..fe57a29 100644
--- a/widget.cpp
+++ b/widget.cpp
@@ -12,8 +12,10 @@ bool Widget::hozzaer(event ev){
 }
 
 bool Widget::select(event ev){
-    if(hozzaer(ev) && ev.button==btn_left)
-        return true;
-    if(!hozzaer(ev) && ev.button==btn_left)
-        return false;
+    if(ev.type == ev_mouse){
+        if(hozzaer(ev) && ev.button==btn_left)
+            return true;
+        else
+            return false;
+    }
 }
-- 
GitLab