FLTK problem z funkcją dodającą graczy

Odpowiedz Nowy wątek
2013-07-01 14:14
Aneirin
0

Witam serdecznie,

Z bliblioteką graficzną FLTK to dopiero moje pierwsze starcie, więc proszę o wyrozumiałość.

Otóż, chodzi o to, że muszę stworzyć funkcję wykonującą się n razy ( gdzie n to liczba graczy ), która po wciśnięciu Buttona "OK", odwoła się do metod z modelu wprowadzających dane. setName w tym wypadku.

Mam coś takiego ( nie jest to całość ):

class View : public Fl_Double_Window
{
public:
    View( Model* model, Controller* controller );
    ~View();

    static void hide_start( Fl_Widget*, void* );
    static void choose_players_number( Fl_Widget*, void* );
    //void add_player();

private:
    Model* M;
    Controller* C;

    Fl_Box *begin_box;
    Fl_Box *begin_sub_box;
    Fl_Button *start;
    Fl_Choice *players_number;
    Fl_Button *ok;
    Fl_Box *choose_hero;
    Fl_Input *players_name;
};

void View::hide_start( Fl_Widget* widget, void* )
{
    Fl_Button* button = ( Fl_Button* ) widget; 
    Fl_Box* box1 = ( Fl_Box* ) button->parent()->child(0); 
    Fl_Box* box2 = ( Fl_Box* ) button->parent()->child(1); 
    box1->hide(); 
    box2->hide(); 
    button->hide(); 
    Fl_Widget* ch = ( Fl_Widget* ) button->parent()->child(2); 
    ch->hide();

    Fl_Button* ok = ( Fl_Button* ) button->parent()->child(4);
    ok->show();
    Fl_Box* chooseHero = ( Fl_Box* ) button->parent()->child(5);
    chooseHero->show();
    Fl_Input* players_name = ( Fl_Input* ) button->parent()->child(6);
    players_name->show();

    View* w = (View*)widget->parent();

    for( int i=0; i<w->M->getPlayersNumber(); i++)
    {
        if( ok->activate() )
        {
            w->M->aPlayers[i].setName(players_name->value());
            cout << w->M->aPlayers[i].getName() << endl;
        }
    }

    cout << "It will be good" << endl;
}

void View::choose_players_number( Fl_Widget* widget, void* number )
{
    View* w = (View*)widget->parent();
    //cout << "CB nrpl:" << w->M->getPlayersNumber() << endl;
    w->M->setPlayersNumber( ( int ) number );
    //cout << "PO: CB nrpl:" << w->M->getPlayersNumber() << endl;
}

Z góry dziękuję za szybką odpowiedź :)

Pozostało 580 znaków

2013-07-01 14:40
0

Jakie jest pytanie oraz dlaczego nie wrzuciłeś kodu w znaczniki formatujące?


Pozostało 580 znaków

2013-07-01 14:55
Aneirin
0

Wybacz,

chodzi mi o tę funkcję.

for( int i=0; i<w->M->getPlayersNumber(); i++)
{
        if( ok->activate() )
        {
             w->M->aPlayers[i].setName(players_name->value());
             cout << w->M->aPlayers[i].getName() << endl;
        }
}

Mianowicie, nie wiem jak mogę sprawdzić, czy Button "ok" został wciśnięty -> jeśli tak, to aby wykonała się ta funkcja.

Pozostało 580 znaków

2013-07-01 15:51
0

nie wiem o co chodzi w tym wszystkim. Ale jak potrzebujesz wiedzieć czy guzik został wciśnięty to możesz zrobić coś takiego że przy jego klikaniu (event click) ustaw zmienna jakąś bool dla klasy na true.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0