NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Metoda bez opakování???

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
michaelbeats7:9.4.2016 22:01

Mám třídu jménem Quiz s konstruktorem (label, button1, button2,button3,but­ton4)
a v ní metodu : Otazka(string otazka, string odpoved1, string odpoved2, string odpoved3, string odpoved4, button spravnaodpoved)

Použití ve formu:
Quiz q = new Quiz(label1, button1, button2,button3,but­ton4);
q.Otazka("1+1 = " , "1" , "2" , "3" , "4" , button2);
1+1 = SE NAPIŠE DO LABELU1
1 SE NAPIŠE DO BUTTON1
atd....

..... pro to aby se otázky měnili jsem udělal random rd = new random();
int ot = rd.Next(1,4);

if(rd = 1) q.Otazka("nějaka otazka" , "odpove1", "odpoved2", "odpoved3", "odpoved4", button3);
if(rd = 2) q.Otazka("Další otázka" , "odpove1", "odpoved2", "odpoved3", "odpoved4", button4);

Jak byste to vyřešili, aby se otázky a odpovědi neopakovali? Už jsem zkoušel snad všechno a furt jsem na to nepřišel.
(Prosím nepište mi, at ten program celej předělám, už ted je tam toho strašně moc a ani mi nezbývá tolik času)

 
Odpovědět
9.4.2016 22:01
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:9.4.2016 22:32

Mohl bys poslat cely kod? Nevytvaris nahodou opakovane instanci tridy Random? Kdyz ji vytvoris jednou, tak by to melo splnit co, co pozadujes...

Teda, samozrejme zalezi na tom, jak to mas udelane, ale pokud bys to projizdel cyklem, tak by to teoreticky fungovat mohlo, jak jsem ti psal... Posli kod

Editováno 9.4.2016 22:34
Nahoru Odpovědět
9.4.2016 22:32
No hope, no future, JUST WAR!
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:9.4.2016 22:37

Nebo me jeste napada, cyklus na generovani otazek napis tak, aby "i < pocetOtazek" a v tele cyklu volej ten random

Nahoru Odpovědět
9.4.2016 22:37
No hope, no future, JUST WAR!
Avatar
Odpovídá na vajkuba1234
michaelbeats7:9.4.2016 22:41

Tady jsem to trochu zkratil a změnil názvy, aby to bylo srozumitelný.

 
Nahoru Odpovědět
9.4.2016 22:41
Avatar
vajkuba1234
Člen
Avatar
vajkuba1234:9.4.2016 22:42

Zkopiruj to cele a hod to tady do code...

Nahoru Odpovědět
9.4.2016 22:42
No hope, no future, JUST WAR!
Avatar
michaelbeats7:9.4.2016 22:43

Myslíš celou třídu? Mám to strašně dlouhý.. mělo by to být z obrázku srozumitelný ne? Nebo napiš co konkrektně potřebuješ a pošlu

Editováno 9.4.2016 22:44
 
Nahoru Odpovědět
9.4.2016 22:43
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:9.4.2016 22:49

Proc to nechces vlozit cele? CTRL A, CTRL C a CTRL V, ale vlozis to do CODE.

Nahoru Odpovědět
9.4.2016 22:49
No hope, no future, JUST WAR!
Avatar
michaelbeats7:9.4.2016 22:52

Protože v tom přeci nemám jen tohle. Nevyznal by ses v tom, nebo by ti to trvalo aspon hodinu, protože je to strašně dlouhý. Tak počkej nějak to zkrátím at je tam jen to duležitý.

 
Nahoru Odpovědět
9.4.2016 22:52
Avatar
Odpovídá na michaelbeats7
Neaktivní uživatel:9.4.2016 22:53

Tak si na začátku třeba vlož všechny ty otázky do nějakého listu a náhodně generuj index, kterým se k nim dostaneš. Aby se neopakovaly, můžeš je po použití z toho listu oddělat.

Nahoru Odpovědět
9.4.2016 22:53
Neaktivní uživatelský účet
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:9.4.2016 22:54

Klidne to posli cele, vzdyt o nic nejde. Ja ti to neukradu. :D

Nahoru Odpovědět
9.4.2016 22:54
No hope, no future, JUST WAR!
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Neaktivní uživatel
vajkuba1234:9.4.2016 22:54

To jsem mu radil uz minule. :)

Nahoru Odpovědět
9.4.2016 22:54
No hope, no future, JUST WAR!
Avatar
Odpovídá na vajkuba1234
Neaktivní uživatel:9.4.2016 22:56

No tady to nikde nevidím :-D

Nahoru Odpovědět
9.4.2016 22:56
Neaktivní uživatelský účet
Avatar
Odpovídá na vajkuba1234
michaelbeats7:9.4.2016 22:58

Nebojím se toho abys mi to ukradl :D spiš chci abys to chápal... nechal jsem tam jen to duležité.

using System;
using System.Collec­tions.Generic;
using System.Componen­tModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threadin­g.Tasks;
using System.Window­s.Forms;

