Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
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
Nesnáším {}, proto se jim vyhýbám.
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
Redaktor
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
Redaktor
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
Přecházím na "Cross-Platform Development"
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
Nesnáším {}, proto se jim vyhýbám.
Avatar
Theodor Johnson
Redaktor
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
Přecházím na "Cross-Platform Development"
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  +1 29.8.2013 11:01
Nesnáším {}, proto se jim vyhýbám.
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  -1 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.