Skip to content
Snippets Groups Projects
Select Git revision
  • 220f898c85b3597821f6005ac94323e87dde9d56
  • main default protected
2 results

myapp.cpp

Blame
  • myapp.cpp 3.79 KiB
    #include "myapp.hpp"
    
    #define sorszam 9*sorszam_index.sor+sorszam_index.oszlop
    #define focus_visszavaltas 9*focus_sorszam.sor+focus_sorszam.oszlop
    
    using namespace std;
    using namespace genv;
    
    MyApp::MyApp(int szel, int mag) : Application(szel,mag)
    {
        _game = new GameMaster(this,"megoldas.txt","feladat.txt");
        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]);
                }
            }
        }
    }
    
    int MyApp::action(std::string id, genv::event ev, int focus)
    {
        if (id=="start")
        {
            std::set<int> aura_halmaz = _game->aura(focus);  // azert van itt is, hogy a megnyitaskor is rajzoljon aurat
    
            for (int i=0; i<palya.size(); i++)
            {
                if (aura_halmaz.find(i) != aura_halmaz.end())
                {
                    palya[i]->set_aura_true();
                }
                else
                {
                    palya[i]->set_aura_false();
                }
            }
        }
    
        if (id=="key")
        {
            if (ev.keycode==key_up || ev.keycode==key_down ||
                ev.keycode==key_left || ev.keycode==key_right)
            {
                palya[focus]->unfocus();
    
                Index focus_sorszam(focus);
    
                if (ev.keycode==key_up)
                {
                    if (focus_sorszam.sor >0)
                        focus_sorszam.sor -= 1;
                }
                else if (ev.keycode==key_down)
                {
                    if (focus_sorszam.sor <8)
                        focus_sorszam.sor += 1;
                }
                else if (ev.keycode==key_left)
                {
                    if (focus_sorszam.oszlop >0)
                        focus_sorszam.oszlop -= 1;
                }
                else if (ev.keycode==key_right)
                {
                    if (focus_sorszam.oszlop <8)
                        focus_sorszam.oszlop += 1;
                }
                focus = focus_visszavaltas;
                palya[focus]->kezel(ev);
    
                std::set<int> aura_halmaz = _game->aura(focus);
    
                for (int i=0; i<palya.size(); i++)
                {
                    if (aura_halmaz.find(i) != aura_halmaz.end())
                    {
                        palya[i]->set_aura_true();
                    }
                    else
                    {
                        palya[i]->set_aura_false();
                    }
                }
            }
    
            if (ev.keycode >= 49 && ev.keycode <= 57)
            {
                palya[focus]->set_ertek(ev.keycode-48);
            }
    
            if (ev.keycode==key_delete || ev.keycode==key_backspace)
            {
                palya[focus]->set_ertek(0);
            }
    
            _game->save(focus,palya[focus]->get_ertek());
        }
    
        if (id=="mouse")
        {
            if (ev.button==btn_left)
            {
                for (size_t i=0; i<palya.size(); i++)
                {
                    if (palya[i]->belul(ev.pos_x,ev.pos_y))
                    {
                        palya[focus]->unfocus();
                        focus=i;
                        palya[focus]->kezel(ev);
                    }
                }
    
                std::set<int> aura_halmaz = _game->aura(focus);
    
                for (int i=0; i<palya.size(); i++)
                {
                    if (aura_halmaz.find(i) != aura_halmaz.end())
                    {
                        palya[i]->set_aura_true();
                    }
                    else
                    {
                        palya[i]->set_aura_false();
                    }
                }
            }
        }
        return focus;
    }