Poslao: 01 Jun 2008 19:53
|
offline
- biser-x
- Počasni građanin
- Pridružio: 28 Jun 2004
- Poruke: 990
- Gde živiš: Kucura
|
Da pravimo lavirint iz novina, ova slika sto je rgdrajko prikacio. Necemo raditi 3D, radimo ovo iz pricje perspektive kako je LittleHacker napisao. Takodje radimo u VB6-ici. I molim vas pokusajte razmisliti o algoritmu kako iscrtati stazu.
Druga mogucnost je da napravimo svoje staze koje cemo kasnije ucitavati. To je laksa varijanta... Ajde ovi koji hoce da rade neka se opredele koju cemo varijantu uzeti da radimo.
* Ostali koji rade u GameMaker-u ili VB.Netu nek sebi otvore novu temu da ne bi ovde pretrpavali bezpotrebno!
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 01 Jun 2008 20:02
|
offline
- Srki_82
- Moderator foruma
- Srđan Tot
- Am I evil? I am man, yes I am.
- Pridružio: 12 Jul 2005
- Poruke: 2483
- Gde živiš: Ljubljana
|
Uvek mozete da napravite format za svoje "staze" pa da posle napravite generator "staza". Na taj nacin mozete imati 2 tima. Jedan koji radi na programi za generisanje lavirinta, a jedan da radi na programu koji ce igrac videti.
|
|
|
|
Poslao: 01 Jun 2008 20:06
|
offline
- LittleHacker
- Ugledni građanin
- Pridružio: 13 Apr 2007
- Poruke: 452
- Gde živiš: Beograd
|
Tako je mozda i najlakse...Ali bolje da ne bude dva tima...Jer i jedan i drugi onda moraju da znaju svaki detalj kako izgleda ta staza, kako se ustvari pravi ispod haube, da bi mogli da je ucitaju u igru...
|
|
|
|
Poslao: 01 Jun 2008 21:29
|
offline
- Nemanja
- Web Designer and Developer
- Pridružio: 24 Jan 2007
- Poruke: 266
|
pa kako hocete, ako je neko dobar u programiranju da se staza "sama" napravi, onda neka napise algoritam za nju .
|
|
|
|
|
Poslao: 01 Jun 2008 21:37
|
offline
- Pridružio: 31 Mar 2005
- Poruke: 448
- Gde živiš: Novi Beograd
|
Sto se tice algortima...
Ne znam kako bi prvo poceli.
Algoritam koji pravi "pravu" putanju, pa drugi algoritam koji pravi corsokake, ili nekako trece.
Mislim da ce veci problem biti sa algoritmom za corsokake.
Sto se tice "prave" putanje ovako mi nesto iz glave pada napamet:
1. nasumicno se postavljaju ulaz i izlaz iz lavirinta
2. putanja se kreira od ulaza (jelte), nasumicno odredjuje susednu "prostoriju"
3. susedna prostorija ne sme biti prethodna niti kraj mape
4. algoritam tako "luta" po mapi dok ne dodje do izlaza
jel ovo ima smisla?
Dajte ko ima vise iskustva nek pomogne sa logikom.
Za corsokake, blage ideje nemam... nesto slicno kao ovo gore, samo nikako ne sme da se susretne sa ovim putem niti da dodje do izlaza.
od 1.-4. mi ne deluje preterano tesko, ali corsokaci .. ne pada mi napamet.
Odredili smo platformu (VB6), odredili smo tip (2d lavirint, sa samo jednim pravim resenjem).
Sto se tice igraca, trebao bi da moze da se krece levo-desno, gore-dole. ja jos zamisljam (kao sto pisah ranije) da ima ograniceno vidno polje.
Naravno bio bi ubacen neki tajmer, pa high score, pa ovo pa ono...
Al da krenemo mi od osnova
Ajmo sad na konkretne stvari...
Poz svima
|
|
|
|
Poslao: 01 Jun 2008 21:41
|
offline
- Srki94
- Mod u pemziji
- Pridružio: 14 Feb 2008
- Poruke: 12391
|
Ljudi zasto da komplikujemo stvar kad moze da bude prosta? Ajde da napravimo obican lavirint i to je super za pocetak. A posle mozemo da se vratimo na projekat i da ga usavrsimo. Ajde prvo od prostog da krenemo, ovako nikuda necemo stici.
|
|
|
|
|
Poslao: 02 Jun 2008 02:22
|
offline
- rgdrajko
- Građanin
- Pridružio: 06 Maj 2007
- Poruke: 241
- Gde živiš: Beograd
|
Pa algoritam je veoma prost. Veoma je tesko uraditi algoritam za celu tabelu, posebno ako je velika. Zato podelimo tabelu na delove, ali ne na napred definisane delove jer bi to bilo jednostavno i skoro uvek isto kretanje. Znaci ovako u odnosu na trenutno aktivno polje u mrezi tabele na koje smo trenutno stali uzima se npr 3(4 ili 5 slucajno) polja udesno i 3 polja nadole, znaci 3x3 polja(ako je kretanje puta udesno na dole) i onda se za tih 9 polja(3x3) pri kretanju(koje je delom slucajno a delom namerno-da bismo stigli na desnu stranu, da idemo prema izlazu, a usput slucajno skrecemo za jednopolje u sva 4 pravca. Takodje od tog aktivnog polja na koje smo stali trenutno mozemo uzeti 3 polja gore i 3 polja levo, sve kombinacije su u opticaju. Ovo takodje da se slucajno dobiva. Znaci kretanje je uvek za jedno polje levo, desno gore dole u trenutno definisanoj matrici 3x3 polja, 4x4 polja i 5x5 polja. Pri tom kretanju proveravamo u memoriji u 2d nizu(red, kolona) da li je to polje (na koje treba da stanemo) slobodno ili zauzeto od nekog puta. Evo dao sam i grafiki prikaz algoritma.
Sa X je oznaceno trenutno aktivno polje.
|
|
|
|
Poslao: 02 Jun 2008 17:19
|
offline
- karlos
- Građanin
- Pridružio: 25 Maj 2007
- Poruke: 114
- Gde živiš: Novi Sad, Sombor
|
Evo da se i ja prikljucim izradi lavirinta.
Za pocetak sam smislio algoritam i napisao program za kreiranje "pravog" puta.
Sto se tice laznih puteva, tu tek treba da se smisli algoritam, ali mislim da moze da se upotrebi slican algoritam kao ovaj.
Ovako izgleda program:
A evo ga i kod:
mycity.rs/must-login.png
Program radi na principu rekurzivne funkcije i zato moze da generise samo lavirinte velicine 2x2, 4x4, 8x8, 16x16 .......2^n x 2^n gde je n ograniceno memorijom racunara.
Primer algoritma: treba napraviti lavirint velicine 4x4 (NxN)
1. Odabere se ulaz i izlaz iz lavirinta.
2. Tabela se deli na 4 dela (N/2 x N/2).
3. Odaberemo put kroz ta 4 dela (nije uvek moguce kroz sva 4, u ovom slucaju samo kroz 3 dela). Uvek, osim u jednom slucaju( kada su ulaz i izlaz na istom polju) postoje 2 varijante puta.
prva
druga
4. U ovom slucaju je ulaz u 1. deo ujedno i ulaz u lavirint, a izlaz iz 3. dela izlaz iz lavirinta. Preostaje nam da pronadjemo izlaz iz 1. i 2. dela kao i ulaz u 2. i 3. deo. Posto se 1. i 2. deo ( 2. i 3. deo) granice samo sa dva polja, koristimo Random fu-ju za odredjivanje ulaza i izlaza.
Primer: ( postoje 4 kombinacije)
5. Sad za svaki od delova primenimo postupak pod tackom 2.
Dve od mogucih 8 kombinacija.
Ukupno postoji (2^broj delova) kombinacija.
Prilikom pozivanja rekurzivne funkcije salju se samo koordinate , ulaz i izlaz iz lavirinta (ili nekog dela lavirinta) kao i informacija o dubini rekurzije, tj ne vise od 30-tak bajtova.
Npr: za tabelu 64x64, dubina rekurzije iznosi 6.
U najgorem slucaju ( da putanja uvek prolazi kroz sva 4 polja) zauzece memorije iznosi 30 x 4^6 < 120 Kb
|
|
|
|