IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jakub Bořucký:29.3.2016 18:54

mam třídu jménem OtazkyVsechno --- její konstruktor je (label, button1,button2,but­ton3,button4) - otazka se zapiše do labelu a do těch 4 buttonu odpovědi. Pak v ty třídě mám metodu jménem Otazky - ("Otazka", "odpoved1", "odpoved2", "odpoved3", "odpoved4", Button spravna) -- to jsou vlastně stringy , akorát to poslední je kterej button je spravnej.
Ve formu to použivám nějak takhle:
OtazkyVsechno o = new OtazkyVsechno(la­bel1, button1, button2, button3, button4);
o.Otazky("Kolik je 1+1", "1", "2", "3", "4", button2);

AŽ SEM MI TO VŠECHNO FUNGUJE TAK JAK MÁ
Ale ja budu mít těch otázek víc a potřebuju aby když kliknu na tu správnou odpověd , tak se mi to změnilo, ale ted nevím jak. Prostě abych měl těch o.Otazky(xxxx) třeba 10 a v nahodným pořadí se zobrazovaly otázky a odpovědi. Pokud možno prosím, nepiště at to všechno udělám jinak, ikdyby to timhle způsobem bylo nějak extra složitý.

 
Odpovědět
29.3.2016 18:54
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jakub Bořucký
vajkuba1234:29.3.2016 19:16

Dej to do listu a pro nahodne generovani pouzij tridu Random. Prejmenuj tridy a metody tak, aby byly v jednotnem cisle a nazvy davaly smysl.

Nahoru Odpovědět
29.3.2016 19:16
No hope, no future, JUST WAR!
Avatar
Odpovídá na vajkuba1234
michaelbeats7:29.3.2016 19:20

.

Editováno 29.3.2016 19:22
 
Nahoru Odpovědět
29.3.2016 19:20
Avatar
Odpovídá na vajkuba1234
Jakub Bořucký:29.3.2016 19:24

To jsem právě taky zkoušel, ale moc mi to nešlo. Mohl bys prosím napsat kratce přiklad jak bys to udělal?

 
Nahoru Odpovědět
29.3.2016 19:24
Avatar
vajkuba1234
Člen
Avatar
Nahoru Odpovědět
29.3.2016 19:32
No hope, no future, JUST WAR!
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jakub Bořucký
vajkuba1234:29.3.2016 19:33

Co jsi zkousel a co ti neslo? Co bys chtel ukazat? + Ukaz kod, co mas jak resene.

Nahoru Odpovědět
29.3.2016 19:33
No hope, no future, JUST WAR!
Avatar
Jakub Bořucký:29.3.2016 19:40

Ted prostě, potřebuju víc otázek.
o.Otazky("Kolik je 1 + 1", "1", "2", "3", "4", button2);
to první se zapiše do labelu, pak ty 4 se zapíšou do buttonu a jako poslední je který button je správně.

 
Nahoru Odpovědět
29.3.2016 19:40
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jakub Bořucký
vajkuba1234:29.3.2016 19:52

Napisu pozdeji

Nahoru Odpovědět
29.3.2016 19:52
No hope, no future, JUST WAR!
Avatar
abushrek
Člen
Avatar
abushrek:29.3.2016 20:08

Pokud jsem pochopil správně co máte na mysli tak by to mělo být tohle. :)

//Vytvoření listu otázek
List<Otazky> otazkyList = new List<Otazky>;
//Naplnění listu otázkami
otazkyList.Add(new Otazky("otazka1","odpoved1","odpoved2","odpoved3","odpoved4",button));
otazkyList.Add(new Otazky("otazka2","odpoved1","odpoved2","odpoved3","odpoved4",button));

Pokud chcete podrobnější popis jak to funguje stačí napsat.

Editováno 29.3.2016 20:09
 
Nahoru Odpovědět
29.3.2016 20:08
Avatar
Odpovídá na Jakub Bořucký
sadlomaslox25:29.3.2016 20:14

a neni nejjednoduzsi si ty buttony predat jako pole?
OtazkyVsechno(La­blel l, List<Button> buttons, Button answerButton);
OtazkyVsechno o = new OtazkyVsechno(la­bel1, new List<Buttons>{but­ton1, button2, button3}, button4);

a pak nahodne tahat ty butony z listu:

while(buttons­.Count>0)
var randomIndex=ra­.Next(buttons­.Count);
var button=button­s[randomIndex];
buttons.Remove­At(randomIndex);

 
Nahoru Odpovědět
29.3.2016 20:14
Avatar
abushrek
Člen
Avatar
abushrek:29.3.2016 20:19

Poté pokud budeš chtít náhodně vybírat otázky tak stačí jen.

