[ rgdrajko @ 28.05.2008. 21:32 ] @
Hajde da napravimo program za lavirint.
Evo algoritma, ako neko ima bolji algoritam neka da predlog:

Lavirint se mora uraditi preko klasa zbog velikih zahteva.

Algoritam je sledeci:
Prvo se odredi koja stranica lavirinta sluzi kao ulaz u lavirint i na kom mestu u toj stranici, koja stranica sluzi kao izlaz i na kom mestu u toj stranici. Prvo se upise put resenja kroz ceo lavirint od ulaza do izlaza, sada se od ulaza prema izlazu dodaje nekoliko sporednih puteva koji idu skoro do izlaza i sa jedne i sa druge strane puta za resenje. Sada se dodaje nekoliko puteva koji idu od izlaza do skoro prema ulazu i sa jedne i sa druge strane od puta za resenje. Od sporednih puteva mogu ici neki kraci putevi da popune praznine na tom mestu. Pri cemu sporedni putevi nikako ne smeju da se ukrstaju sa glavnim putem. Za svako polje se mora definisati u nizu za sve cetiri linije koje sluze kao okviri oko polja: krozj koju liniju u polju je usao koji put, kroz koju liniju u polju je izasao koji put(glavni, sporedni). U polju kroz one linije kroz koje su usli/izasli putevi(presecene linije polja) nema crtica, a gde nisu usli putevi na te linije idu crtice. I to je to momci. Svako polje ima 4 crtice oko polja koje cine kvadrat. To je ceo algoritam. Da li vam je jasno?
[ Aleksandar Ružičić @ 28.05.2008. 21:49 ] @
ne nije mi jasno...

kako misli "program za lavirint"? mozda mislis na "program za generisanje lavirinta"? ako je ovo drugo onda znam o cemu se radi a i imam ideju kako bi to moglo (relativno) jednostavno da se uradi... ali aj neka se neko drugi javi da ne radim ja...
[ goranvuc @ 28.05.2008. 21:54 ] @
Ne znam zašto imam jak osećaj da je naš Rajko to već uradio, pa nas izaziva ...
[ rgdrajko @ 28.05.2008. 21:56 ] @
Da mislim na "program za generisanje lavirinta" ali ne slucajnog generisanja lavirinta jer to nije to, taj lavirint ispada bezveze, mozda nikada nisi video lavirinte u novinama koje sam crtao sa rapidografom. Dacu neki skenirani lavirint sada nemam sliku tog lavirinta.
[ Aleksandar Vasic @ 28.05.2008. 21:59 ] @
Pa valjda je dobro slucajno generisanje lavirinta? Ako sam dobro shvatio, treba u odnosu na odredjenu putanju da iscrta lavirint........to bi trebalo slucajno generisanje...
[ rgdrajko @ 28.05.2008. 22:03 ] @
Pa po nekoj teoriji, koja je veoma pametna i nisam je ja izmislio, slucajnost ne postoji, postoji samo namera. Prema tome moras ograniciti tu slucajnost sa nekom namerom, sa nekim usmerenjem, inace se obicno dobija glupost, to sam odavno shatio, jer slucajno generisanje skoro nikada ne daje dobar rezultat.
[ Shadowed @ 28.05.2008. 22:54 ] @
U pravu je Rajko (jeste, jeste, rekao sam to), ukoliko bi se random generisalo resavanje bi bilo suvise lako.

Citat:
goranvuc: Ne znam zašto imam jak osećaj da je naš Rajko to već uradio, pa nas izaziva ...

Ili mu treba za nesto
[ Aleksandar Ružičić @ 28.05.2008. 23:06 ] @
shad nisam mislio bas random vec da program u svakom trenutku (za odredjeni deo lavirinta) ima nekoliko opcija i da izbor vrsi nasumicno...

evo npr ovakav algoritam: http://www.freebasic.net/forum/viewtopic.php?t=3713
Code:

Start Stuff
1. Set-up maxe propeties As constants
2. Draw grid For the maze
3. Define types
4. Create variable types

