Skip to content
Snippets Groups Projects
Select Git revision
  • a2c4acfa4456d65b803e1018998285d91378554f
  • main default protected
2 results

mester.cpp

Blame
  • mester.cpp 4.56 KiB
    #include "mester.h"
    #include "palya.h"
    #include "palyamezo.h"
    #include "player.h"
    #include <vector>
    #include <iostream>
    
    using namespace genv;
    
    Mester::Mester()
    {
        player1 = new Player("Player1", 1);
        player2 = new Player("Player2", 2);
        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;}
    }
    
    void Mester::iranyitas(Palyamezo* f, event ev) {
        if(f->hozzaer(ev) && !f->get_filled() && !f->get_hovered()){
            f->hovered_draw();
            f->set_hovered();
        }
        if(!f->hozzaer(ev) && !f->get_filled() && f->get_hovered()){
            f->draw();
            f->reset_hovered();
        }
        if(f->select(ev) && !f->get_filled()){
            f->occupy(aktiv->get_sorszam());
            f->fillin();
            lepes = true;
        }
    }
    
    int Mester::moncsok_vizsg(Palyamezo* f, int szam){
        int streak = 1;
        for(int i = 1; i<=4;){
            if(szam-(i*20) > 0 && negyzetek[szam-(i*20)]->occupied_by == f->occupied_by){
                streak++;
                std::cout << "bal-fel" << std::endl;
                std::cout << streak << std::endl;
                i++;
            } else {
                i = 5;
            }
        }
        for(int i = 1; i<=4;){
            if(szam+(i*20) <= 400 && negyzetek[szam+(i*20)]->occupied_by == f->occupied_by){
                streak++;
                std::cout << "jobb-le" << std::endl;
                std::cout << streak << std::endl;
                i++;
            } else {
                i = 5;
            }
        }
        return streak;
    }
    
    int Mester::monno_vizsg(Palyamezo* f, int szam){
        int streak = 1;
        for(int i = 1; i<=4;){
            if(szam-(i*18) > 0 && negyzetek[szam-(i*18)]->occupied_by == f->occupied_by){
                streak++;
                std::cout << "bal-le" << std::endl;
                std::cout << streak << std::endl;
                i++;
            } else {
                i = 5;
            }
        }
        for(int i = 1; i<=4;){
            if(szam+(i*18) <= 400 && negyzetek[szam+(i*18)]->occupied_by == f->occupied_by){
                streak++;
                std::cout << "bal-fel" << std::endl;
                std::cout << streak << std::endl;
                i++;
            } else {
                i = 5;
            }
        }
        return streak;
    }
    
    int Mester::horizont_vizsg(Palyamezo* f, int szam){
        int streak = 1;
        for(int i = 1; i<=4;){
            if(szam-(i*19) > 0 && negyzetek[szam-(i*19)]->occupied_by == f->occupied_by){
                streak++;
                std::cout << "bal" << std::endl;
                std::cout << streak << std::endl;
                i++;
            } else {
                i = 5;
            }
        }
        for(int i = 1; i<=4;){
            if(szam+(i*19) <= 400 && negyzetek[szam+(i*19)]->occupied_by == f->occupied_by){
                streak++;
                std::cout << "jobb" << std::endl;
                std::cout << streak << std::endl;
                i++;
            } else {
                i = 5;
            }
        }
        return streak;
    }
    
    int Mester::vertic_vizsg(Palyamezo* f, int szam){
        int streak = 1;
        for(int i = 1; i<=4;){
            if(szam-i > 0 && negyzetek[szam-i]->occupied_by == negyzetek[szam]->occupied_by){
                streak++;
                std::cout << "fel" << std::endl;
                std::cout << streak << std::endl;
                i++;
            } else {
                i = 5;
            }
        }
        for(int i = 1; i<=4;){
            if(szam+i <= 400 && negyzetek[szam+i]->occupied_by == f->occupied_by){
                streak++;
                std::cout << "le" << std::endl;
                std::cout << streak << std::endl;
                i++;
            } else {
                i = 5;
            }
        }
        return streak;
    }
    
    bool Mester::streak_vizsgalo(Palyamezo* vizsgalt){
        int vizsgalt_index = vizsgalt->index;
        if(moncsok_vizsg(vizsgalt, vizsgalt_index) >= 5 || monno_vizsg(vizsgalt, vizsgalt_index) >= 5 || horizont_vizsg(vizsgalt, vizsgalt_index) >= 5 || vertic_vizsg(vizsgalt, vizsgalt_index) >= 5){
            std::cout << "streak" << std::endl;
            return true;}
        else {
            std::cout << "not really" << std::endl;
            return false;}
    }
    
    void Mester::gameover() {}
    
    void Mester::szabalyzat(Palyamezo* f){
        if(lepes && turn < 400){
            if(streak_vizsgalo(f))
                aktiv->pontszam_novelo();
            PlayerChange();
            lepes = false;
            turn++;
            std::cout << turn << std::endl;
        }
        if(player1->get_pontszam() == 3 || player2->get_pontszam()  == 3 || turn == 400)
            gameover();
    }
    
    
    Mester::~Mester() {}