Diskuze: Metoda bez opakování???

C# .NET .NET (C# a Visual Basic) Metoda bez opakování??? American English version English version

Avatar
michaelbeats7:

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. dubna 22:01
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:

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. dubna 22:34
Nahoru Odpovědět 9. dubna 22:32
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:

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. dubna 22:37
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Odpovídá na vajkuba1234
michaelbeats7:

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

 
Nahoru Odpovědět 9. dubna 22:41
Avatar
vajkuba1234
Člen
Avatar
vajkuba1234:

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

Nahoru Odpovědět 9. dubna 22:42
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
michaelbeats7:

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. dubna 22:44
 
Nahoru Odpovědět 9. dubna 22:43
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:

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

Nahoru Odpovědět 9. dubna 22:49
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
michaelbeats7:

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. dubna 22:52
Avatar
Odpovídá na michaelbeats7
Jakub Šárník:

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. dubna 22:53
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:

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

Nahoru Odpovědět 9. dubna 22:54
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jakub Šárník
vajkuba1234:

To jsem mu radil uz minule. :)

Nahoru Odpovědět 9. dubna 22:54
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
 
Nahoru Odpovědět 9. dubna 22:56
Avatar
Odpovídá na vajkuba1234
michaelbeats7:

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. dubna 22:58
Avatar
Odpovídá na michaelbeats7
Jakub Šárník:

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. dubna 23:09
 
Nahoru Odpovědět  +1 9. dubna 23:08
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Jakub Šárník
vajkuba1234:

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

Nahoru Odpovědět  ±0 9. dubna 23:23
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Odpovídá na vajkuba1234
michaelbeats7:

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

 
Nahoru Odpovědět 9. dubna 23:28
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:

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. dubna 23:46
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Odpovídá na vajkuba1234
michaelbeats7:

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. dubna 23:51
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:

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. dubna 23:54
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Odpovídá na vajkuba1234
michaelbeats7:

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. dubna 23:59
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na michaelbeats7
vajkuba1234:

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. dubna 0:11
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
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.