Stránka 1 z 1

Hod kostkou C++ wxWidgets

Napsal: pát 3. dub 2009, 20:11
od Hlavson
Čus všichni.. :)
Potřeboval bych takovou menší radu. Mám za úkol do konce dubna udělat program na generování čísel od 1 do 6... tzv. hod kostkou, všichni znáte :)

Děláme to v vx-DevC++ 6.10.2 -> ,když by někdo chtěl hodím odkaz (dá se vygooglit)
Abych to upřesnil, jedná se o tzv. grafické prostředí, říká náš učitel :-D Mám plochu, kde jsou dvě tlačítka, jedno bude zastupovat generování čísla, druhé vypnutí programu.
Vypnutí zvládnu, ale generování čísla bohužel ne, ani jsme to neprobírali... bohužel. :?

Vygenerované číslo by se mělo zobrazit v ListBoxu... popř jiném zobrazovací komponentě.

Tady máte potřebné zdrojáky :)

http://www.edisk.cz/stahni/41830/hod_ko ... .83KB.html

Díky moc, beru každou radu :), pokud budou dotazy, jen se ptejte.

Re: Hod kostkou C++ wxWidgets

Napsal: sob 4. dub 2009, 20:31
od €agle
A co konkrétně nevíš, jak generovat to číslo, nebo jak ho dostat do toho listboxu?

Re: Hod kostkou C++ wxWidgets

Napsal: ned 5. dub 2009, 16:00
od Hlavson
Mám to takhle :-)

/*
* WxButton1Click
*/
void hodkostkouFrm::WxButton1Click(wxCommandEvent& event)
{
float a;
string st;
prev.clear();
prev >> a;
a = (rand() % 6) + 1;
prev.clear();
prev << a;
prev >> st;
WxListBox1->Append(st);
}

Jenže bych to potřeboval udělat ještě tak, že pokud padne 6, program automaticky hodí sám znovu...tak jako ve skutečnosti, když hodíte 6, hážete znovu :wink:

Re: Hod kostkou C++ wxWidgets

Napsal: pon 6. dub 2009, 17:40
od petr_
dej to do cyklu while(1){......... if(cislo !=6){break}........}
/*
* WxButton1Click
*/
void hodkostkouFrm::WxButton1Click(wxCommandEvent& event)
{
float a;
string st;
prev.clear();
while(1){

prev >> a;
a = (rand() % 6) + 1;

if(a !=6){break}
}
prev.clear();
prev << a;
prev >> st;
WxListBox1->Append(st);
}

jo ten tvůj projekt na mě vyhazuje nějakou podivnou chybu při kompilaci, takže jsem to nezkoušel.

Re: Hod kostkou C++ wxWidgets

Napsal: pon 6. dub 2009, 21:50
od Hlavson
Vyřešeno, sice pomocí if... namísto while, ale funguje.

Kód: Vybrat vše

string st;
	prev.clear();
	prev >> a;
	a = (rand() % 6) + 1;
	prev.clear();
	prev << a;
	prev >> st;
	st = ("Hodil si : " + st);
	WxListBox1->Append(st);

	if(a==6)
        {
            string omg;
            prevo.clear();
            prevo >> a;
            a = (rand() % 6) + 1;
            prevo.clear();
            prevo << a;
            prevo >> omg;
            omg = ("Na 2. hod : " + omg);
            WxListBox1->Append(omg);
    }
Jen dotaz, jak udělám to, aby se ListBox automaticky posunoval(zobrazovaly se nové hodnoty), pokud už je hodnot v něm víc, než je jeho výška ??
Např. do ListBoxu se vleze 15 řádků, ale 16. už je zobrazen mimo a je nutno posuvníkem posouvat. Něco jako zobrazování posledního řádku..... dík