FLTK problem z funkcją dodającą graczy

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ź :)

0

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

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.

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.

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