[ Skuffman @ 10.11.2004. 20:56 ] @
radim packmana..i sve je ok ali ne znam kako da sredim protivnike...napravio sam da kada ih taknem da sam izgubio ali ne znam kako da se oni kreču sami po formi i to svaki put drukčije...

naprimjer imam par pregrada i kako da oni prolaze između pregrada..
kako da idu ravno i onda skrenu desno..(u tom stilu)

ne znam ni krenuti sa tim...ako netko zna hvala unaprijed


[ filjo @ 10.11.2004. 21:40 ] @
Za svakog protivnika imas X i Y koordinatu plus imas npr. Xadd i Yadd promenjljive koje mogu biti +1, 0, -1.

U svakom krugu na X dodajes Xadd a na Y dodajes Yadd i ispisujes protivnika na novoj lokaciji. Pazi samo da samo jedno add (npr. Xadd) moze da bude +1 ili -1, a druga koordinata ti onda mora biti 0.(Yadd=0)ili obrnuto. Da jedna nije nula dobio bi kretanje ukoso sto tebi ne treba.

Biranje kretanja protivnika ide otprilike ovako: Kada protivnik udari u zid slucajno izaberes Xadd ili Yadd, a zatim slucajan broj -1,0,+1 a ovu drugu add stavis na 0,i proveris da li se protivnik moze kretati u tom smeru. Ako moze pustis ga da ide do sledece prepreke. Ako ne moze biraj ponovo.

Bio je jedan intervju sa tvorcem Pacmana jos davnih 80-tih mislim u "Racunarima" i koliko se secam tamo je receno da svaki protivnik ima tacno odredjeno kretanje. 1. ide slucajno, drugi juri za tobom itd, tako da oni nemaju nikada identicne putanje. Probaj prvo ovako slucajno pa ce se mozda roditi i neka druga ideja.

Nadam se da sam ti bar malo pomogao.
[ Marko_L @ 10.11.2004. 22:55 ] @
Citat:
Biranje kretanja protivnika ide otprilike ovako: Kada protivnik udari u zid slucajno izaberes Xadd ili Yadd

Predpostavljam da Xadd predtavlja kretanje po horizontali, a YAdd po vertikali.Zar nije onda bolje da umesto slučajnog izbora, program prvo proveri da li je zid horizontalan ili vertikalan, pa shodno tome iskoristi XAdd (slučajnim izborom -1 ili 1, a YAdd postavi na 0) ako je zid horizontalan i obrnuto, da ne bi došlo do situacije da protivnik naiđe na zid i vrati se nazad istim putem kojim je došao (pošto to nisam viđao u starijim verzijama pacman-a, za novije ne znam).
Izvini ako sam nešto pogrešno shvatio.
[ filjo @ 10.11.2004. 23:22 ] @
Ma odlicno si shvatio, ali ja sam hteo da mu objasnim sto jednostavnije i dam neku ideju, pa kada napravi kakvo-takvo kretanje po tabli, znace i sam kako to sve da resi efektnije.

Uglavnom je bitno da cuva koordinate protivnika i ima jos 2 pomocne promenljive koje ce pri svakom ciklusu da se sabiraju na X i Y sve dok ne dodje do zida. Kada se dodje do njega, na njemu je da udluci kojim sistemom ce da promeni Xadd i Yadd tako da se likovi "pametno krecu".

Primer: Ako je Xadd bio <>0 onda njega postavi na 0 a Yadd postavlja na +1 ili -1 ako je to moguce tj.ako nije "ćorak".Tako ce da izbegne vracanje unazad. Jos jedna ideja je da se neki krecu brze po +-2 a neki sporije sa +-1.
[ Shadowed @ 11.11.2004. 13:58 ] @
Ovo je odlican primer kada treba koristiti objektno orjentisano programiranje. Dobar bi bio i za ucenje istog jer je primer relativno jednostavan.
Trebalo bi napraviti klasu Protivnik koja izmedju ostalog ima metod Move (bez parametara). Pro pozivanju ovog metoda objekat (instanca klase) proveri sta se nalazi sa gornje, donje, leve i desne strane. slucajno odabere varijantu u kojoj stoji prazno polje i promeni svoje koordinate na odogovarajuci nacin (za gore y=y+1, dole y=y-1, desno x=x+1, levo x=x-1). Kad se pozove Move za sve protivnike iscrtava se tabla sa novim koordinatama protivnika.

Mada u sustini ja ne bih koristio potpuno slucajan izbor jer bi izgledalo bez veze vec bih napravio neko malo slozenije pravilo za odlucivanje smera kretanja.

Eto, nekoliko hintova pa ako ti nije velika zurba da zavrsis program mozes usput da naucis malo OOP-a ;).
[ Skuffman @ 11.11.2004. 19:56 ] @
hvala idem pokušat nešto složit javit ču ako zapnem
[ Skuffman @ 13.11.2004. 14:14 ] @
iskreno ne znam kako ni da krenem...možete li mi pokazati neki jednostavan primjer sa xadd i yadd...

Ili neki mali tutor gdje da skinem
[ filjo @ 13.11.2004. 14:53 ] @
Daj malo koda.Mislim na to kako detektujes sudare, organizaciju i ispis lavirinta, kako detektujes udar o zid.
Ne mogu ni da zamislim kako sve to izgleda pa je mi je glupo da pisem neke nebuloze.

[ TheAlas @ 13.11.2004. 16:46 ] @
Pacman je teska igra za pocetnika, ovo ti je prevelik zalogaj , forum ti moze samo pomoci da nadjes neki dobar tutorijal/primer za pakmana.
Pre nego sto pocnes da pravis igru, trebas da imas gotove algoritme i detaljne planove za najbrzi i najmanji kod. Ako se zaustavis samo zato sto ne znas "kako nesto da uradis" onda imas los plan, nadji neke resurse na internetu koji ce ti resiti probleme sa kolizijom/kretanjem, itd.

Koliko se secam, crveni duh je najpametniji, ima i najgluplji... zuti valjda...