Sub initmaze()
1. Set default info
2. Randomize starting square

Sub savemaze()
1. Open file
2. Write Data To file
3. Close file

Sub move(cellx,celly)
cellx And celly are coordinates For the current maze square
1. Create variable types
2. Check For possible directions
3. Pick Random direction
4. Calculate coordinates of wall To be broken If the wall Is there
5. Draw over the wall
6. Backtrack 1 cell If no direction Is possible
7. Change direction If no direction Is possible
8. Add the New cell's coordinates to the route array

Main Program
1. Call initmaze() To initalize the variables And arrays
2. A cheap counter For the production of the maze
3. Erase the marker
4. Call move(cellx,celly)
5. Exit For...next Loop
6. Call savemaze()
7. Wait For a Key press
[ rgdrajko @ 29.05.2008. 16:35 ] @
Citat:
Shadowed: ..Ili mu treba za nesto ;)


Ne treba mi.

@ GoranVuc
Osecaj nikada ne vara, salim se naravno. Nisam uradio program za lavirint. Prepravio sam jedan strani program.

Citat:
Aleksandar Ružičić: shad nisam mislio bas random vec da program u svakom trenutku (za odredjeni deo lavirinta) ima nekoliko opcija i da izbor vrsi nasumicno...


Apsolutno si u pravu i hvala za link.

Evo primer Lavirinta.



[Ovu poruku je menjao rgdrajko dana 29.05.2008. u 22:24 GMT+1]
[ rgdrajko @ 29.05.2008. 21:25 ] @
Gornji primer lavirinta je los, cilj je napraviti bolji algoritam.
[ Shadowed @ 29.05.2008. 21:53 ] @
Mislim da bi trebalo precizno definisati sta se smatra dobrim a sta losim da bi se uopste moglo pristupiti problemu.
[ Eurora3D Team @ 29.05.2008. 22:17 ] @
Ako je ovaj los kakvi su ti dobri :) ... stavi neku sliku ...
By the way ima i izreka sve sto je jednostavno je genijalno ... al ovde ocigledno ne vazi :)
U ovom lavirintu gore je fora da uvek kad mozes da biras skrenes levo (ako se krene iz donjeg desnog ugla) osim u zoni ulaza i izlaza , gde je obnuto.
Mozda je i to slucajno a mozda i postoji neka namera :)
poz
[ rgdrajko @ 29.05.2008. 22:34 ] @
Citat:
Shadowed: Mislim da bi trebalo precizno definisati sta se smatra dobrim a sta losim da bi se uopste moglo pristupiti problemu.


Ok sutra cu da skeniram jedan dobar koji sam nacrtao rapidografom.

Citat:
Eurora3D Team: U ovom lavirintu gore je fora da uvek kad mozes da biras skrenes levo (ako se krene iz donjeg desnog ugla) osim u zoni ulaza i izlaza , gde je obnuto.
Mozda je i to slucajno a mozda i postoji neka namera :)
poz


U pravu si, nisam to primetio.
[ Eurora3D Team @ 29.05.2008. 22:35 ] @
Da ti napisem kako bi ja ovo radio.
Prvo mozemo da primetimo da je polje kvadratno i da su putanje iste sirine. Sto znaci da ovo mozemo da graficki pretstavimo kao mrezu (ili matricu , 2d niz).
Ja bi napravio formu sa kontrolama (moze button) sirine i visine kao sto je putanja , gde bi onaj koji koristi program mogao sam da oznaci putanju. Znaci caka je da mi smislimo put a program moze da izlupa random linije sa jednim jedinim uslovom , da nigde ne presece putanju.
Neznam kako bi ovo izgledalo kad se uradi al mi ja ovakav pristup nekako najprostiji

Da i normalno treba da iscrta okvir ...
[ Eurora3D Team @ 29.05.2008. 22:53 ] @
Da dodam :)
Onaj koji unosi putanju moze da unese i par laznih putanja da lavirint ne izgleda totalno haoticno. Mislim da bi to i otezalo resavanje.
Ovo su neke moje ideje sa programerske tacke gledista .... a u ovu tematiku se uopste ne razumem :)
[ rgdrajko @ 29.05.2008. 23:04 ] @
Evo kako izgleda dobar lavirint, rukom iscrtan.


