Skip to content
Snippets Groups Projects
Commit 89f8f055 authored by Barna Réka Emese's avatar Barna Réka Emese
Browse files

Upload New File

parent f6de800c
No related branches found
No related tags found
No related merge requests found
#include "sajatalkalmazas.hpp"
#include <iostream>
using namespace genv;
SajatAlkalmazas::SajatAlkalmazas(int szelesseg, int magassag)
: Alkalmazas(szelesseg, magassag), allapotUzenet_("")
{
// Betűtípus betöltése
if (!gout.load_font("LiberationSans-Regular.ttf", 20))
{
std::cerr << "Nem sikerult betolteni a fontot!\n";
}
// 15x15-ös játék inicializálása
jatekVezerlo_ = new JatekVezerlo(15);
jatekTer_ = new JatekTer(this, 50, 50, 600, jatekVezerlo_); // Nagyobb játéktér
ujJatekGomb_ = new Gomb(this, 670, 50, 100, 40, "Uj jatek", [this](){ ujJatekInditas(); });
// Widgetek regisztrálása
widgetRegisztral(jatekTer_);
widgetRegisztral(ujJatekGomb_);
// Kezdeti állapot frissítése
frissitKovetkezoJatekos();
}
void SajatAlkalmazas::akcio(std::string azonosito)
{
if (azonosito == "escape")
{
exit(0);
}
else if (azonosito == "space" || azonosito == "n")
{
ujJatekInditas();
}
else if (jatekTer_->vanFokuszkent())
{
if (azonosito == "up")
{
jatekTer_->mozgatFokuszt(0, -1);
}
else if (azonosito == "down")
{
jatekTer_->mozgatFokuszt(0, 1);
}
else if (azonosito == "left")
{
jatekTer_->mozgatFokuszt(-1, 0);
}
else if (azonosito == "right")
{
jatekTer_->mozgatFokuszt(1, 0);
}
else if (azonosito == "enter")
{
jatekTer_->lepesFokuszuPoziciora();
frissitKovetkezoJatekos();
frissitAllapotUzenet();
}
}
gout << refresh;
}
void SajatAlkalmazas::ujJatekInditas()
{
jatekVezerlo_->ujJatek();
jatekTer_->resetFokuszt();
allapotUzenet_ = "";
frissitKovetkezoJatekos();
gout << refresh;
}
void SajatAlkalmazas::rajzolFeliratokat()
{
// Következő játékos felirat
buffer << color(50, 50, 50)
<< move_to(670, 120)
<< box(200, 30);
buffer.load_font("LiberationSans-Regular.ttf", 20);
//buffer.load_font("arial.ttf", 20);
std::string jatekos = (jatekVezerlo_->aktualisJatekos() == JatekVezerlo::X_JATEKOS) ? "X" : "O";
buffer << color(255, 255, 255)
<< move_to(670, 140)
<< text("Kovetkezo: " + jatekos);
// Állapotüzenet
if (!allapotUzenet_.empty())
{
buffer << color(50, 50, 50)
<< move_to(670, 170)
<< box(200, 30);
buffer << color(255, 255, 0)
<< move_to(670, 190)
<< text(allapotUzenet_);
}
}
void SajatAlkalmazas::frissitAllapotUzenet() {
if (!jatekVezerlo_) {
std::cerr << "HIBA: Nincs jatekVezerlo_!" << std::endl;
return;
}
JatekVezerlo::Jatekos nyertes = jatekVezerlo_->nyertesEllenorzes();
bool voltValtozas = false;
if (nyertes != JatekVezerlo::URES) {
std::string ujUzenet = (nyertes == JatekVezerlo::X_JATEKOS)
? "X jatekos nyert!"
: "O jatekos nyert!";
if (allapotUzenet_ != ujUzenet) {
allapotUzenet_ = ujUzenet;
voltValtozas = true;
std::cerr << "Nyertes detektalva: " << allapotUzenet_ << std::endl;
}
}
else if (jatekVezerlo_->teleVanATabla()) {
if (allapotUzenet_ != "Dontetlen!") {
allapotUzenet_ = "Dontetlen!";
voltValtozas = true;
std::cerr << "Dontetlen detektalva" << std::endl;
}
}
else {
if (!allapotUzenet_.empty()) {
allapotUzenet_.clear();
voltValtozas = true;
std::cerr << "Allapot uzenet torolve" << std::endl;
}
}
if (voltValtozas) {
rajzolFeliratokat();
gout << refresh;
}
}
void SajatAlkalmazas::frissitKovetkezoJatekos()
{
// Csak az állapot frissítése, nem rajzolás
frissitAllapotUzenet();
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment