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
xdddddddddddddd:26.12.2016 16:57

Ahoj mám problém s dědičností boolu, dělám hru a teď do ní dělám ukládací systém

protected bool výběr1;
protected bool výběr2;
protected bool výběr3;
public NewGameScreen()
{
    InitializeComponent();
}
private void btnNewGame1_Click(object sender, EventArgs e)
{
    výběr1 = true;
    výběr2 = false;
    výběr3 = false;
    using (StreamWriter sw = new StreamWriter(@"check1"))
    {
        sw.WriteLine("game1");
    }
    Začátek a = new Začátek();
    this.Hide();
    a.ShowDialog();
}

když vypíšu bool výběr1 v tomto okně vyjede mi true (přes msgBox)
https://ctrlv.cz/qJvR
poté když vypíšu bool výběr1 v druhém okně vyjede mi false (vadí to ukládání)
https://ctrlv.cz/inax

if (výběr1)
{
    using (StreamWriter sw = new StreamWriter(@"game1"))
    {
        sw.WriteLine(jméno);
        if (volbaElf == true)
            sw.WriteLine("elf");
        else if (volbaHuman == true)
            sw.WriteLine("human");
        else
            sw.WriteLine("orc");

    }
}

divné je, že když přimo pod

protected bool výběr1;
protected bool výběr2;
protected bool výběr3;

napíšu výběr1 = true;, vydědí se mi bool s hodnotou true, ale jinak ne
omlouvám se za diaktriku :))
díky za pomoc

Editováno 26.12.2016 16:58
 
Odpovědět
26.12.2016 16:57
Avatar
Odpovídá na xdddddddddddddd
Michal Štěpánek:27.12.2016 7:22

Nám se za diakritiku omlouvat nemusíš, jen aby ses nedivil, když ti to nebude dělat to, co bys chtěl, když to třeba budeš chtít spustit na počítači s jiným nastavením...
Zdá se mi, že si trošku pleteš pojmy. Dědičnost není to samé, jako předávání proměnných. Pokud chceš, aby i jiné okno vědělo o hodnotě toho "boolu", musíš mu to předat nejlépe pomocí konstruktoru.
když vytvoříš toto

Začátek a = new Začátek();
    this.Hide();
    a.ShowDialog();

tak ten form "a" vůbec netuší, že chceš vypsat výběr1 = true

Editováno 27.12.2016 7:24
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
27.12.2016 7:22
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Nahoru Odpovědět
27.12.2016 9:12
Totalitní admini..
Avatar
rawen
Člen
Avatar
Odpovídá na xdddddddddddddd
rawen:27.12.2016 16:42

To "protected " neznamená, že se ti to spáruje, když to má stejný název. Protected funguje jako kdyby to bylo private s tím, že to mohou používat i potomci. Ty to ovšem nikde nedědíš. Jak bylo zmíněno, tak by bylo nejlepší si tu zvolenou hodnotu přeposílat přes konstruktor. Tak, jak si to představuješ ty, by se to dalo udělat tak, že by to místo "protected" bylo "static", pak by jsi ty proměnné měl opravdu přístupné odkudkoliv (to druhé okno by je nemuselo mít ani definované a mohlo by se na ty hodnoty odkazovat přes prefix třídy co je obsahuje), ale dělat to přes statiku by bylo docela nešťastné řešení, když si to můžeš jednoduše předat přes konstruktor. :)

Nahoru Odpovědět
27.12.2016 16:42
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
xdddddddddddddd:31.12.2016 14:18

takto?

public NewGameScreen(bool výběr1,bool výběr2,bool výběr3)
 {
     this.výběr1 = výběr1;
     this.výběr2 = výběr2;
     this.výběr3 = výběr3;
 }
 
Nahoru Odpovědět
31.12.2016 14:18
Avatar
Odpovídá na Michal Štěpánek
xdddddddddddddd:31.12.2016 14:23

takto?

public NewGameScreen(bool výběr1,bool výběr2,bool výběr3)
 {
     this.výběr1 = výběr1;
     this.výběr2 = výběr2;
     this.výběr3 = výběr3;
 }

omlouvám se, nedal jsem to jako odpověď..

 
Nahoru Odpovědět
31.12.2016 14:23
Avatar
Odpovídá na xdddddddddddddd
Michal Štěpánek:31.12.2016 17:41

Musíš to hlavně "říct" tomu formu při vytváření instance

Form a = new Form(parametry);
a.Show();
Nahoru Odpovědět
31.12.2016 17:41
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
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 7 zpráv z 7.