[ Shadowed @ 29.05.2008. 23:34 ] @
OK, to je primer, al' mislio sam na definisanje toga sta znaci dobar a sta los, tj. izreceno recima, kao pravila.
[ rgdrajko @ 30.05.2008. 01:01 ] @
Pa ovako: svaki dobar lavirint ima plan kako ce putevi ici po lavirintu , pri cemu mora da ima sto manje slepih puteva od 1 polja, kao sto ima gornji lavirint(lavirint iscrtan rukom nema ni jedan slepi put od 1 polja), mora da se snalazi i prilagodjava situaciji pri kreiranju puteva kroz lavirint. Znaci uz glavni put ili resenje ima vise sporednih puteva koji pokusavaju da zbune resavaca i da mu otezaju pronalazak resenja, ako su sporedni putevi providni, resavac veoma lako pronadje put kroz lavirint. Znaci u 2d matrici se definisu i zapisuju putevi tj. kroz koje su "kapije" u kvadratnom polju usli putevi ili put. Iscrtavanje je posle toga veoma lako sa grafickom komandom Line iscrtati lavirint, po potrebi i zelji se ovakav lavirint veoma lako moze pretvoriti u igru.
[ Lord_Nenad @ 30.05.2008. 19:37 ] @
Pa bolji je onaj gore lavirint... Ako se krene iz IZLAZA ima vise razlicitih mogucnosti, dok kod ovog dole ima samo jedna... A i put se lako uocava bez razmisljanja ( ne mislim na to sto je sad iscrtan... ).

Ovo gore sa random je bilo bolje, a ako hotjesh da nema PUTA OD JEDNOG POLJA jednostavno to definishi da proveri koliko polja ima put, i ako ima 1 da ga ukloni, tj da prodje neki drugi kroz to polje...

Definishi 2 GLAVNA puta koja ce se RACHVATI, koja ce kretati iz ULAZA i IZLAZA ( kako bi bio lavirint i ako se krene iz IZLAZA x) ).
Kad put bude "krenuo" nek se krecu oba u isto vreme ( kako bi se "sreli" priblizno kod sredine ( mozes definisati tachku SPAJANJA, tj mesto gde ce se spojiti ) ).
Nek bude random da odluci da li ce ici levo, desno ili pravo.
Stavi da preko random odlucuje da li ce se racvati ili ne ( ovde mozes dodati da proveri da li ima samo 1 polje ili vise ).

Moze se osmisliti i kontrolisanje TEZINE lavirinta tako sto ce se smanjiti sansa za racvanjem, kako bi bilo manje razlicitih puteva, ili da se poveca sansa da put ne skrece, tj da ima vecu sansu da ide pravo ( 1:1:2 = Levo:Desno:Pravo ).


To je moje misljenje... Nadam se da sam pomogao. Pozzz
[ rgdrajko @ 30.05.2008. 21:54 ] @
Slazem se sa svim sto si naveo. Mora postojati logicki zakljucak u kom ce smeru ici, tj. u smeru prema izlazu a mora postojati i random kretanje. Najbolje je preko random da utvrdjuje da li ce uzeti logicki zakljucak koji ga uvek vodi u smeru prema izlazu ili ce iskoristiti random(npr 0=random kretanje, 1=logicko kretanje). Sto se vise priblizava izlazu sve manje koristiti opciju random(dodati i ovo ogranicenje).
[ rgdrajko @ 02.06.2008. 01:23 ] @
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.

[ Srki_94 @ 08.06.2008. 15:02 ] @
Ju, Ju, Ju Bre rq drajko kako te nije sramota da lazes u tvoje godine?
Kada si rekao da ti ne treba slagao si mnogo mnogo ljudi ovde. Oni ti pomazu i veruju a ti zabijes noz u ledja?
Nemogu da verujem stvarno.
Evo i linka gde sam ja postavio temu na drugom forumu i gde treba da uradimo projekat Lavirint. I zato treba rq drajku pomoc.
http://www.mycity.co.yu/Visual-Basic/Ozivite-forum.html
[ Aleksandar Ružičić @ 08.06.2008. 16:32 ] @
e momci slatko se nasmejah dok sam citao onu temu na mycityu :)

