Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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 Lásko[Saarix]:29.8.2013 10:19

Zdravám mám problém u TextBoxu s instancí objektu. Používám následujicí kód. Při vytváření konstruktoru třídy.

private TextBox textBox;

        public Arena(Bojovnik hrac, Bojovnik nepritel, Kostka kostka, TextBox textBox)
        {
            this.hrac = hrac;
            this.nepritel = nepritel;
            this.kostka = kostka;
            this.textBox = textBox;
        }

Takto je vytvoření nové instance třídy.

public frmArena()
        {
            InitializeComponent();
            arena = new Arena(hrac, bojovnik, new Kostka(), tbxBoj);

            arena.Boj();
        }

A kód kde chci zapsat to textBoxu. Jako metoda Třídy Arena.

textBox.Text += String.Format.....

Prostý kód, ale vyhodí to error že odkaz na objekt není nastaven na instanci objektu. Ale já to chápu tak že když mám komponentu textBox ve formu, tak se uvnitř formu při inicializaci normálně instance vytvoří, takže do konstruktoru třídy předávám odkaz na instanci objektu TextBox. Tím pádem bych v tom neviděl problém.

Editováno 29.8.2013 10:20
Odpovědět
29.8.2013 10:19
Časem je vše možné.
Avatar
Odpovídá na Jakub Lásko[Saarix]
Michal Žůrek - misaz:29.8.2013 10:26

pošli mi celý projekt.

 
Nahoru Odpovědět
29.8.2013 10:26
Avatar
Odpovídá na Michal Žůrek - misaz
Jakub Lásko[Saarix]:29.8.2013 10:38

Na jakou adresu to chceš poslat?

Nahoru Odpovědět
29.8.2013 10:38
Časem je vše možné.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jakub Lásko[Saarix]
Kit:29.8.2013 10:40

Pošli přímo sem odkaz, ať se na to můžeme podívat všichni.

Nahoru Odpovědět
29.8.2013 10:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Jakub Lásko[Saarix]:29.8.2013 10:42

http://uloz.to/…ventures-rar
Dobrá, tady je celý projekt v raru.

Nahoru Odpovědět
29.8.2013 10:42
Časem je vše možné.
Avatar
Jakub Lásko[Saarix]:29.8.2013 10:44

Omlouvám se za kvalitu kódu, ale dělám to pro zlepšení znalostí v OOP a jeho zažití. Projekt je trochu rozdělaný...

Nahoru Odpovědět
29.8.2013 10:44
Časem je vše možné.
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na Jakub Lásko[Saarix]
Theodor Johnson:29.8.2013 10:48

Chybí ti tam instance Bojovníka hrac

// Edit: i nepřítele

Editováno 29.8.2013 10:51
Nahoru Odpovědět
29.8.2013 10:48
Mo8ilε 15 Ѐλđ
Avatar
Jakub Lásko[Saarix]:29.8.2013 10:53

Intance hráče se vytvoří v prvním formu

private void btnChoose_Click(object sender, EventArgs e)
        {
            if (rdbRytir.Checked == true)
                hrac = new Bojovnik("James", 1, 500, 20, 5, 20, 10, 10, 10, 10, new Kostka());
            if (rdbLovec.Checked == true)
                hrac = new Bojovnik("James", 1, 300, 25, 2, 10, 20, 10, 10, 10, new Kostka());

            frmGame game = new frmGame();
            game.hrac = hrac;
            game.ShowDialog();
        }

A pak se předá do hry.

Nahoru Odpovědět
29.8.2013 10:53
Časem je vše možné.
Avatar
Odpovídá na Jakub Lásko[Saarix]
Michael Olšavský:29.8.2013 10:53

Vůbec neinicializuješ žádný objekt :O :D Nejen v téhle frmArena ale třeba i frmGame. Nemůžeš pracovat s nevytvořeným objektem.

EDIT:
Tak tohle je dost hnusný kód. Kdo se v tom má vyznat? A kde nastavuješ nepřítele a textbox?

Editováno 29.8.2013 10:55
 
Nahoru Odpovědět
29.8.2013 10:53
Avatar
Odpovídá na Theodor Johnson
Jakub Lásko[Saarix]:29.8.2013 10:55

Promiň už vidím, kde je chyba jsem si spletl instanci.

Nahoru Odpovědět
29.8.2013 10:55
Časem je vše možné.
Avatar
Odpovídá na Jakub Lásko[Saarix]
Michal Žůrek - misaz:29.8.2013 10:55

textBox v konstruktoru formuláře neexistuje, musíš ho zavolat z load.

Přečti si zdejší tutorialy o OOP a pak teprve přejdi k formulářům.

 
Nahoru Odpovědět
29.8.2013 10:55
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:29.8.2013 10:55

Objekt musíš nejprve inicializovat, místo 'Bojovnik hrac;' třeba

public Bojovnik hrac = new Bojovnik("jmeno", 1, 100, 10, 1, 10, 10, 10, 10, 10, new Kostka(6));

ve frmArena předáváš prázdný objekt

Nahoru Odpovědět
29.8.2013 10:55
Mo8ilε 15 Ѐλđ
Avatar
Odpovídá na Jakub Lásko[Saarix]
Michael Olšavský:29.8.2013 10:56

Takhle to vážně nedělej. Nikdo se v tom nevyzná a je to proti zásadám OOP.

 
Nahoru Odpovědět
29.8.2013 10:56
Avatar
Odpovídá na Michael Olšavský
Jakub Lásko[Saarix]:29.8.2013 10:59

Koukám že to tu mám trochu nepřehledné a špatně. Takže bude lepší to předělat a udělám to radši skrze konzoli.

Nahoru Odpovědět
29.8.2013 10:59
Časem je vše možné.
Avatar
Odpovídá na Jakub Lásko[Saarix]
Michal Žůrek - misaz:29.8.2013 11:01

ne, nedělej nic. Přečti si tutoriály pak teprv něco programuj.

 
Nahoru Odpovědět
29.8.2013 11:01
Avatar
Odpovídá na Jakub Lásko[Saarix]
Michael Olšavský:29.8.2013 11:04

K formům se vrať až poté, co si projdeš události, delegáty, dědičnost, vlastnosti a polymorfismus. Také si zkus nejdříve udělat správný návrh. A používej konstruktory. Správně by jsi měl co nejméně zasahovat z objektu do objektu, zvlástě pokud nemají žádnou vazbu. Veřejné proměnné jsou tedy špatné řešení.

Editováno 29.8.2013 11:04
 
Nahoru Odpovědět
29.8.2013 11:04
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.