public void inicijalizujAstar() { AStarSearch astar = new AStarSearch(); /*Inicijalizujem pocetno stanje tako da prima * koordinate kompa koje on ima na pocetku partije (9,9) * */ pocetnoStanje = new State(); pocetnoStanje.markI = DisplayPanel.INSTANCE.computer.POZICIJA.X; pocetnoStanje.markJ = DisplayPanel.INSTANCE.computer.POZICIJA.Y; krajnjeStanje = new State(); State sp = pocetnoStanje; State ss = astar.search(pocetnoStanje); /* Nakon sto se zavrsi pretraga, krajnjeStanje * dobija koordinate sela koje je najbolje napasti * po heuristickoj funkciji * */ krajnjeStanje.markI = astar.getPoint().X; krajnjeStanje.markJ = astar.getPoint().Y; State solution = krajnjeStanje; inicijalizacijaPretrage(astar); displayPanel1.Refresh(); }
private void inicijalizacijaPretrage(AStarSearch astar) { /*iniccijalizacija pocetnog stanja koje je u svakom potezu trenutna pozicija protivnika*/ pocetnoStanje = new State(); //dajem mu poziciju gde se nalazi computer kad je na potezu pocetnoStanje.markI = DisplayPanel.INSTANCE.computer.POZICIJA.X; pocetnoStanje.markJ = DisplayPanel.INSTANCE.computer.POZICIJA.Y; krajnjeStanje = new State(); astar.search(pocetnoStanje); krajnjeStanje.markI = astar.getPoint().X; krajnjeStanje.markJ = astar.getPoint().Y; }
//pomeranje heroja public void moveIcon(int dI, int dJ) { popuniHeroja(); popuniMasinu(); if (me.NAPOTEZU) { int staraPozicijaX = me.POZICIJA.X; int staraPozicijaY = me.POZICIJA.Y; me.pomeri(new Pozicija(dI, dJ)); me.NAPOTEZU = false; computer.NAPOTEZU = true; InvalidateAdv(me.POZICIJA.X, me.POZICIJA.Y); InvalidateAdv(staraPozicijaX, staraPozicijaY); } if (computer.NAPOTEZU) { int staraPozicijaX = computer.POZICIJA.X; int staraPozicijaY = computer.POZICIJA.Y; /*svaki put kad je komp na potezu radi se pretraga * da se utvrdi koje selo je najbolje napasti * */ AStarSearch pretraga = new AStarSearch(); /*pocetnoStanje dobija koordinate trenutne pozicije * komp-a * */ pocetnoStanje = new State(); pocetnoStanje.markI = computer.POZICIJA.X; pocetnoStanje.markJ = computer.POZICIJA.Y; /*Prosledjuje se pocetno stanje, da bi se * odredilo koje je najbolje sledece stanje * */ State najbolje = pretraga.search(pocetnoStanje); /* Nakon sto se zavrsi pretraga, krajnjeStanje * dobija koordinate sela koje je najbolje napasti * po heuristickoj funkciji * */ State krajnjeStanje = new State(); krajnjeStanje.markI = pretraga.getPoint().X; krajnjeStanje.markJ = pretraga.getPoint().Y; if (krajnjeStanje.markI == computer.POZICIJA.X && krajnjeStanje.markJ == computer.POZICIJA.Y) { /*ova metoda vrsi borbu kompjutera kada dodje do ciljnog sela*/ Selo temp = nadjiSelo(new Pozicija(krajnjeStanje.markI, krajnjeStanje.markJ)); if (temp != null) { if (temp.OSVOJIO != null && temp.OSVOJIO.Equals(me)) { Form1 fm1 = new Form1(computer, temp); fm1.ShowDialog(); } else { borba2(ref computer, ref temp); } } } /*Komp se pomera u pravcu sela * */ computer.pomeri(new Pozicija(krajnjeStanje.markI, krajnjeStanje.markJ)); /*Nakon sto se pomeri za odredjen broj mesta, * komp nije vise na potezu * */ computer.NAPOTEZU = false; me.NAPOTEZU = true; /*Brise se ikonica na staroj poziciji i iscrtava na novoj * */ InvalidateAdv(computer.POZICIJA.X, computer.POZICIJA.Y); InvalidateAdv(staraPozicijaX, staraPozicijaY); } }