ali dobro, nadam se da cete zavrsiti projekat...
[ Srki_94 @ 08.06.2008. 18:24 ] @
I ja se nadam.
Cekamo samo da rqDrajku pomognete na ovom forumu pa da nam ispise tamo klasu (Da niko nezna i da mislimo da je rqDrajko napisao klasu )
[ Eurora3D Team @ 08.06.2008. 20:47 ] @
@Srki_94 Otkud znas da ne zavlaci vas :) Ova poruka koja je ista na oba foruma je postavljena otprilike u isto vreme ...
Najpre ce da bude da coveku treba program za lavirint pa koristi forume da bi ga napravio ... kao i svi ostali koji postavljaju pitanja ...
[ rgdrajko @ 08.06.2008. 20:47 ] @
@Srki 94

Ovo sam ti odgovorio na onom forumu:

Decko, ovo je slobodna zemlja u kojoj vlada demokratija. Posto ti ne zelis da ucis basic, to je tvoje demokratsko pravo, onda nemoj ni da postavljas pitanja, jer koja je svrha postavljati pitanja nekome ako ne zelis to i da naucis sto ti neko objasnjava. Znaci nemoj vise da nas maltretiras i da postavljas pitanja, a mi cemo postujuci demokratsko pravo, da ti vise ne odgovaramo ni na jedno tvoje pitanje. U suprotnom neko od nas ispada budala, ili ti ili mi.

Sta su ti drugi odgovorili i to se moze procitati na http://www.mycity.co.yu/Visual...ave-ucitavanje-datoteka_2.html


Trebao si da procitas:

Citat:
Shadowed: ..Ili mu treba za nesto ;)

Ne treba mi.

@ GoranVuc
Osecaj nikada ne vara, salim se naravno. Nisam uradio program za lavirint. Prepravio sam jedan strani program.

i sada Srki94
Iskreno receno svi momci sa ES su genijalci i oni mogu da mi pomognu jer imaju znanje i znaju vise od mene i mogu napraviti ne jedan lavirint vec 10. Medjutim ja nisam trazio pomoc za pravljenje programa i oni su to razumeli, sto ti ocigledno nisi.
[ Srki_94 @ 08.06.2008. 22:21 ] @
@ rqdrajko
Nisam ja nista rekao za ljude na ES. Znam da znaju puno!. I zasto si pomesao teme? Stavi teme iz lavirinta!
Evo sta je rqdrajko napisao za mene! To je dokaz kakav je on covek! Zasto Litle Hacker sad lepo razgovara samnom?
Evo linka http://www.mycity.co.yu/Visual-Basic/Ozivite-forum_4.html#771250
[ rgdrajko @ 08.06.2008. 22:38 ] @
Pa trebao si da das ovaj link:

http://www.mycity.co.yu/Visual...ave-ucitavanje-datoteka_2.html

Tamo si napisao:

Kao sto rekoh po stoti put : " Ne planiram da ucim basic" ...
...
Nisam mislio bukvalno ali ne planiram da ucim dalje jer ucim C++......
[ Aleksandar Ružičić @ 09.06.2008. 00:17 ] @
momci zamolicu vas da ovaj forum ne koristite kako bi se prepirali medjusobno o tome sta je ko od vas dvojice rekao na nekom drugom forumu (po pravilniku es-a zabranjeno je reklamiranje drugih foruma, i reklamiranje uopste), imate taj drugi forum pa se tamo svadjajte.

mi ovde se trudimo da ocuvamo kakav-takav kvalitet diskusija koje se vode na es forumima.



hvala na razumevanju.
[ Srki_94 @ 09.06.2008. 15:37 ] @
Ok Ja se izvinjavam upravu si. Moderatoti izvinite.