FLTK problem z funkcją dodającą graczy

FLTK problem z funkcją dodającą graczy
  • Rejestracja: dni
  • Ostatnio: dni
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ść ):

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

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

Wybacz,

chodzi mi o tę funkcję.

Kopiuj
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.

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.