Select Git revision
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() {}