Skip to content
Snippets Groups Projects
Commit ee9ff6a3 authored by Borostyán József Bálint's avatar Borostyán József Bálint :flag_al:
Browse files

Upload New File

parent 9c11968d
Branches
No related tags found
No related merge requests found
#include "jatekmester.hpp"
JatekMester::JatekMester(int sorok, int oszlopok)
: rows(sorok), cols(oszlopok), aktualisJatekos(1), nyertes(0) {
tabla = std::vector<std::vector<int>>(rows, std::vector<int>(cols, 0));
}
int JatekMester::getWinner() const {
return nyertes; // 1=piros 2=sarga 0=nincs
}
bool JatekMester::megtelt() const {
for (int c = 0; c < cols; ++c) {
if (tabla[0][c] == 0) {
return false;
}
}
return true;
}
bool JatekMester::lepes(int oszlop) {
if (nyertes != 0) return false;
if (oszlop < 0 || oszlop >= cols) return false;
for (int i = rows - 1; i >= 0; --i) {
if (tabla[i][oszlop] == 0) {
tabla[i][oszlop] = aktualisJatekos;
int eredmeny = ellenoriz();
if (eredmeny != 0) {
nyertes = eredmeny;
} else {
aktualisJatekos = 3 - aktualisJatekos;
}
return true;
}
}
return false;
if (nyertes != 0) return false;
if (oszlop < 0 || oszlop >= cols) return false;
for (int i = rows - 1; i >= 0; --i) {
if (tabla[i][oszlop] == 0) {
tabla[i][oszlop] = aktualisJatekos;
int eredmeny = ellenoriz();
if (eredmeny != 0) {
nyertes = eredmeny;
} else if (megtelt()) {
nyertes = 3; // dontetlen
} else {
aktualisJatekos = 3 - aktualisJatekos;
}
return true;
}
}
return false;
}
int JatekMester::get(int sor, int oszlop) const {
if (sor < 0 || sor >= rows || oszlop < 0 || oszlop >= cols) return 0;
return tabla[sor][oszlop];
}
int JatekMester::jatekos() const {
return aktualisJatekos;
}
int JatekMester::ellenoriz() {
for (int r = 0; r < rows; ++r) {
for (int c = 0; c < cols; ++c) {
int p = tabla[r][c];
if (p == 0) continue;
// vizszintes
if (c + 3 < cols &&
p == tabla[r][c+1] &&
p == tabla[r][c+2] &&
p == tabla[r][c+3]) return p;
// oszlop
if (r + 3 < rows &&
p == tabla[r+1][c] &&
p == tabla[r+2][c] &&
p == tabla[r+3][c]) return p;
// atlo 1
if (r + 3 < rows && c + 3 < cols &&
p == tabla[r+1][c+1] &&
p == tabla[r+2][c+2] &&
p == tabla[r+3][c+3]) return p;
// atlo 2
if (r + 3 < rows && c - 3 >= 0 &&
p == tabla[r+1][c-1] &&
p == tabla[r+2][c-2] &&
p == tabla[r+3][c-3]) return p;
}
}
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment