Skip to content
Snippets Groups Projects
Commit a2c4acfa authored by Papp Benjámin's avatar Papp Benjámin
Browse files

a streak vizsgálat még mindig hibás, így elég rapszódikus a mostmár látható pontszerzés

(debug version)
parent 4c62d9c3
Branches
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@ int main()
while (gin >> ev && ev.keycode!=key_escape)
{
tictac->jatek(ev);
tictac->grafikai_valtozas();
gout << refresh;
}
}
......
......@@ -35,26 +35,53 @@ void Mester::iranyitas(Palyamezo* f, event ev) {
if(f->select(ev) && !f->get_filled()){
f->occupy(aktiv->get_sorszam());
f->fillin();
PlayerChange();
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::atlo_vizsg(Palyamezo* f, int szam){
int Mester::monno_vizsg(Palyamezo* f, int szam){
int streak = 1;
for(int i = 1; i<=4;){
if(negyzetek[szam-(i*20)]->occupied_by == f->occupied_by){
if(szam-(i*18) > 0 && negyzetek[szam-(i*18)]->occupied_by == f->occupied_by){
streak++;
if(szam-((i+1)*20) > 0)
i++;
std::cout << "bal-le" << std::endl;
std::cout << streak << std::endl;
i++;
} else {
i = 5;
}
}
for(int i = 1; i<=4;){
if(negyzetek[szam+(i*20)]->occupied_by == f->occupied_by){
if(szam+(i*18) <= 400 && negyzetek[szam+(i*18)]->occupied_by == f->occupied_by){
streak++;
if(szam+((i+1)*20) < 381)
i++;
std::cout << "bal-fel" << std::endl;
std::cout << streak << std::endl;
i++;
} else {
i = 5;
}
......@@ -65,20 +92,21 @@ int Mester::atlo_vizsg(Palyamezo* f, int szam){
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){
if(szam-(i*19) > 0 && negyzetek[szam-(i*19)]->occupied_by == f->occupied_by){
streak++;
std::cout << "daaamn" << std::endl;
if(szam-((i+1)*19) > 0)
i++;
std::cout << "bal" << std::endl;
std::cout << streak << std::endl;
i++;
} else {
i = 5;
}
}
for(int i = 1; i<=4;){
if(negyzetek[szam+(i*19)]->occupied_by == f->occupied_by){
if(szam+(i*19) <= 400 && negyzetek[szam+(i*19)]->occupied_by == f->occupied_by){
streak++;
if(szam+((i+1)*19) < 381)
i++;
std::cout << "jobb" << std::endl;
std::cout << streak << std::endl;
i++;
} else {
i = 5;
}
......@@ -89,19 +117,21 @@ int Mester::horizont_vizsg(Palyamezo* f, int szam){
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){
if(szam-i > 0 && negyzetek[szam-i]->occupied_by == negyzetek[szam]->occupied_by){
streak++;
if(szam-(i+1) > 0)
i++;
std::cout << "fel" << std::endl;
std::cout << streak << std::endl;
i++;
} else {
i = 5;
}
}
for(int i = 1; i<=4;){
if(negyzetek[szam+i]->occupied_by == f->occupied_by){
if(szam+i <= 400 && negyzetek[szam+i]->occupied_by == f->occupied_by){
streak++;
if(szam+(i+1) < 381)
i++;
std::cout << "le" << std::endl;
std::cout << streak << std::endl;
i++;
} else {
i = 5;
}
......@@ -111,18 +141,27 @@ int Mester::vertic_vizsg(Palyamezo* f, int szam){
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;}
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 {
return false;
std::cout << "not really" << std::endl;}
std::cout << "not really" << std::endl;
return false;}
}
void Mester::gameover() {}
void Mester::szabalyzat(Palyamezo* f){
streak_vizsgalo(f);
//if(streak_vizsgalo())
//aktiv->pontszam_novelo();
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();
}
......
......@@ -8,20 +8,24 @@ class Player;
class Mester
{
Player* player1;
Player* player2;
Player* aktiv;
std::vector<Palyamezo*> negyzetek;
bool lepes = false;
int turn = 0;
public:
Mester();
Player* player1;
Player* player2;
void set_negyzetek(std::vector<Palyamezo*> v);
void iranyitas(Palyamezo* f, genv::event ev);
void PlayerChange();
int atlo_vizsg(Palyamezo* f, int szam);
int moncsok_vizsg(Palyamezo* f, int szam);
int monno_vizsg(Palyamezo* f, int szam);
int horizont_vizsg(Palyamezo* f, int szam);
int vertic_vizsg(Palyamezo* f, int szam);
bool streak_vizsgalo(Palyamezo* f);
void szabalyzat(Palyamezo* f);
void gameover();
~Mester();
};
......
#include <iostream>
#include "palya.h"
#include "palyamezo.h"
#include "mester.h"
#include "player.h"
#include "textwidget.h"
using namespace std;
using namespace genv;
......@@ -9,23 +10,44 @@ using namespace genv;
Palya::Palya()
{
gout.open(XX,YY);
for(int i = 0; i<20; i++){
for(int j = 0; j<20; j++){
Palyamezo* negyzet = new Palyamezo(this, 100+(i*40), 100+(j*40), 40, 40, (19*i)+j);
gout << font("LiberationSans-Regular.ttf",32);
for(int i = 1; i<=20; i++){
for(int j = 1; j<=20; j++){
Palyamezo* negyzet = new Palyamezo(this, 100+((i-1)*40), 100+((j-1)*40), 40, 40, 20*(i-1)+j);
palyaterulet.push_back(negyzet);
negyzet->draw();
}
}
mesztor = new Mester();
title = new TextWidget(this, 410, 30, 200, 50, "Tic-tac-toe");
title->draw();
gout << font("LiberationSans-Regular.ttf",24);
bo3 = new TextWidget(this, 30, 30, 200, 50, "Best of 3");
bo3->draw();
gout << font("LiberationSans-Regular.ttf",26);
pontok1 = new TextWidget(this, 300, 920, 40, 40, "0");
pontok2 = new TextWidget(this, 700, 920, 40, 40, "0");
nev1 = new TextWidget(this, 140, 920, 100, 40, mesztor->player1->get_name());
nev2 = new TextWidget(this, 800, 920, 100, 40, mesztor->player2->get_name());
pontok1->draw();
pontok2->draw();
nev1->draw();
nev2->draw();
}
void Palya::jatek(event ev){
mesztor->set_negyzetek(palyaterulet);
for(Palyamezo* negyzet : palyaterulet){
mesztor->iranyitas(negyzet, ev);
if(negyzet->select(ev))
mesztor->szabalyzat(negyzet);
mesztor->szabalyzat(negyzet);
}
}
void Palya::grafikai_valtozas(){
pontok1->set_text(to_string(mesztor->player1->get_pontszam()));
pontok2->set_text(to_string(mesztor->player2->get_pontszam()));
pontok1->draw();
pontok2->draw();
}
Palya::~Palya() {}
......@@ -5,16 +5,24 @@
class Mester;
class Palyamezo;
class TextWidget;
class Palya
{
const int XX = 1000;
const int YY = 1000;
TextWidget* title;
TextWidget* bo3;
TextWidget* nev1;
TextWidget* nev2;
TextWidget* pontok1;
TextWidget* pontok2;
public:
Palya();
std::vector<Palyamezo*> palyaterulet;
Mester* mesztor;
void jatek(genv::event ev);
void grafikai_valtozas();
~Palya();
};
......
#include "textwidget.h"
using namespace std;
using namespace genv;
TextWidget::TextWidget(Palya* _p, int _x, int _y, int _w, int _h, string _content) : Widget(_p, _x, _y, _w, _h), content(_content)
{
kezdo_hossz = (w - gout.twidth(content))/8;
kezdo_mag = (h - (gout.cascent()+gout.cdescent()))/2;
}
void TextWidget::set_text(string vmi) {content = vmi;}
void TextWidget::draw(){
gout << color(0,0,0)<<move_to(x,y)<< box(w,h); //border
gout << color(0,0,0) << move_to(x+1,y+1)<<box(w-2,h-2); //fill
gout << color(255,255,255)<<move_to(x+kezdo_hossz,y+kezdo_mag) << text(content); //text
}
TextWidget::~TextWidget(){}
#ifndef TEXTWIDGET_H
#define TEXTWIDGET_H
#include "widget.h"
class Palya;
class TextWidget : public Widget{
protected:
std::string content;
int kezdo_hossz;
int kezdo_mag;
public:
TextWidget(Palya* _p, int _x, int _y, int _w, int _h, std::string _content);
~TextWidget();
void set_text(std::string vmi);
void draw() override;
};
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment