Skip to content
Snippets Groups Projects
Select Git revision
  • 057a1392932f6052f47a769097ea7ca3c32f4516
  • master default protected
2 results

main.cpp

Blame
  • mester.cpp 3.16 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();
            PlayerChange();
        }
    }
    
    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() {}