From 5fcfa08d7fdc2cd9eebbccc7dc2109cf32c095ec Mon Sep 17 00:00:00 2001 From: Monoki Dorina <mondo1@cortex.itk.ppke.hu> Date: Sun, 19 May 2024 13:20:38 +0200 Subject: [PATCH] van 3 palya, ha veget er az egyik akkor elindul egy uj --- application.cpp | 1 - button.cpp | 42 ---------------------- button.hpp | 25 ------------- feladat.txt | 2 +- feladat1.txt | 1 + feladat2.txt | 1 + feladat3.txt | 1 + gamemaster.cpp | 96 +++++++++++++++++++++++++++++++++---------------- gamemaster.hpp | 4 ++- megoldas.txt | 2 +- megoldas1.txt | 1 + megoldas2.txt | 1 + megoldas3.txt | 1 + myapp.cpp | 49 ++++++++++++++++++++++--- myapp.hpp | 4 +-- palyaszam.txt | 1 + save.txt | 2 +- 17 files changed, 124 insertions(+), 110 deletions(-) delete mode 100644 button.cpp delete mode 100644 button.hpp create mode 100644 feladat1.txt create mode 100644 feladat2.txt create mode 100644 feladat3.txt create mode 100644 megoldas1.txt create mode 100644 megoldas2.txt create mode 100644 megoldas3.txt create mode 100644 palyaszam.txt diff --git a/application.cpp b/application.cpp index 02f66d3..32da063 100644 --- a/application.cpp +++ b/application.cpp @@ -16,7 +16,6 @@ void Application::event_loop() { event ev; int focus = action("start", ev, 0); - widgets[focus]->kezel(ev); for (Widget *w : widgets) { diff --git a/button.cpp b/button.cpp deleted file mode 100644 index 60adeeb..0000000 --- a/button.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "button.hpp" - -using namespace genv; - -Button::Button(Application* parent, int x, int y, int szel, int mag, - std::string cimke, std::function<void()> f): - Widget(parent, x, y, szel, mag), _cimke(cimke), _f(f) {} - - -void Button::rajzol() const -{ - // hatter - gout << color(dark_purple); - gout << move_to(_x,_y) << box(_szel,_mag); - - // keret - gout << color(light_purple); - gout << move_to(_x,_y) << line(_szel,0) << line(0,_mag) << line(-_szel,0) << line(0,-_mag); - - // szoveg - gout << font("LiberationSans-Regular.ttf",20); - - gout << move_to(_x+ (_szel-gout.twidth(_cimke))/2, - _y+(_mag-gout.cascent()-gout.cdescent())/2) - - << text(_cimke); -} - -void Button::kezel(event ev) -{ - if (ev.type == ev_mouse && ev.button==btn_left - && belul(ev.pos_x,ev.pos_y)) - { - action(); - } -} - -void Button::action() -{ - _f(); -} - diff --git a/button.hpp b/button.hpp deleted file mode 100644 index 7b00344..0000000 --- a/button.hpp +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef BUTTON_HPP -#define BUTTON_HPP - -#include "widget.hpp" -#include <functional> - - -class Button : public Widget -{ - public: - Button(Application* parent, int x, int y, int szel, int mag, - std::string cimke, std::function<void()>); - - virtual void rajzol() const override; - virtual void kezel(genv::event ev) override; - - void action(); - - protected: - std::string _cimke; - std::function<void()> _f; - -}; - -#endif // BUTTON_HPP diff --git a/feladat.txt b/feladat.txt index 5a61e0c..76742c8 100644 --- a/feladat.txt +++ b/feladat.txt @@ -1 +1 @@ -9 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 5 3 0 0 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0 \ No newline at end of file +9 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 5 3 0 0 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0 diff --git a/feladat1.txt b/feladat1.txt new file mode 100644 index 0000000..5a61e0c --- /dev/null +++ b/feladat1.txt @@ -0,0 +1 @@ +9 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 5 3 0 0 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0 \ No newline at end of file diff --git a/feladat2.txt b/feladat2.txt new file mode 100644 index 0000000..184de54 --- /dev/null +++ b/feladat2.txt @@ -0,0 +1 @@ +0 1 4 7 0 6 0 0 0 0 0 0 5 0 3 6 0 0 0 3 6 4 2 0 0 1 9 0 0 1 0 7 0 2 0 3 3 0 0 1 4 0 0 6 7 0 0 0 3 6 2 0 5 4 0 0 0 2 0 4 0 0 5 2 7 5 9 0 1 4 0 6 4 8 3 0 5 0 9 0 0 \ No newline at end of file diff --git a/feladat3.txt b/feladat3.txt new file mode 100644 index 0000000..460f63f --- /dev/null +++ b/feladat3.txt @@ -0,0 +1 @@ +0 6 0 0 2 0 5 0 0 0 9 0 0 0 3 6 2 4 4 2 7 5 6 0 0 0 3 6 0 4 0 0 5 7 0 0 1 8 0 0 3 7 4 0 6 2 0 0 1 4 0 9 3 8 7 5 3 6 0 1 2 0 0 0 1 0 0 7 0 3 6 5 9 4 0 3 0 2 0 7 0 \ No newline at end of file diff --git a/gamemaster.cpp b/gamemaster.cpp index 379a6e9..8e41c64 100644 --- a/gamemaster.cpp +++ b/gamemaster.cpp @@ -10,9 +10,15 @@ GameMaster::GameMaster(Application* parent, std::string mo, std::string fe) : { _parent->register_gm(this); - _megoldas = fajl_beolvasas(_fajl_megoldas); - _feladat = fajl_beolvasas(_fajl_feladat); - _save = fajl_beolvasas(_fajl_save); + std::ifstream fajl("palyaszam.txt"); + if (!fajl.good()) + { + cout << "NEM JO A FAJL" << endl; + } + fajl >> _palyaszam; + fajl.close(); + + kezdo_jatek(); // megmondja hogy melyik indexek melyik nagy negyzethez tartoznak _negyzetek.resize(9); @@ -141,40 +147,68 @@ bool GameMaster::kesz() return valasz; } -void GameMaster::uj_jatek() +void GameMaster::kezdo_jatek() { - for (int i=0; i<_megoldas.size(); i++) + if (_palyaszam==1) { - _megoldas[i]=0; + _megoldas = fajl_beolvasas("megoldas1.txt"); + _feladat = fajl_beolvasas("feladat1.txt"); } - for (int i=0; i<17; i++) + if (_palyaszam==2) { - _megoldas[i] = rand()%9+1; - cout << i << " " <<_megoldas[i] << endl; + _megoldas = fajl_beolvasas("megoldas2.txt"); + _feladat = fajl_beolvasas("feladat2.txt"); + } - while (!szabalyos_e(i,_megoldas[i])) - { - _megoldas[i] = rand()%9+1; - cout << i << " " << _megoldas[i] << endl; - } - //fajl_kiiras("megoldas_generalo.txt",_megoldas); + if (_palyaszam==3) + { + _megoldas = fajl_beolvasas("megoldas3.txt"); + _feladat = fajl_beolvasas("feladat3.txt"); + } + + fajl_kiiras("megoldas.txt",_megoldas); + + fajl_kiiras("feladat.txt",_feladat); + + _save = fajl_beolvasas(_fajl_save); +} + +void GameMaster::uj_jatek() +{ + if (_palyaszam<3) + _palyaszam++; + else + _palyaszam=1; + + std::ofstream fajl("palyaszam.txt"); + fajl << _palyaszam; + fajl.close(); + + if (_palyaszam==1) + { + _megoldas = fajl_beolvasas("megoldas1.txt"); + _feladat = fajl_beolvasas("feladat1.txt"); } - for (int i=17; i<_megoldas.size(); i++) + if (_palyaszam==2) { - for (int j=1; j<=9; j++) - { - if (szabalyos_e(i,j)) - { - _megoldas[i]=j; - j = 9; - } - } - cout << i << " " << _megoldas[i] << endl; + _megoldas = fajl_beolvasas("megoldas2.txt"); + _feladat = fajl_beolvasas("feladat2.txt"); + } + + if (_palyaszam==3) + { + _megoldas = fajl_beolvasas("megoldas3.txt"); + _feladat = fajl_beolvasas("feladat3.txt"); } - fajl_kiiras("megoldas_generalo.txt",_megoldas); + fajl_kiiras("megoldas.txt",_megoldas); + + fajl_kiiras("feladat.txt",_feladat); + + _save = _feladat; + fajl_kiiras("save.txt",_save); } void GameMaster::save(int sorszam, int ertek) @@ -214,11 +248,6 @@ std::vector<int> GameMaster::fajl_beolvasas(std::string fajlnev) return v; } -void GameMaster::save_fajlba() -{ - fajl_kiiras(_fajl_save,_save); -} - void GameMaster::fajl_kiiras(std::string fajlnev,std::vector<int> v) const { std::ofstream fajl(fajlnev); @@ -229,3 +258,8 @@ void GameMaster::fajl_kiiras(std::string fajlnev,std::vector<int> v) const fajl << endl; fajl.close(); } + +void GameMaster::save_fajlba() const +{ + fajl_kiiras(_fajl_save,_save); +} diff --git a/gamemaster.hpp b/gamemaster.hpp index 37d84a0..2bc84b2 100644 --- a/gamemaster.hpp +++ b/gamemaster.hpp @@ -14,7 +14,7 @@ class GameMaster std::vector<int> fajl_beolvasas(std::string fajlnev); void fajl_kiiras(std::string fajlnev, std::vector<int> v) const; - void save_fajlba(); + void save_fajlba() const; std::vector<int> get_feladat(); std::vector<int> get_save(); @@ -27,12 +27,14 @@ class GameMaster virtual bool kesz(); virtual bool szabalyos_e(int,int); virtual void uj_jatek(); + virtual void kezdo_jatek(); protected: std::string _fajl_megoldas, _fajl_feladat, _fajl_save; std::vector<int> _megoldas, _feladat, _save; Application *_parent; std::vector<std::vector<int>> _negyzetek; + int _palyaszam; }; #endif // GAMEMASTER_HPP diff --git a/megoldas.txt b/megoldas.txt index e0e3317..27ef7f0 100644 --- a/megoldas.txt +++ b/megoldas.txt @@ -1 +1 @@ -9 8 5 6 2 1 4 7 3 3 7 6 5 4 9 8 2 1 2 4 1 7 3 8 5 6 9 8 6 7 9 5 4 1 3 2 5 3 4 2 1 7 9 8 6 1 9 2 8 6 3 7 5 4 4 5 3 1 7 2 6 9 8 6 2 9 4 8 5 3 1 7 7 1 8 3 9 6 2 4 5 \ No newline at end of file +9 8 5 6 2 1 4 7 3 3 7 6 5 4 9 8 2 1 2 4 1 7 3 8 5 6 9 8 6 7 9 5 4 1 3 2 5 3 4 2 1 7 9 8 6 1 9 2 8 6 3 7 5 4 4 5 3 1 7 2 6 9 8 6 2 9 4 8 5 3 1 7 7 1 8 3 9 6 2 4 5 diff --git a/megoldas1.txt b/megoldas1.txt new file mode 100644 index 0000000..e0e3317 --- /dev/null +++ b/megoldas1.txt @@ -0,0 +1 @@ +9 8 5 6 2 1 4 7 3 3 7 6 5 4 9 8 2 1 2 4 1 7 3 8 5 6 9 8 6 7 9 5 4 1 3 2 5 3 4 2 1 7 9 8 6 1 9 2 8 6 3 7 5 4 4 5 3 1 7 2 6 9 8 6 2 9 4 8 5 3 1 7 7 1 8 3 9 6 2 4 5 \ No newline at end of file diff --git a/megoldas2.txt b/megoldas2.txt new file mode 100644 index 0000000..91fb187 --- /dev/null +++ b/megoldas2.txt @@ -0,0 +1 @@ +8 1 4 7 9 6 5 3 2 9 2 7 5 1 3 6 4 8 5 3 6 4 2 8 7 1 9 6 4 1 8 7 5 2 9 3 3 5 2 1 4 9 8 6 7 7 9 8 3 6 2 1 5 4 1 6 9 2 8 4 3 7 5 2 7 5 9 3 1 4 8 6 4 8 3 6 5 7 9 2 1 \ No newline at end of file diff --git a/megoldas3.txt b/megoldas3.txt new file mode 100644 index 0000000..e6c93dc --- /dev/null +++ b/megoldas3.txt @@ -0,0 +1 @@ +3 6 1 4 2 9 5 8 7 5 9 8 7 1 3 6 2 4 4 2 7 5 6 8 1 9 3 6 3 4 8 9 5 7 1 2 1 8 9 2 3 7 4 5 6 2 7 5 1 4 6 9 3 8 7 5 3 6 8 1 2 4 9 8 1 2 9 7 4 3 6 5 9 4 6 3 5 2 8 7 1 \ No newline at end of file diff --git a/myapp.cpp b/myapp.cpp index 19dabe6..697bb4b 100644 --- a/myapp.cpp +++ b/myapp.cpp @@ -44,6 +44,20 @@ int MyApp::action(std::string id, genv::event ev, int focus) palya[i]->set_aura(false); } } + set<int> szabalytalan_set = _game->szabalytalanok(); + + for (int i=0; i<palya.size(); i++) + { + if (szabalytalan_set.find(i) != szabalytalan_set.end()) + { + palya[i]->set_szabalyos(false); + } + else + { + palya[i]->set_szabalyos(true); + } + } + palya[focus]->kezel(ev); } if (id=="key") @@ -92,6 +106,13 @@ int MyApp::action(std::string id, genv::event ev, int focus) } } + /*// csak arra volt, hogy teszteljem a palyak valtakozasat + if (ev.keycode==key_enter) + { + uj_palya(); + focus = action("start", ev, 0); + }*/ + if (ev.keycode >= 49 && ev.keycode <= 57) { palya[focus]->set_ertek(ev.keycode-48); @@ -113,8 +134,10 @@ int MyApp::action(std::string id, genv::event ev, int focus) if (_game->kesz()) /// UJ JATEK { - cout << "BEFEJEZTED OMG" << endl; - _replay_btn = new Button(this, 30,30,300,80,"uj jatek", [=](){uj_jatek();}); + // cout << "BEFEJEZTED" << endl; + + uj_palya(); + focus = action("start", ev, 0); } } @@ -172,7 +195,25 @@ int MyApp::action(std::string id, genv::event ev, int focus) return focus; } -void MyApp::uj_jatek() +void MyApp::uj_palya() { - cout << "megnyomtad a replayt" << endl; + _game->uj_jatek(); + + palya.clear(); + vector<int> game_feladat = _game->get_feladat(); + vector<int> game_save = _game->get_save(); + + for (int j=0; j<9; j++) // sor + { + for (int i=0; i<9; i++) // oszlop + { + Index sorszam_index(j,i); + Field *f = new Field(this,i*78,j*78,78,sorszam,game_feladat[sorszam]); + palya.push_back(f); + if (game_feladat[sorszam] == 0) + { + palya[sorszam]->set_ertek(game_save[sorszam]); + } + } + } } diff --git a/myapp.hpp b/myapp.hpp index c56b8cd..3cf2734 100644 --- a/myapp.hpp +++ b/myapp.hpp @@ -5,18 +5,16 @@ #include "widget.hpp" #include "field.hpp" #include "gamemaster.hpp" -#include "button.hpp" class MyApp : public Application { public: MyApp(int,int); int action(std::string,genv::event,int) override; - void uj_jatek(); + void uj_palya(); protected: std::vector<Field*> palya; - Button* _replay_btn; }; #endif // MYAPP_HPP diff --git a/palyaszam.txt b/palyaszam.txt new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/palyaszam.txt @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/save.txt b/save.txt index e49992e..76742c8 100644 --- a/save.txt +++ b/save.txt @@ -1 +1 @@ -0 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 0 3 0 5 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0 +9 8 5 6 0 1 0 0 0 0 0 6 5 4 0 0 2 1 0 0 0 0 3 0 0 0 0 8 0 7 9 0 4 1 0 0 5 3 0 0 0 7 9 8 6 1 9 0 8 0 0 0 0 0 0 0 3 0 7 0 6 0 0 0 2 0 0 8 5 3 0 0 7 0 8 3 0 6 0 0 0 -- GitLab