List<Otazky> otazkyList = new List<Otazky>;
Random rnd = new Random();
//vyber nahodne otazky bez osetreni opakovaní se
otazkyList[rnd.Next(0,otazkyList.Count)];
 
Nahoru Odpovědět
29.3.2016 20:19
Avatar
abushrek
Člen
Avatar
Odpovídá na sadlomaslox25
abushrek:29.3.2016 20:23

Tady je myšleno s tím že tady začíná pokud by chtěl opravdu metodu která by byla použitelná unikátně tak je nejlepší:

//tím pádem pokud použije params tak může mít otázka proměnlivý počet odpovědí
private void AddAnswer(Label label, Button answerButton, params Button buttons[])
{
//text k obsluze metody
}

Nechtěl jsem tu nic takového tahat, protože je zřejmé, že s tím začíná.

Editováno 29.3.2016 20:26
 
Nahoru Odpovědět
29.3.2016 20:23
Avatar
Odpovídá na abushrek
Jakub Bořucký:29.3.2016 20:32

Hele to co jsi napsal si myslím, že je hodně blízko k tomu jak to má být :D ještě trochu to upřesním, protože si myslím, že jsi napsal špatně ty názvy a já jsem v tom uplně ztracenej. Mám třídu OtazkyVsechno a její konstruktor - (label , button1,button2,but­ton3,button4) ten konstuktor pak ve formu mimo třidu napišu jen jednou. Pak je tu metoda, kterou budu použivát pořád - metoda s názvem Otazky s parametry (string otazka, string odpoved1, string odpoved2, string odpoved3 , string odpoved3, string odpoved4, button spravne) .... Budu psát otázku která se mi zapiše do toho labelu, pak odpovedi , který se zapíšou do těch buttonu a nakonec spravnej Button.

Použití mimo tu třídu ve formu:
OtazkyVsechno o = new OtazkyVsechno(la­bel1, button1, button2, button3, button4);

o.Otazky("Kolik je 1 + 1", "1", "2", "3", "4", button2);

A ted chci aby když kliknu na spravnou otázku tak se mi do toho všeho zapsala jina otázka s jinou odpovědi.

 
Nahoru Odpovědět
29.3.2016 20:32
Avatar
abushrek
Člen
Avatar
Odpovídá na Jakub Bořucký
abushrek:29.3.2016 20:50

Tak musíš vyřešit nějaký loop(smyčku), nebo jednoduše event na tlačítka a pokud je to správně tak to tlačítko zavolá metodu která vygeneruje další odpověď.
Musíš mít nějaký list naplněn více otázkami.
Ta metoda by mohla vypadat nějak takhle.

private void SelectNext()
{
if(/*správně tohle ti bude nastavovat ten button*/)
{
//Můžeš implementovat nějaké skóre
score++;
Random rnd = new Random();      //nemělo by být přímo v metodě ale někde v konstruktoru třídy kvůli paměťovým nárokum, ale to je maličkost
//vyber nahodne otazky bez osetreni opakovaní se otázek
o.Otazky(otazkyList[rnd.Next(0,otazkyList.Count)]);
}
}
Editováno 29.3.2016 20:51
 
Nahoru Odpovědět
29.3.2016 20:50
Avatar
abushrek
Člen
Avatar
abushrek:29.3.2016 22:16

Zkusím ti poradit udělej si třídu Otazka, která bude jen pomocná bude mít jen vlastnosti a konstruktor dále si udělej třídu OtazkaService a kde budeš mít list generický po Otazce metody jako Spravne(), PridejOtazku(), privátní metodu DalsiOtazka(), která bude vnořená do metody Spravne(), a pak si ji zavolej někde v main třídě kde potom následně budeš volat metodu PridejOtazku() podle toho kolik otazek a dále po stisku tlačítka budeš volat metodu Spravne().
Doufám že jsi to aspoň trošku pochopil, kdyžtak se můžeš zeptat na konkrétní informace které by jsi chtěl vědět.

 
Nahoru Odpovědět
29.3.2016 22:16
Avatar
abushrek
Člen
Avatar
abushrek:29.3.2016 22:37

Nebo ti můžu poradit ještě lépe, když jsem nad tím přemýšlel tak nepředávej button ale předávej přímo správný string dám příklad:

o.Otazky("Kolik je 1 + 1", "1", "2", "3", "4","2");

Následně z buttonu získej string:

private void button1_Click(object sender, System.EventArgs e)
{
//metoda Správně bude obsahovat parametr string který budou tlačítka odevzdávat po stisku a zavolají tu metodu
Spravne(button1.Text);
}

Metoda Spravne muze vypadat nějak takhle:

private void Spravne(string odpoved)
{
if(odpoved == otazka.Spravne)
{
// zde je možno poté implementovat vše co je potřeba pokud je správně zobrazeno
}
}
 
Nahoru Odpovědět
29.3.2016 22:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.