public Hero(int bs, int bm, Pozicija pozicija, String name) { brojStrelaca = bs; brojMacevalaca = bm; Health = 100; Experience = 0; pozicijaHeroja = pozicija; borci = new Borci(brojStrelaca, brojMacevalaca); osvojenaSela = new List <Selo>(); this.Name = name; }
public void pomeri(Pozicija zeljenaPozicija) { int pomereno = 0; int zadanaHorizontalna = zeljenaPozicija.X; int zadanaVertikalna = zeljenaPozicija.Y; int mogucaHorizontalna = 0; int mogucaVertikalna = 0; //Opisivanje kretanja heroja //Prilikom svakog kretanja heroj ce prvo odraditi maksimalni broj po horizontali(odnosno po horizontalnim gridovima) //pa tek onda po vertikali koliko mu preostane poteza //brojPomeraja(horizontalni) predstavlja ukupnu razdaljinu od //mesta gde se nalazi heroj pa do mesta gde je korisnik kliknuo //ukoliko je to vise od MAX_BROJ_POMERAJA, vrsi se skaliranje odnosno ne //dozovoljava se vise od toga if (pozicijaHeroja.X != zadanaHorizontalna) { int brojPomeraja = Math.Abs(pozicijaHeroja.X - zadanaHorizontalna); if (brojPomeraja >= MAX_BROJ_POMERAJA) { brojPomeraja = MAX_BROJ_POMERAJA; } //predstavlja smer u kome ce se kretati heroj na mapi int horizontalniPomerajHeroja = pozicijaHeroja.X - zadanaHorizontalna; if (horizontalniPomerajHeroja < 0) { mogucaHorizontalna = pozicijaHeroja.X + brojPomeraja; pomereno = brojPomeraja; } else { mogucaHorizontalna = pozicijaHeroja.X - brojPomeraja; pomereno = brojPomeraja; } } else { mogucaHorizontalna = zadanaHorizontalna; } if (pozicijaHeroja.Y != zadanaVertikalna) { int brojPomeraja = Math.Abs(pozicijaHeroja.Y - zadanaVertikalna); if (brojPomeraja >= MAX_BROJ_POMERAJA) { brojPomeraja = MAX_BROJ_POMERAJA; } int brojDozvoljenihPoteza = MAX_BROJ_POMERAJA - pomereno; if (brojPomeraja > brojDozvoljenihPoteza) { brojPomeraja = brojDozvoljenihPoteza; } if (pomereno < MAX_BROJ_POMERAJA) { int vertikalniPomerajHeroja = pozicijaHeroja.Y - zadanaVertikalna; if (vertikalniPomerajHeroja < 0) { mogucaVertikalna = pozicijaHeroja.Y + brojPomeraja; } else { mogucaVertikalna = pozicijaHeroja.Y - brojPomeraja; } } else { mogucaVertikalna = pozicijaHeroja.Y; } } else { mogucaVertikalna = pozicijaHeroja.Y; } pozicijaHeroja.X = mogucaHorizontalna; pozicijaHeroja.Y = mogucaVertikalna; /* * int sIconI = pozicijaHeroja.X; * int sIconJ = pozicijaHeroja.Y; * // ovaj deo je da se spreci prolazak kroz zidove * if (State.lavirint[mogucaHorizontalna, mogucaVertikalna] != 1) * { * //MessageBox.Show("uso"); * pozicijaHerojaI = mogucaHorizontalna; * pozicijaHerojaJ = mogucaVertikalna; * InvalidateAdv(pozicijaHerojaI, pozicijaHerojaJ); * InvalidateAdv(sIconI, sIconJ); * } * else * { * MessageBox.Show("Heroj ne moze stati na neosvojeno sela!"); * } * */ }