namespace Quiz
{
public partial class Vsechno : Form
{
public Vsechno()
{

}

int i = 30;

private void Vsechno_Load(object sender, EventArgs e)
{
novaOtazka();
}

private void timer1_Tick(object sender, EventArgs e)
{
i = 30;
novaOtazka();
}

if(od1.BackColor = Color.Green)
{
i = 30;
novaOtazka();
}
if (od2.BackColor == Color.Green)
{
i = 30;
novaOtazka();
}

if (od3.BackColor == Color.Green)
{

i = 30;
novaOtazka();

if (od4.BackColor == Color.Green)
{

i = 30;
novaOtazka();
}
}

i--;
label2.Text = Convert.ToStrin­g(i);
if (label2.Text == "0")
{
timer1.Stop();
MessageBox.Show("Je mi líto, vypršel Vám čas");

}

}

void novaOtazka()
{

od1.Visible = true;
od2.Visible = true;
od3.Visible = true;
od4.Visible = true;

label3.Visible = false;
label4.Visible = false;
label5.Visible = false;
pictureBox1.Visible = false;
od1.BackColor = Color.Navy; //Po další otazce se barva buttonu samo nezmění
od2.BackColor = Color.Navy;
od3.BackColor = Color.Navy;
od4.BackColor = Color.Navy;

Random rd = new Random();

int otazka = rd.Next(1, 3);

OtazkyVsechno o = new OtazkyVsechno(tex­tBox1, od1, od2, od3, od4, volani, hlaslidu, padepade, pictureBox1, volanix, label3, label5, hlaslidux, padepadex);

if (otazka == 1) o.Otazky("Kolik je 5+5", "7", "10", "12", "14", od2);

if (otazka == 2) o.Otazky("kolik je 1+1 ", "1", "2", "3", "4", od2);

}

}
}

 
Nahoru Odpovědět
9.4.2016 22:58
Avatar
Odpovídá na michaelbeats7
Neaktivní uživatel:9.4.2016 23:08

Je to špatně navržené. Nejlépe budeš potřebovat třídu Question, která se ti postará o logiku otázky. V samotném okně kvízu bude List<Question>, do kterého při inicializaci dáš všechny otázky co chceš.
Náhodný výběr provedeš třeba:

private Question GetRandomQuestion()
{
    int index = random.Next(questions.Count);
    Question ret = questions[index];
    questions.Remove(ret);
    return ret;
}
Editováno 9.4.2016 23:09
Nahoru Odpovědět
9.4.2016 23:08
Neaktivní uživatelský účet
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Neaktivní uživatel
vajkuba1234:9.4.2016 23:23

Toto neni prvni vlakno, kde resi tu samou vec. Radil jsem mu to uz nekolikrat a pote i do zprav...

Nahoru Odpovědět
9.4.2016 23:23
No hope, no future, JUST WAR!
Avatar
Odpovídá na vajkuba1234
michaelbeats7:9.4.2016 23:28

Očividně jsi moc nepomohl, když se ptám zas :D

 
Nahoru Odpovědět
9.4.2016 23:28
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:9.4.2016 23:46

Pominu-li fakt, ze tady mas vice uctu:

http://www.itnetwork.cz/portfolio/35848

tak jsi to resil uz tady:

http://www.itnetwork.cz/csharp/diskuzni-forum-c-sharp-visual-studio-net-xna/random-ze-tridy-objektu-56fab3464d7c4

a bylo vice lidi, kteri ti radili to same co ja, tak chyba bude asi jinde :)

Nahoru Odpovědět
9.4.2016 23:46
No hope, no future, JUST WAR!
Avatar
Odpovídá na vajkuba1234
michaelbeats7:9.4.2016 23:51

Vždyt se Jakub Bořucký před tím ptál, na to jak udělat aby se mu otázky vůbec změnily, ne aby se neopakovaly. Já se nyní ptám co udělat, aby se otázky neopakovaly. Hádát se tu nehodlám, slušně jsem se zeptal, je to pro mě důležitější než si asi myslíš, pokud ti tak vadím tak si mě blokni.

 
Nahoru Odpovědět
9.4.2016 23:51
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:9.4.2016 23:54

Vzdyt ses tady prozradil...

http://www.itnetwork.cz/csharp/diskuzni-forum-c-sharp-visual-studio-net-xna/if-button-click--56f44ed23f7a4?all-comments

Ja spise nechapu, proc neposlechnes druhe a neudelas to tak, protoze to delas zbytecne slozite...
Ja se vubec nehadam,takze klidek.

Nahoru Odpovědět
9.4.2016 23:54
No hope, no future, JUST WAR!
Avatar
Odpovídá na vajkuba1234
michaelbeats7:9.4.2016 23:59

Koukám, že má tady někdo opravdu nudný život, že to všechno prohledáváš :D :D :D Chápeš, že tu aplikaci nedělám pro sebe, ale je to můj ukol a ten ukol má taky nějaký zádání? Zatím jsem poslechl každou rozumnou radu, od tebe jsem bohužel zatím žadnou rozumnou radu nedostal, tak nechápu co to meleš. Napišeš, že neposlouchám druhý a pak mi řikáš, že jsem se prozdrail tím, že jsem použil to co mi ostatní poradili. Nekaž mi zbytečně náladu a přestan mi psát, nemám tolik času se tu s tebou dohadovat. Měj se.

 
Nahoru Odpovědět
9.4.2016 23:59
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:10.4.2016 0:11

Oproti tvemu nudny urcite nebude, jen mi prijde stupidni si tady zakladat nekolik uctu. Ja chapu, ze mas vztek, ale nemusis si jej vybijet zrovna zde. :)

To prozrazeni bylo samozrejme mysleno tak, ze tam odepisujes ze dvou uctu. Navic se te tam jeste nekdo ptal, zda je to tve alterego.

At to vyresis. :)

Nahoru Odpovědět
10.4.2016 0:11
No hope, no future, JUST WAR!
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 21 zpráv z 21.