PDA

Prikaži potpunu verziju : Objašnjenja početniku


Strane : [1] 2

Crusader88
1.8.2006, 0:10
kao prvo zamolio bih moderatore da ne brisu temu jer jos nije dovoljno objasnjeno
sve za pocetnika, ovo ce biti poucno i za druge pocetnike.

1. prica se o irrlichtu i nista mi nije jasno, kao irrlicht i koji endzin itd.
ako moze pomog tacno treba ti to to to i to. a na to sam mislio koji je tu osnovni program a koji su pomocni, ili neki pluginovi ili kako to ide.

2.prica se o c, c++ cxx... i bog zna sta kad bi moglo malo neko objasnjenje za pocetike. cuo sam za c++ ali kad vidim samo c ili tako nesto malo se zbunim.

3.kad bi mogli neki linkovi za 120% pocetnike od (click 2 times on the icon) i td.

4.znaci molim ljude koje se malo bolje poznaju da mu kazu taj program, i to i to i to

Ja bih zeleo da pravim neki fps ili tako nesto, znam da je to tesko da 50 ljudi to prave godinama ali shvatite me moram da se pripremam malo za faks, sacu 4 godina srednje i posle bih zelio da nasavim softverski inzinjering, ili tako nesto.
znaci zeleo bih da pocnem da pravim igrice, mala pomoc i za mene i za druge pocetnike bila bi ono SUPER 1000%, mozete da preporucite i neke knjige nije na odmet.
zahvaljujem se svima kojima sam oduzeo 10 minuta citajuci ovo.
poz:)

Crusader88
1.8.2006, 0:27
aloooooooo:) , programeri nesto ste pospani veceras.

holodoc
1.8.2006, 0:37
zahvaljujem se svima kojima sam oduzeo 10 minuta citajuci ovo.

U bre pa većina na forumu je poodavno koristila Bukvar pa im sigurno treba manje od 10 min;) Čast izuzecima:D

Možda će moderatori obrisati ovu temu kao ŽEŠĆI duplikat al ajde,...

Sudeći po tvom postu naišao si na klasičnu raskrsnicu u obrazovanju i pitanje da li od kuckanja na računaru ima leba ili da lepo kao što moj cimer kaže "Dve ovce pa u planine":)

Možda će ovo malo grubo zvučati ali sudeći po pitanjima koje si postavio daleko si od pravljenja programa u nekom ozbiljnijem programskom jeziku a kamoli nekog fps-a. Odhmah na početku nešto za obeshrabrivanje:) Svi ljudi koji se bave razvojem igara u bilo kom domenu (grafika, programiranje, modeling) uglavnom već imaju iskustva koje se izražava brojem godina koji ima minimum dve cifre;)

Pre nego što se uhvatiš u koštac sa bilo kakvom vrsta programiranja treba da shvatiš da će ti kao i kod većine ostalih stvari trebati tri stvari: upornost, upornost, upornost i upornost;)

Dakle, ostavi se bilo kakvog filozofiranja o fps-ovima i posveti se ozbiljnije izučavanju nekog ozbiljnog programskog jezika sa kojim ćeš za početak praviti obične aplikacije tipa nekog bezveznog proračuna itd. Proći će dosta vremena (i matematike) dok ne budeš bio sposoban da iole razumeš tehniku na osnovu koje 3d funkcioniše. Zato ako si slab iz matematike postoje dve opcije: ili da batališ celu stvar sa igricama ili da DEBELO zagreješ klupu i podsetiš se onih stvari iz matematike koje najviše mrziš. Sada radiš integrale u matematici pa zato malo obrati pažnju na njih. Trebaće ti;)

Što se tiče samog programskog jezika C++ ti nema alternativu. Znači moraćeš njega da naučiš pošto se već dugi niz godina koristi kao platforma za razvoj svega i svačega a i koristiće se veoma, veoma dugo!

Za početak, ako si početnik sa programiranjem potraži neke dobre knjige na temu programiranja a koje obrađuju algoritme, razne tehnike programiranja, Visual varijante istih itd. Potraži malo na forumu negde sam postovao spisak prekopotrebne literature ako hoćeš da učiš C++ a iskreno mrzi me da je ponovo navodim.

A što se tiče faksa:dzavo: Veruj mi da ćeš po završetku istog biti bar par puta nepametniji nego što si sada;)

E da,... Evo ti link pa pročitaj literaturu na kraju stranice a ne bi ti bilo loše ni da malo pročešljaš celu temu:
http://www.sk.co.yu/forum/showthread.php?t=278&page=3&highlight=algoritmi

:ciao:

Crusader88
1.8.2006, 0:46
nije me to toliko obeshrabrilo, iz matematike sam veoma dobar osim sto sam malo lenj. dobro da za**bemo sada igre i da krenemo od neceg veoma prostijeg.
Koje je po tebi fax dobar za programiranje, tvoji utisci i td. i od cega da se krene, znaci da kupim knjugu c++, kazi koju da ne pogresim jer takve stvari nisu veoma jeftine, pa da posle:n-cc2: :boodala: :icon_scra i td.

holodoc
1.8.2006, 1:01
Pa rekao sam ti već da možeš da nabaviš ove knjige i biće sve OK. Ja lično sve te knjige imam u elektronskom izdanju (naravno u slučaju da ti engleski i nemački nisu problem) jer su originali ipak originali a domaći krš prevodi mogu samo da te zbune.

Ako te mrzi za početak da učiš algoritme probaj odmah sa nekom C++ knjigom ali za apsolutne početnike. Recimo ne bi bilo loše da probaš sa nekom knjigom "Teach yourself C++ za toliko i toliko dana". Da se razumemo, ovaj serijal knjiga samo treba da ti da osnovna uputstva za to kako uopšte početi. I tu se njihova funkcija završava jer ćeš posle ovog "uvoda" morati da kreneš na težu literaturu tipa Stroustrup (lično obožavam da čitam originalne knjige ljudi koji su razvili neki programski jezik) ili recimo naše domaće autore kao što je Kraus (čije knjige mi se baš nešto preterano i ne sviđaju). Postojala je neka dobra knjiga koju su do skoro koristili na Vojnoj akademiji ali ne mogu ponovo na nju da naletim.

Mogao bih da nastavim ali za početak mislim da ti je to dovoljno.

Što se tiče faksa koji je najpogodnije tlo za programera ne bih smeo da budem toliko neodgovoran pa da kažem da je to neki specifičan faks dobar ili loš jer iako se lično prevashodno bavim jurcanjem po kodu struka mi je više vezana za elektrotehniku. Sve ovo što radim je plod ličnog entuzijazma i ludila;) Ličnog sam mišljenja da najbolji "geek-ovi" po ovom pitanju dolaze sa PMF-a jer poseduju ono što je najneophodnije vrhunskom programeru a to je debela pozadina u vidu nečega što se zove matematika. Sa njihovom diplomom (i pre svega znanjem) zasigurno nećeš imati problema da se uklopiš u bilo koji fps :) Lično poznajem čoveka koji je završio PMF i koji je posle samo sat vremena "sažvakao" kompletan sadržaj engine-a na kome sam počeo neki rad pre par godina.

:ciao:

Crusader88
1.8.2006, 1:33
pls link za c++

holodoc
1.8.2006, 1:53
Kako misliš link za C++:confused:

Pa rekao sam ti već na private da ih potražiš eMule-om. Tu nema linkova nego samo pretraga i čekanje. Ako nisi nikada koristio "mazgicu" skini je sa www.emule-project.net/ a najčešće probleme koje strefe početnika rešićeš ovde http://www.sk.co.yu/forum/showthread.php?t=2105.

Marko_L
1.8.2006, 20:27
Polako bre. Prvo odaberi programski jezik koji ćeš da koristiš. Nije C++ jedino što postoji na ovom svetu. Može lepo da se radi i u Visual Basic-u i u Delphiju, koji bi možda bili i lakši za jednog početnika. Uporedi prednosti i mane i jednog i drugog i trećeg, pa se odluči za jedan na koji ćeš da se baciš. Zatim napravi "Hello Word" program, pa onda kreni dalje. Od literature preporučujem help fajl programskog jezika, kao i razne tutorijale koji se vrlo lako mogu naći uz pomoć googla za bilo koji programski jezik. Na programiranje igara zaboravi, barem za sada.

holodoc
1.8.2006, 23:06
Nije C++ jedino što postoji na ovom svetu.

Naravno da nije ali uzevši u obzir da je predlog programskog jezika u ovom slučaju usko povezan sa temom (razvoj igara) mislim da je C++ bilo sasvim normalno pomenuti ;) Da je u pitanju bila preporuka za neki programski jezik za razvoj poslovnih aplikacija za Windows ili nešto slično možda bih i pomenuo Visual Basic ili Delphi. Možda grešim dušu ako kažem ovo ali koliko je meni poznato ne postoji nijedan pravi pravcati engine urađen u Visual Basic-u ili Delphi-ju. Dobro, što se tiče Delphi-ja znam da postoji par igara koje poseduju nešto što može da se nazove engine ali su ti delovi uglavnom inkorporirani čvrsto kao sastavni deo glavne aplikacije i uglavnom ih nije baš toliko lako koristiti samostalno, što je potpuno drugačiji slučaj sa enginima rađenim u C++-u. Bolji poznavaoci Delphi-ja neka me isprave na ovom mestu ako grešim jer sam poslednji kontakt sa njim imao pre poodosta vremena kada sam pominjao bližu rodbinu njegovom tvorcu ali i profesoru koji nas je terao da ga „deljemo“.

Da se ne lažemo na ovom mestu, C++ je užasno težak jezik za učenje (ovi što ga poznaju neka sad slobodno prestanu da se podsmehuju u poslednjim klupama jer i oni znaju da su za njegovo učenje „utrošili“ sigurno par godina) i zato me nervira ponekad kada ljudi kažu da je C++ čista nadogradnja C-a i da je onima koji poznaju C veoma lako preći na novu platformu. TO NIJE TAČNO!!! Pri prelasku sa C-a na C++ programer potpuno menja pristup programiranju a ne samo sintaksu tako da je ponekad poznavanje C-a čak i otežavajuća okolnost. Naravno da postoje jezici koji su jednostavniji za učenje i u nekim sferama rada upotrebljiviji ali kao i kod svih ostalih stvari, jednostavnost ponekad ume veoma brzo da veže ruke programeru i da mu postavi pitanje zašto je kog đavola uložio toliko vremena na učenju onoga što će ga veoma brzo ograničiti u njegovoj kreativnosti. Sa druge strane treba biti pametan pa ponekad preseći izbor odmah na početku jer istini za volju nije moguće od svakog čoveka napraviti dobrog programera kao što nije moguće ni od svakog čoveka napraviti dobrog zidara. To treba da znači da je ponekad pametno dobro razlisliti zašta želiš da koristiš alat koji koristiš i da ne treba precenjivati sopstvene sposobnosti ukoliko ih nema.

holodoc
1.8.2006, 23:07
Prilikom izbora jezika treba voditi računa o još jednoj bitnoj stvari, investiciji u budućnost. Pošto se ovde govori o razvoju igara ograničiću se samo na njih. Naime, svi smo svedoci da polako ali sigurno PC propada kao mašina koja se koristi za igranje. Namerno nisam iskoristio reč „igračka“ jer bi bilo malo neukusno reći za parče hardvera koje može da stane u prosečan „gepek“ da je „igračka“ i da pri tome košta kao prosečan „jugić“. U prevodu, bez obzira što smo realno zaostali za ostatkom sveta u pogledu IT-a , po tom pitanju ni „truli Zapad“ više nije toliko „truo“ pa ume da napravi razliku između nečega što košta par stotina evra (čitaj: konzola) i stvari koja radi apsolutno istu stvar samo najverovatnije ima još jednu dodatu nulu u ceni (čitaj: prosečan PC). Problem nastaje u onom trenutku kada game developer shvati da se SVE aplikacije koje se koriste na konzolama razvijaju u C++-u i to bez obzira da li se konkretna aplikacija radi u Windows-u, Linux-u, UNIX-u (malo verovatno) što je takođe još jedan od bitnih faktora. Da ne ispadne da neko sada poželi da me linčuje zbog nepreciznosti pa ću reći da se takođe i svi popularniji i nečemu vredni game engini na PC-ju (još uvek) razvijaju isključivo u C++-u! U takvoj situaciji poznavanje programskog jezika koji je moguće koristiti na gotovo svim operativnim sistemima koji postoje može da bude samo plus. A imali smo skoro jednu raspravu o tome u kom pravcu kreće Linux za koji lično mislim (iako je svaka budućnost potpuno nepredvidiva a kamoli ona vezana za IT) da tek treba da se dokaže kao odlična podloga za razvoj sotvera jer je svaka alternativa monopolu dobrodošla (treba li da pominjem „Telekom“, „EPS“ itd. kao domaće primere?). No da ne bude da se bacam sada na gatanje, sačekaćemo pa ćemo da vidimo kako će stvari da se odvijaju.

Da rezimiram ovu prvu tačku! Ukoliko je nečije opredeljenje takvo da stvarno želi jednog dana da se bavi razvojem moćnih aplikacija (možda čak i razvojem igara) treba se već sada (na vreme) opredeliti za C++ jer je potrebno da prođe mnogo, mnogo godina da bi se steklo iskustvo neophodno za iole ozbiljniji rad. Na tom putu treba biti spreman na gomilu problema i gomilu „odustajanja“ ali kao što sam rekao, caka je u tome biti uporan i ne odustati na svaki bezvezan problem. Naravno, moguće je na početku probati svaki programski jezik i okušati svoje sposobnosti i volju na njemu ali može da se ispostavi da je na kraju izgubljeno dosta nepotrebnog vremena na „vezivanje ruku“ ;)

holodoc
1.8.2006, 23:08
Od literature preporučujem help fajl programskog jezika, kao i razne tutorijale koji se vrlo lako mogu naći uz pomoć googla za bilo koji programski jezik.

Po meni potpuno pogrešan pristup nevezano za to da li neko tek počinje da uči jezik ili ne! Ovo bi otprilike bilo kao kada bi neko poslao „guštera“ iz odreda za demontiranje bombi da demontira bombu sa nakačenih 500 kila „ce četvorke“ i za to mu dao samo knjigu „Osnovi demontiranja eksplozivnih uređaja“ ;) Help ima upravo onu funkciju koju treba da ima a to je da pomogne samo u trenucima kada je zaboravljena sintaksa neke naredbe ili se pojavio neki manji problem. Pa čak i ako se uzme kao činjenica da je uz pomoć Help-a moguće rešiti te manje probleme on nije svemoćan i ne može da ukaže na greške koje se najčešće dešavaju programerima a kamoli početnicima. Znači, knjige ne bi postojale da nečemu stvarno ne služe a jedino našta treba obratiti pažnju je njihov pravilan izbor jer, kao što sam već rekao, pored kvalitetnih izdanja ima strašno mnogo đubreta. Što se tiče tutorijala, slažem se da ih je net pun za svakakve programske jezike ali je problem i kod njih taj što svako za sebe može da kaže da je ekspert za neki jezik i da ponudi svoje rešenje a onda će početnik koji ga skine i „propusti“ kroz kompajler da se pita tri sata zbog čega kog đavola program ne radi kako treba kada je sve lepo „copy-paste-ovao“ kao što piše na internetu. E vidiš, da „početnik“ ima nekog osnovnog znanja koje je stekao lepo učenjem od početka time šta su promenjljive, funkcije i kakvo je pravilno sintaksičko obeležavanje u tom jeziku najverovatnije bi provalio da mu tamo na nekoj liniji fali „tačka-zarez“ koju je jadnik koji je prekucavao (ili nedaj bože copy-paste-ovao) zaboravio. Neko će sada da kaže da ovakvu anomaliju kompajleri mogu da pronađu. E pa uglavnom nije tako jer će kompajler uglavnom prijaviti neku grešku koja se javlja posle tog nedostajućeg „tačka-zareza“ a svakako da su poruke „Error XXXXXXX“ veoma dobrodošle početniku ;)

Znači, i po ovom pitanju treba prvo naučiti sam programski jezik (iz neke stvarno početničke knjige) pa tek se onda baciti na neke naprednije stvari tipa tutorijala jer je valjda važnije naučiti programski jezik nego „majstorski“ se „krpiti“ tutorijalima :) Isto tako prilikom izbora treba voditi računa da se tutorijali skidaju isključivo sa proverenih sajtova koji uglavnom imaju kompetentne ljude koji vode računa o sadržaju.

holodoc
1.8.2006, 23:08
Na programiranje igara zaboravi, barem za sada.

Ljudi, postoje i drugi tipovi aplikacija koje mogu da se razvijaju a ne samo igre. Ako ste početnik zaboravite na sintagmu „game engine“ jer prvih par godina nemate šta da tražite u njenom društvu. Ako se čak nekada budete i bacili na ovaj tip aplikacija do tada imate da naučite skoro sve ostale stvari koje imaju da se nauče iz dotičnog programskog jezika (a ponajviše kako uklopiti u celu priču ceo pokretač sistema: matematiku) pa tek onda game dev. Razvijajte za početak baze podataka, neke sitne (ali korisne aplikacije) i manite se ovog sanjarenja.

Put do snova zahteva određenu dozu realizma!;)

Eni
1.8.2006, 23:28
što je potpuno drugačiji slučaj sa enginima rađenim u C++-u. Bolji poznavaoci Delphi-ja neka me isprave na ovom mestu


Ima nekoliko komercijalnih 650+ MB naslova razvijenih potpuno u delphi okruženju (delphi nije jezik, pascal je jezik, kad smo kod toga) uključujući Age of Wonders i AOW II... tražio si ;)

Što se tiče direktnog pitanja u temi - o ovome je toliko pričano da me mrzi da se ponavljam, makar obrisali poruku zbog offtopica...

Samo ću reći da to nije ni jedini ni najbolji engine pisan u c++ koji se može naći na netu free... ali očigledno je da ni jedan nije za guštere i gotovo... ja bih preformulisao holodoc-o komentar d aniko ne šalje guštera da demontira bombu u - Gušteru, spusti ruku dole, prvo nauči da hodaš i trčiš! :boodala:

holodoc
1.8.2006, 23:49
delphi nije jezik, pascal je jezik, kad smo kod toga

Ma dobro, stvar formulacije jer ni Visual Basic više niko ne zove Basic iako se na njemu "zasniva". Ista stvar i sa Delphi-jem koji je u stvari isto kao i Visual Basic samo okruženje. Nemojmo u tehnikalije;)

A što se tiče komercijalnih engine-a koja beše to igrica Age of Empires:kreza: Nemam pojma jer sve te igrice tipa Civilization (tehnički a ne žanrovski gledano) mešam. Pretpostavljam da je engine koji tera te igrice zadužen za izometrijsko 3D rendanje gde je većina terena u stvari "prerenderovana" a jedino što se stvarno renda jesu likovi sa njihovim nogicama i rukicama:) . A i da se ne lažemo mislim da ne vredi upoređivati jednu generalno poprilično statičnu igru i neki punokrvi 3D engine.

Usput koji su to naslovi rađeni u Delphi-ju a da imaju neki "engine". Znam za jedan naslov koji mi je skoro dopao šaka (nešto Galaxies ili u tom fazonu) koji je radio neki naš autor a posle kako sam mogao da provalim po forumima engine nije njegovo autorsko delo već je "pozajmljen":)

Eni
2.8.2006, 0:47
To što ti mešaš je druga stvar, i što misliš da je samo 3D engine pravi engine. Ja sam radio sa open source 3D enginima u delphiju, i priznajem da nisu bili razvijeni dovoljno, ali znam da ih ima. A veruj ima i komercijalnih, ako te baš zanima, pogledaj na netu, potraži malo... Inače i ja mešam sve te wolf3D/Doom klonove, koji kao jedinu osobinu igre imaju 3d izgled... :kreza:

PS
sam si rekao da ne znaš ima li igara u delphiju, i da te neko dopuni u izjavi. Ja sam se setio jedne (i nastavka) i dopunio sam. To je sve :a_whistli

holodoc
2.8.2006, 1:14
Ha, jesam li "čačnuo" nekog WOW-ovca ili Age Of Empire-ovca tamo gde ne treba:)

Ma nemam ja ništa lično protiv tih "maleckih" engine-a samo hoću da ukažem na to da su ipak FPS engini najzahtevniji po pitanju tehnologije razvoja. Nemoj odma da se ljutiš ako nikada nisam čuo za engine urađene u Delphi-ju;)

Zato i pitam:kreza:

Marko_L
2.8.2006, 23:42
Možda grešim dušu ako kažem ovo ali koliko je meni poznato ne postoji nijedan pravi pravcati engine urađen u Visual Basic-u ili Delphi-ju.
Pa, recimo DXGame je sjajan 2D game engine kompletno pisan u VB6. Da li postoji neki 3D nisam upoznat, ali zašto bi morao da postoji i zašto bi uopšte pisao engine od nule kada postoji toliko dobrih engine-a koji imaju podršku za VB, recimo Truevision, Genesis, 3DState... mnogi od njih su besplati za nekomercijalnu upotrebu. Samostalno pisanje 3D engine-a u današnje vreme predstavlja ludost, pogotovo ako si početnik.
Naravno da postoje jezici koji su jednostavniji za učenje i u nekim sferama rada upotrebljiviji ali kao i kod svih ostalih stvari, jednostavnost ponekad ume veoma brzo da veže ruke programeru i da mu postavi pitanje zašto je kog đavola uložio toliko vremena na učenju onoga što će ga veoma brzo ograničiti u njegovoj kreativnosti.
Svaki programski jezik je na svoj način ograničen, a od programera najviše zavisi kako će zaobići tu ograničenost. Nevezano za programski jezik koji se koristi, najvažnije je shvatiti logiku programiranja, tj. kako uopšte funkcionišu instrukcije, funkcije, promenljive, petlje i ostale džiža bidže, a poznavanje drugih potrebnih stvari kao što su matematika, fizika, priroda i društvo i sl. :), pada na treće mesto.
Da rezimiram ovu prvu tačku! Ukoliko je nečije opredeljenje takvo da stvarno želi jednog dana da se bavi razvojem moćnih aplikacija (možda čak i razvojem igara) treba se već sada (na vreme) opredeliti za C++ jer je potrebno da prođe mnogo, mnogo godina da bi se steklo iskustvo neophodno za iole ozbiljniji rad.
Treba pre svega biti praktičan. Ne treba zanemariti budućnost, ali ipak treba živeti u sadašnjosti i gledati šta je u ovom trenutku najpovoljnije. Svakako ne verujem da bilo ko može da uđe u svet programiranja praveći igre (za takve postoje razni game makeri pa nek se zezaju), već treba početi od "Hello Word" programa kao i svi normalni ljudi, pa tek onda nastaviti dalje. Treba upoređivati i vagati. Zašto bih se ja orijentisao isključivo na C++, ako recimo mogu u VB-u koji ima prilično lakšu sintaksu da napišem program koji će da koristi biblioteke pisane u C++ (zbog brzine). Treba gledati na to i da treba nešto jesti dok ne postaneš 3D programer koga će da juri nekakav UbiSoft ili šta ti ja znam. 3D programiranje (i game dev uopšte) još dugo neće "donositi leba" u Srbiji.

Marko_L
2.8.2006, 23:57
Po meni potpuno pogrešan pristup nevezano za to da li neko tek počinje da uči jezik ili ne! Ovo bi otprilike bilo kao kada bi neko poslao „guštera“ iz odreda za demontiranje bombi da demontira bombu sa nakačenih 500 kila „ce četvorke“ i za to mu dao samo knjigu „Osnovi demontiranja eksplozivnih uređaja“
Nije ni blizu. Lepo sam rekao Help i tutorijali. Help zato što pomaže da se brzo vidi gde si pogrešio kada pogrešiš i da možeš odmah da vidiš da li si napravio sintaksnu, logičku ili neku drugu grešku, a tutorijali zato što zaista ima dobrih početničkih tutorijala (naravno da nisam mislio da se počne od tutorijala koji se bavi naprednim korišćenjem DirectX-a recimo) počevši od objašnjenja šta su promenljive, tipovi podataka itd., preko "Hello World-a" i Kalkulatora, i sličnih stvari, pa sve do mnogo drugih naprednijih oblasti.
Znači, knjige ne bi postojale da nečemu stvarno ne služe a jedino našta treba obratiti pažnju je njihov pravilan izbor jer, kao što sam već rekao, pored kvalitetnih izdanja ima strašno mnogo đubreta.
Upravo tako, a kad uzmemo da knjige koje se bave programiranjem nisu baš jeftine, kako će jedan početnik da zna koju da odabere, osim da potroši nekoliko hiljada za tako nešto, i da na kraju možda nađe jednu knjigu koja valja.
Što se tiče tutorijala, slažem se da ih je net pun za svakakve programske jezike ali je problem i kod njih taj što svako za sebe može da kaže da je ekspert za neki jezik i da ponudi svoje rešenje a onda će početnik koji ga skine i „propusti“ kroz kompajler da se pita tri sata zbog čega kog đavola program ne radi kako treba kada je sve lepo „copy-paste-ovao“ kao što piše na internetu.
Pa i knjigu može da napiše ko hoće. To što je neko napisao knjigu, ne daju mu kredibilitet, niti dokazuje da je on Bog zna kakav ekspert, a opet, i da jeste to ne znači da ume lepo da objasni materiju. Tutorijali su bar skoncentrisani na jednu oblast i može da se ido fino korak po korak (a obično su i besplatni). Naravno da treba početi od tutorijala koji se bave teorijom programiranja, i koji objašnjavaju šta su promenljive, šta konstante, šta funkcije, šta pointeri... pa tek onda preći na "praktični deo nastave". A to što će neko da uradi copy-paste i da lupa glavu što mu nešto ne radi je odličan način da se uvežba pronalaženje grešaka. A ako neko odustane zbog toga, onda i treba da odustane i radi nešto drugo jer taj za programiranje nije.

M.Silenus
3.8.2006, 8:39
Lakše malo , ljudi , odustaće čovek načisto...
A sada , moj doprinos...
Ja sam student PMF-a ( sad upisujem treću ), na smeru računarstvo i informatika i sve što mogu da kažem je : POLUDEH OD MATEMATIKE :dzavo:
Nema u matematici ničeg lošeg , čak štaviše ima tu i dosta korisnog ( mislim, ponekad i sami profesori matematičkih predmeta pomenu primene u računarstvu ), samo je malčice zamorna. Hi,hi,hi bolje bi mu bilo da sada krene ono pravo ( što je vrlo verovatno ).

Trenutna situacija na PMF-u je mnogo bolja nego u vreme kada sam ja upisivao.
Naime sada imaš 2 informatička smera , i to :
1.računarstvo i informatika , gde si u prvom redu diplomirani matematičar
2.informatika, izbacili svu matematiku osim one neophodne ( a toga stvarno nema mnogo )
Za više informacija pogledaj MATF (www.matf.bg.ac.yu), mada im sajt nije baš najažurniji, ali po pitanju smerova to je to. Možda se sada neki predmeti zovu drugačije ( od ove godine su jednosemestralni ), ali je u pitanju isti skup znanja.

Dalje, verujem da će ti biti zanimljiv sledeći sajt How to think like computer scientist (http://ibiblio.org/obp/thinkCS/cpp.php), na njemu imaš besplatne i veoma dobre knjige za početnike u programiranju. Dakle izaberi jezik ( najbolje C++ , za početak, Javu posle toga ), skini neko razvojno okruženje sa kompajlerom ( imaš besplatna rešenja, poput DevC++ (http://www.bloodshed.net/devcpp.html)) i radi.

Ah, da , C je proceduralni orijentisani programski jezik, dok je C++ zapravo C sa dodatim klasama ( tj. on je objektno orijentisan, ali ako baš hoćeš možeš da ga koristiš i ako proceduralni jezik ).
O razlici između proceduralnog i objektno-orijentisanog (oo) , neki drugi put. Samo da napomenem da se danas najviše koristi oo-pristup jer umnogome olakšava stvari.

PS: Nemoj da se kojim slučajem zaletiš pa da upišeš MATF ( više puta pominjani PMF ) , pre nego što proveriš i ostale fakultete na kojima se delje informatika ( u prvom redu ovo pominjem zbog ETF-a ). Dakle , istražuj malo, vidi šta se gde nudi, odluči šta konkretno hoćeš ( ovo je važno - nikako, ali nikako nemoj da pođeš od "želim da znam sve o kompjuterima", veruj mi to te neće nigde odvesti ), i pucaj.

Ajde, dosta. ( što bi rekao prof. K.G. )
EndOfLine

Stevvan
3.8.2006, 10:29
( najbolje C++ , za početak, Javu posle toga )
Ne bih se bas slozio da je C++ za pocetak. Za javu ne mogu nista reci posto je nikako nisam koristio. Inace moja preporuka ti je Python jer ima veoma jednostavnu sintaxu a ima i dosta dodataka pa ces za mesec-dva moci da pravis jednostavne igrice. Nemogu reci da ce ti pocetak biti lak ali ima veliki broj tutoriala(cak znam jedan i na srpskom) i kniga vezanih za python koje mogu pomoci. Ako si zainteresovan pitaj nesto mene ili pogledaj na ova 2 sajta:
www.python.org
www.pygame.org

Andross
3.8.2006, 14:37
Ali ipak moj savet je C++.Relativno lako sam naucio rad u konzoli i posle je prilagodjivanje ostalim programskim jezicima maciji kasalj.BTW Python je uradjen preko C++-a tako da koristi njegovu snagu.Znaci definitivno C++.

Andross
3.8.2006, 14:44
E da link ka IDE-u sa kompajlerom mingw32(besplatno): www.bloodshed.net
C++ igre sa sve kodom: www.cppgames.com
Tutorial za GUI: www.winprog.org
Bazicni tutorial(vise je orijentisan ka C-u al' moze da posluzi;) ): http://einstein.drexel.edu/courses/Comp_Phys/General/C_basics/c_tutorial.html
Mislim da je ovo dovoljno za sada.Pozz.

holodoc
4.8.2006, 0:30
Pa, recimo DXGame je sjajan 2D game engine kompletno pisan u VB6.

:) Nadam se da si hteo da se našališ ovom rečenicom. U dobu kada se već uveliko priča o holografiji (holodoc :D) pominjati 2D u game dev-u je potpuno neprimereno. Daleko od toga da želim da kažem da DXGame ne bi mogao da nađe svoju primenu recimo negde u nekoj poslovnoj aplikaciji ali u dobu kada se čak i klasični space-shooter-i kompletno rade u 3D engine-ima malo je besmisleno pominjati „2D“ i „engine“ u istoj rečenici.

zašto bi uopšte pisao engine od nule kada postoji toliko dobrih engine-a koji imaju podršku za VB, recimo Truevision, Genesis, 3DState...

Po meni, sasvim je OK koristiti postojeći komercijalni engine ako to odgovara zahtevima projekta. To podrazumeva da engine mora da ispuni sve tehničke karakteristike potrebne za realizaciju projekta (što će usrećiti programera) ali i da ispuni finansijske preduslove (što će u većini slučajeva naterati suze na oči ljudima koji su zaduženi za finansiranje). Naravno nijedan komercijalni engine ne košta džabe toliko koliko košta jer se njegovim licenciranjem dobija gomila softvera uz pomoć kojeg se programiranje pretvara u dizajniranje i uklapanje. Kada se sve ovo lepo stavi na vagu vidiš da li ti se isplati da licenciraš neki komercijalni engine (kamo sreće) ili da odvojiš malo vremena i baciš se na razvoj nekog sopstvenog koji će možda i po ceni manje spektakularnosti zadovoljiti osnovne potrebe programa (igre) u kome se koristi. Treba shvatiti da razvoj parčeta softvera kao što je engine jeste težak ali kao i kod svih ostalih stvari težina njegovog razvoja je proporcionalna stvarima „koje može da uradi“. Potpuno funkcionalan 3D engine, rađen pravom 4x4 trigonometrijskom matricom i jednostavnom trigonometrijskom podrškom za osvetljenje uz nepostojanje ograničenja broja poligona može da se smesti u 200 linija programskog koda u C-u ili C++-u!!! Najkompleksniji deo prilikom implementacije jeste naravno dodavanje super „nabudženih“ efekata tipa anti-aliasing, bump-maping, „mekih“ senki i sl. (koje naravno ne ulaze u ovih pomenutih 200 linija koda) koje za potrebe nekih početnih projekata možda nisu čak ni potrebne. Naravno, opcija samostalnog razvoja podrazumeva solidno vladanje programskim jezikikom u kome će se razvoj vršiti i ne dolazi kao opcija za one koji su potpuni početnici. Ali da čovek ne bi bio početnik od nečega mora da počne, zar ne ;)

holodoc
4.8.2006, 0:31
Što se tiče podrške navedenih engine-a za VB to jednostavno govori o činjenici da su se ljudi lepo setili da povećaju broj kompanija koje će potencijalno koristiti njihov engine a koje razvoj sopstvenih aplikacija zasnivaju na nekoj drugoj platformi (VisualBasic, Delphi itd.) Normalna stvar. Bilo bi malo suludo da recimo u Srbiji otvorim kompaniju koja se bavi prodajom elektronike proizvedene na severno-američkom kontinentu a da se ne pobrinem da uz date uređaje isporučujem adapter-konvertor za struju putem kojeg je moguće koristiti pomenute uređaje u Evropi :) Znači, „podrška“ ne podrazumeva i kvalitet originala ;) A da,... Inače su svi ovi engini koji imaju podršku za VB originalno razvijeni u „C“ jezicima :)

mnogi od njih su besplati za nekomercijalnu upotrebu

Lepo je ponekad imati ovako nešto u kolekciji ali kao što sam kažeš od toga nema leba :)

Svaki programski jezik je na svoj način ograničen, a od programera najviše zavisi kako će zaobići tu ograničenost.

Da ali neka ograničenja ipak nije moguće zaobići ili se „zaobilaženje“ na kraju ispostavi kao poprilično jadna alternativa izboru prikladnjijeg programskog jezika od samog početka ;)

Nevezano za programski jezik koji se koristi, najvažnije je shvatiti logiku programiranja, tj. kako uopšte funkcionišu instrukcije, funkcije, promenljive, petlje i ostale džiža bidže, a poznavanje drugih potrebnih stvari kao što su matematika, fizika, priroda i društvo i sl., pada na treće mesto.

Da nisi u pravu govori sledeći primer na kojem ću valjda uspeti konačno da ti dočaram zašto je „Prirodu i društvo“ ponekad dobro poznavati u svetu 3D grafike i programiranja! Poznato je recimo da je IrrLicht, sa kojim je inače i započeta rasprava u ovoj temi, jedan od najpopularnijih free engine-a koji postoji. Takođe nije loše pomenuti na ovom mestu da nije jedini nedovršeni engine, odnosno da ima stvari koje još nisu implementirane u njemu, što je delimično i odluka samih developera jer nameravaju da naprave 3D a ne game engine. Osnovni problem sa IrrLicht-om je taj što i pored toga što ima poprilično „sređen“ prikaz nema ni gramke fizičkog modela u sebi. Znači, u originalnoj verziji treba zaboraviti na stvari koje bi poprilično bile normalne u bilo kakvoj igri odnosno simulaciji. Recimo „kosi hitac“ i uticaj trenja okoline na projektile u FPS-ovima, uticaj inercije na objekte u pokretu (zamislite recimo Freelancer ili čak legendarni Frontier bez postojanja inercije), centrifugalne i centripetalne sile kod kružnih kretanja itd. Naravno nijedna od pomenutih zakonitosti ne bi mogla da se izvede bez dodavanja osnovnih fizičkih veličina svakom objektu kao što su masa, vreme (kao četvrti faktor već pomenute matrice) itd.

holodoc
4.8.2006, 0:32
Za implementaciju svake od navedenih osobina u source-u engina je potrebno ništa više do stotinak dodatnih linija koje treba dodati glavnoj klasi objekta. Zahvaljujući nečemu što je osnova C++-a a o čemu VisualBasic može samo da sanja, „inheritence“ osobini klasa, svaka dodata osobina glavne klase prenosi se na objekte koji od nje zavise odnosno nastaju i na taj način nasleđuju njene osobine! U konkretnom slučaju bi to bili svi objekti u sceni ili simulaciji. E zamisli sada situaciju da se recimo za neku godinu neka od zakonitosti potpuno promeni, recimo promeni se definicija nekog od Njutnovih zakona :D. Dok bi za prepravku celog koda u VB-u bilo potrebno poprilično vremena u C++-u bi bilo dovoljno promeniti osobinu glavne klase koja je do tada definisala konkretan zakon. Prednost poznavanja C++-a i „Prirode i društva“ je ovde očigleda a nikakvo poznavanje logike programiranja , kontrole toka i sl. ne može da ti pomogne ukoliko zbog nepoznavanja osnovnih zakona fizike budeš morao da potražiš neki drugi engine, samo zato što ovaj nije imao podršku za „kosi hitac“ ;) Treba li da pomenem i činjenicu da „fizički deo“ engine-a često utiče na „vizuelni“. Primera radi, refleksija odnosno refrakcija svetlosti je zadužena za kontrolu „rendanja“ izgleda nekog objekta u tečnosti ili što je postalo aktuelno u poslednje vreme izgleda „rendanje“ prelamanja svetlosti koja dolazi iz vodenih površina na zidove prostorija.

Treba pre svega biti praktičan. Ne treba zanemariti budućnost, ali ipak treba živeti u sadašnjosti i gledati šta je u ovom trenutku najpovoljnije.

Da treba biti praktičan to je tačno ali u ovom slučaju treba uzeti u obzir i autora ove teme. Da podsetim još jednom jer je njegova budućnost u pitanju. Dečko završava srednju školu i namerava da se upiše na fakultet, po mogućnosti neki na kome će nešto naučiti iz programiranja. U suštini šanse da se nešto na faksu nauči bez sopstvene inicijative su skoro pa ravne nuli. Određeni predmeti mogu da orijentaciono pojasne neke stvari ali ne toliko koliko bi u suštini bilo poželjno. Znači, dečku pretpostavljam da je jasno da neće moći odmah da počne sa razvojem jačih aplikacija već da će morati da uloži mnogo vremena i truda „usput“ dok bude grejao studentske klupe da bi do tog stadijuma došao! Kod ljudi koji su u ovom trenutku spremni da razvijaju softver za ‘leb takve dileme nema i naravno da moraju biti praktični jer nemaju vremena „za gubljenje“, koje bi recimo „trošili“ na faksu.

holodoc
4.8.2006, 0:34
Sa druge strane ono što je opšta odlika ljudi kod nas je ona naša domaća što da uradim nešto bolje i što će trajati ako mogu da „nabudžim“ nešto što će da „drži vodu dok majstori ne odu“? Niko više ne želi da se „umara“ tako što će da žrtvuje malo više svog vremena i truda i da zauzvrat dobije nešto kvalitetnije i vredno pomena. Druga stvar je već pomenuta multiplatformnost. Neka mi neko navede još neku platformu na kojoj je moguće koristiti VisualBasic osim Windows-a. Krilatice tipa „pa svi koriste Windows“ ovde definitivno nije na mestu jer već svi znaju da odavno postoji alternativa Windows-u (pričam o profesionalnoj upotrebi). I da se desi da recimo u toku sledeće decenije Microsoft „pukne“ iz nekog razloga (nikad se nezna :D) jedina platforma na kojoj sam naučio da radim otišla je u nepovrat. Statistike radi C++ je oficijelno izdat 1985. godine dok je VisualBasic svetlost dana video tek 1990. godine. Za sve to vreme C++ je u svojoj osnovi ostao apsolutno isti dok je VisualBasic prolazio kroz nekoliko faza od kojih je najaktuelnija .NET faza. Isto tako, C++ je postao standard za razvoj aplikacija ne samo na Windows-u već i na svim većim operativnim sistemima koji postoje. Da stvar bude ozbiljnija, C++ je svojom sintaksom i načinom funkcionisanja uticao na razvoj gomile jezika koji su se pojavili posle njega. Treba li pored svega da pominjem i činjenicu da Visual Studio košta i da će uvek koštati a da je za C i C++ uvek moguće naći besplatnu alternativu i način za razvoj. A neka mi se bar neko na ovom forumu pohvali da ima legalizovan Microsoft-ov Visual Studio!

ako recimo mogu u VB-u koji ima prilično lakšu sintaksu da napišem program koji će da koristi biblioteke pisane u C++ (zbog brzine)

Jel to beše ista ona situacija kao kada je Borland C++ koristio biblioteke pisane u Pascal-u (navodno brzine radi) pa je ovakva odluka naišla na linč profesionalaca u svetu. Bilo kakva „genetika“ sa C ili C++ bibliotekama je skoro neupotrebljiva kada ispod svega toga „radi“ traljavi MS linker. Čak i da je u pitanju klasično „pozivanje“ ultra-mega-giga brze C++ funkcije iz VisualBasica linker je taj koji upropasti celu stvar tako da realnog ubrzanja ni nema. U ovakvoj situaciji važi ono pravilo „ko ne plati na kompajleru plati na linkeru“ ;)

holodoc
4.8.2006, 0:35
Nije ni blizu. Lepo sam rekao Help i tutorijali. Help zato što pomaže da se brzo vidi gde si pogrešio kada pogrešiš i da možeš odmah da vidiš da li si napravio sintaksnu, logičku ili neku drugu grešku, a tutorijali zato što zaista ima dobrih početničkih tutorijala (naravno da nisam mislio da se počne od tutorijala koji se bavi naprednim korišćenjem DirectX-a recimo) počevši od objašnjenja šta su promenljive, tipovi podataka itd., preko "Hello World-a" i Kalkulatora, i sličnih stvari, pa sve do mnogo drugih naprednijih oblasti.

Već sam za ovo rekao da se ne slažem jer kvalitet ovakvog učenja uglavnom zavisi od kvaliteta samog helpa, u ovom slučaju MSDN biblioteke za koju će se većina ljudi složiti da nije baš od prevelike koristi osim ako nisu u pitanju sintakse naredbi! A i pored svega toga postoji još jedno mnogo konkretnije pitanje a to je čime nastaviti učenje posle „Hello world“ programa. Što se tiče tutorijala početnički tutorijali su čak mnogo problematičniji od naprednih jer zahtevaju poznavanje dobrog pristupa prenošenja znanja sa eksperta na nekoga ko nikada u životu nije čuo za reč sintaksa. Svako ko je nekada pokušao nekom srednjoškolcu da objasni šta su recimo integrali ili funkcije zna o čemu pričam!

Kalkulatora

Klasičan tutorijal iz VisualBasic-a :)

Upravo tako, a kad uzmemo da knjige koje se bave programiranjem nisu baš jeftine, kako će jedan početnik da zna koju da odabere, osim da potroši nekoliko hiljada za tako nešto, i da na kraju možda nađe jednu knjigu koja valja.
Srećom postoji nešto što se zove P2P mreže preko kojih je moguće bez problema „svući“ brdo kvalitetnih knjiga. Sad će neko ovde sigurno reći da je čitanje preko ekrana problem jer zamara oči. A besomučno igranje igrica po deset sati na dan minimum ne zamara? Štaviše, knjige koje je moguće skinuti P2P programima su višestruko kvalitetnije od domaćeg prevedenog krša jer su neprevedene, što je bitan faktor po pitanju kvaliteta jer će tamo „class“ uvek biti „class“ a ne „rod“, i „pointer“ biti „pointer“ a ne „ukazivač“ ili nedaj bože „ustremljivač“ kao u nekim domaćim prevodima. Doduše originali donekle otežavaju posao onima koji ne poznaju pre svega engleski ili nemački.

Što se tiče toga koju knjigu odabrati, pa valjda je moguće na nekom forumu naleteti na ljude koji su već prošli sve to pa da mogu da preporuče neku literaturu poznajući većinu probleme na koje je moguće naleteti. Kao što sam već rekao, od literature uvek preporučujem izdavače kao što je „SAMS“ ili „O’Reilly-jeve“ .chm prepravke. Normalno da o originalima koje potpisuju imena kao što su Stroustrup, Kernighan, Ritchie ne treba ni raspravljati. Naravno samo ako su u pitanju neprevedene originalne verzije!

holodoc
4.8.2006, 0:37
A trošenje para na „Biblije“ koje se kod nas najčešće i nalaze je čisto gubljenje vremena. Ne nalaze se one kod nas najviše zato što su „Sveto pismo“ za neku oblast nego zato što imaju najveći broj stranica pa ih je lako prodati po ceni od par hiljada dinara ;) A usput uopšte nisu preporučljive za učenje jer pored nekog upotrebljivog materijala ima i gomila „smalltalk-a“, teksta koji ne služi apsolutno ničemu osim povećanju broja stranica.

Pa i knjigu može da napiše ko hoće. To što je neko napisao knjigu, ne daju mu kredibilitet, niti dokazuje da je on Bog zna kakav ekspert, a opet, i da jeste to ne znači da ume lepo da objasni materiju. Tutorijali su bar skoncentrisani na jednu oblast i može da se ido fino korak po korak (a obično su i besplatni). Naravno da treba početi od tutorijala koji se bave teorijom programiranja, i koji objašnjavaju šta su promenljive, šta konstante, šta funkcije, šta pointeri... pa tek onda preći na "praktični deo nastave". A to što će neko da uradi copy-paste i da lupa glavu što mu nešto ne radi je odličan način da se uvežba pronalaženje grešaka. A ako neko odustane zbog toga, onda i treba da odustane i radi nešto drugo jer taj za programiranje nije.

Problem koji imaju svi tutorijali je nekonzistentnost materije koji se izlaže. U prevodu to znači da će početnik veoma lako početi da „koristi“ neki tutorijal na netu ali kada dođe do dela koji njega interesuje ispostaviće se da baš konkretno toga u dotičnom tutorijalu nema. Onda će morati da pređe na neki drugi tutorijal u kome se odjedanput pojavljuju stvari koje bi navodno trebao da zna ali od kojih u onom prethodnom tutorijalu nema ni traga ni glasa. Neke stvari neće uopšte imati isti naziv kao u tutorijalima koje je već prešao a onda će morati da pređe na jednu stvar koja se zove „pretpostavka“. Znači, najgora stvar koja može da se desi nekom početniku je učenje na osnovu pretpostavki a kao što je poznato pretpostavka je majka svih za*eba ;) A umesto „copy-paste“ tehnike uz pomoć je navodno moguće naći lakše greške (pitam se pitam kako ako nemam blage predstave šta da tražim) na početku svake dobre knjige postoji sekcija sa sintaksičkim pravilima koja ukazuje na najčešće greške koje se javljaju kod početnika.


Da rezimiram ponovo ovu ionako već preterano dugačku priču! Odabir programskog jezika u ovakvoj situaciji je apsolutno važna stavka jer nikada, i pored trenutne situacije sa nedostatkom kvalitetne radne snage u sferi programiranje, ne treba potcenjivati pojedinca pa makar se sada tek nalazio na početku svoje karijere. Nikada se nezna da li će neko, ko je ovde postavio pitanje o tome kako početi, možda za par godina neće postati vrhunski programer koji će zarađivati DEBELE pare.

holodoc
4.8.2006, 0:38
Moj apel u konkretnom slučaju bi bio da izbor na početku padne na C++ ili makar C sa čime bi se ostvarila realna šansa da sve te godine investicije ne budu uzaludne. Naravno da na ovom mestu ne želim da smanjujem vrednost drugim jezicima, posebno VisualBasic-u ali treba shvatiti da je VisualBasic namenjen isključivo razvoju poslovnih aplikacija u Windows-u i nizašta drugo. Da je tema u ovom slučaju bila razvoj aplikacija pod Windows-om za apsolutne početnike onda bih najverovatnije preporučio VisualBasic ali ovako on nema šta da realno traži u game developement-u.

I na kraju malo dodatnih informacija. Linux,UNIX i još gomila njih su operativni sistemi koji su kompletno pisani u C-u i C++-u a većina novonastalih jezika svoju sintaksu zasniva na C-u odnosno C++-u: Java Script, PHP, Java, Perl itd. Osim toga, kao što sam već rekao, svi veći komercijalni engine-i, pa i ostale aplikacije, se razvijaju u C++-u a ako meni niko ne veruje ovde valjda treba verovati ljudima koji od toga zarađuju više para od Holivuda ;)

Pa neka početnik proceni šta bolje zvuči ;)

Marko_L
4.8.2006, 23:23
Nadam se da si hteo da se našališ ovom rečenicom. U dobu kada se već uveliko priča o holografiji (holodoc ) pominjati 2D u game dev-u je potpuno neprimereno.
E vidiš, tu grešiš i to debelo. Pogledaj malo vesti iz game dev industrije i videćeš da popularnost 2D casual igara koje se mogu skinuti i kupiti preko neta raste, dok prodaja novih AAA naslova opada. Tako da 2D još nije odradio svoje, naprotiv, možda uskoro ponovo bude na tronu. Doduše, to se ne može lako videti u Srbiji gde se najnoviji AAA naslovi i casual igre u istom cenovnom rangu (zna se zbog čega). Primera radi, Popcap igre su zaradile više para nego Doom 3, a nisam video da Zuma ili Bejeveld vrcaju od 3D grafike :)
Daleko od toga da želim da kažem da DXGame ne bi mogao da nađe svoju primenu recimo negde u nekoj poslovnoj aplikaciji ali u dobu kada se čak i klasični space-shooter-i kompletno rade u 3D engine-ima malo je besmisleno pominjati „2D“ i „engine“ u istoj rečenici.
A kakve pobogu veze imaju jedan game engine i poslovna aplikacija ? :)
A game engine je game engine bez obzira da li je 2D ili 3D.
Po meni, sasvim je OK koristiti postojeći komercijalni engine ako to odgovara zahtevima projekta. To podrazumeva da engine mora da ispuni sve tehničke karakteristike potrebne za realizaciju projekta (što će usrećiti programera) ali i da ispuni finansijske preduslove (što će u većini slučajeva naterati suze na oči ljudima koji su zaduženi za finansiranje).
O čemu ti pričaš ? Mnogo bre letiš na sve strane, čas pričaš o početniku koji hoće da pravi igru, a čas o nekome ko ima finansijera (mada je finansijer izrade video igre u Srbiji još uvek SF). Kao što rekoh, većina tih enginea je besplatna za nekomercijalnu upotrebu, što je sasvim dobar način za nekoga da uđe u game dev svet. Ili si i ti jedan od onih koji misle da možeš prvom igrom da zaradiš milione ?

Marko_L
4.8.2006, 23:42
A da,... Inače su svi ovi engini koji imaju podršku za VB originalno razvijeni u „C“ jezicima
I šta nam to govori ? Da je C konj koji vuče, a VB gospodin koji ga vozi :)
Lepo je ponekad imati ovako nešto u kolekciji ali kao što sam kažeš od toga nema leba
Kao što rekoh, izrada besplatne igre je odličan način da se uđe u game dev svet i vidi za šta si sposoban. Ako ćeš da praviš pare, onda možeš i da platiš engine, šta je tu sporno ?
Da ali neka ograničenja ipak nije moguće zaobići ili se „zaobilaženje“ na kraju ispostavi kao poprilično jadna alternativa izboru prikladnjijeg programskog jezika od samog početka
Pa šta se mi onda ovde objašnjavamo koj moj... odabereš lepo low level assambler i ćao... nema ograničenja. Heh, svašta.
Da nisi u pravu govori sledeći primer na kojem ću valjda uspeti konačno da ti dočaram zašto je „Prirodu i društvo“ ponekad dobro poznavati u svetu 3D grafike i programiranja!
Poznavati da, ali ne trošiti previše vremena na to ušturb logike programiranja. Ako ja poznajem logiku programiranja, lako ću da nađem nekog fizičara (ili nekoga ko dobro poznaje fiziku) koji će na brzaka da mi napravi nacrte i pseudo funkcije, a ja ću to da pretočim u program. Naravno, lepo je kada jedan čovek poznaje i programiranje i matematiku i fiziku, ali što više oblasti neko poznaje, to se znanje više rasipa i taj čovek je sve manje ekspert za bilo šta, i od svega zna pomalo.
Dok bi za prepravku celog koda u VB-u bilo potrebno poprilično vremena u C++-u bi bilo dovoljno promeniti osobinu glavne klase koja je do tada definisala konkretan zakon.
A zašto bi prepravljao ceo VB kod ? Jesi li ti programirao nekad nešto u VB-u ?
Treba li da pomenem i činjenicu da „fizički deo“ engine-a često utiče na „vizuelni“. Primera radi, refleksija odnosno refrakcija svetlosti je zadužena za kontrolu „rendanja“ izgleda nekog objekta u tečnosti ili što je postalo aktuelno u poslednje vreme izgleda „rendanje“ prelamanja svetlosti koja dolazi iz vodenih površina na zidove prostorija.
Znači, ja ako pravim simulaciju vožnje, treba pored programiranja da se iškolujem za automehaničara, vulkanizera, autolimara i građevinskog tehničara, pa tek onda da sednem i pravim igru ? Kao što rekoh, igre u kojima se ide do takvih detalja, rade se u velikim firmama sa velikim timovima koji uključuju i ljude koji se bave tim oblastima. Ako hoćeš realnu simulaciju vožnje, naći ćeš konsultanta koji se u to razume. Isto je i za prelamanje svetslosti kroz vodu i refleksiju na sisama posrnule madone :) U prevodu fizički model radi jedna osoba (bila ona programer ili ne) a isti taj fizički model se može implementirati uz pomoć bilo kog programskog jezika.

Marko_L
4.8.2006, 23:53
Da treba biti praktičan to je tačno ali u ovom slučaju treba uzeti u obzir i autora ove teme. Da podsetim još jednom jer je njegova budućnost u pitanju. Dečko završava srednju školu i namerava da se upiše na fakultet, po mogućnosti neki na kome će nešto naučiti iz programiranja.
A kakve to veze ima sa bilo čim ? Kada kažem treba biti praktičan, to znači da treba ići ka onome što donosi korist u kraćem roku. Dakle, treba se prvo osposobiti za razvoj poslovnih aplikacija koje uvek mogu da donesu neke pare, nasuprot igrama koju treba žestoko da u5ere da bi nešto zaradile, a složili smo se da je VB za to praktičniji. E kad se tome doda da se i u VB-u mogu sasvim lepo praviti igre, onda dolazimo do toga da i VB može biti dobar izbor za jednog početnika. Ništa više, ništa manje od toga.
Treba li pored svega da pominjem i činjenicu da Visual Studio košta i da će uvek koštati a da je za C i C++ uvek moguće naći besplatnu alternativu i način za razvoj. A neka mi se bar neko na ovom forumu pohvali da ima legalizovan Microsoft-ov Visual Studio!
Predpostavljam da nisi čuo da je Visual Basic 2005 Express besplatan ? I još ima tehničku podršku i sve ostalo što ide uz to.
Bilo kakva „genetika“ sa C ili C++ bibliotekama je skoro neupotrebljiva kada ispod svega toga „radi“ traljavi MS linker. Čak i da je u pitanju klasično „pozivanje“ ultra-mega-giga brze C++ funkcije iz VisualBasica linker je taj koji upropasti celu stvar tako da realnog ubrzanja ni nema. U ovakvoj situaciji važi ono pravilo „ko ne plati na kompajleru plati na linkeru“
Jel ovo iz iskustva ili samo nabadaš nešto što si pročitao iz knjiga ? Pitam zato što moje iskustvo govori drugačije.
A i pored svega toga postoji još jedno mnogo konkretnije pitanje a to je čime nastaviti učenje posle „Hello world“ programa.
Kalkulatorom :)
Što se tiče tutorijala početnički tutorijali su čak mnogo problematičniji od naprednih jer zahtevaju poznavanje dobrog pristupa prenošenja znanja sa eksperta na nekoga ko nikada u životu nije čuo za reč sintaksa. Svako ko je nekada pokušao nekom srednjoškolcu da objasni šta su recimo integrali ili funkcije zna o čemu pričam!
Sve ovo može da važi i za bilo koju knjigu i eto, opet smo na početku.

Marko_L
5.8.2006, 0:02
Klasičan tutorijal iz VisualBasic-a
Naravno. Onaj ko ne može da isprogramira običan kalkulator nema šta da traži u svetu programiranja.
Srećom postoji nešto što se zove P2P mreže preko kojih je moguće bez problema „svući“ brdo kvalitetnih knjiga. Sad će neko ovde sigurno reći da je čitanje preko ekrana problem jer zamara oči.
A koliko tih knjiga je besplatno ?
Što se tiče toga koju knjigu odabrati, pa valjda je moguće na nekom forumu naleteti na ljude koji su već prošli sve to pa da mogu da preporuče neku literaturu poznajući većinu probleme na koje je moguće naleteti.
Upravo tako. Eto, ja sam prošao sve to i ne preporučujem knjige uopšte. Šta sad ?
A umesto „copy-paste“ tehnike uz pomoć je navodno moguće naći lakše greške (pitam se pitam kako ako nemam blage predstave šta da tražim) na početku svake dobre knjige postoji sekcija sa sintaksičkim pravilima koja ukazuje na najčešće greške koje se javljaju kod početnika.
E pa tu na scenu stupa Help fajl koji sam pomenuo. Mnogo se bre vrtiš u krug. I pre nego što ponovo kažeš da taj help ne može da te nauči programiranju, ja kažem tu su tutorijali i primeri koji se mogu isprobati. A ti me sad pitaš, a šta ako naiđu na grešku, ja ti lepo kažem, e pa tu je Help fajl, a ti onda pitaš e a kako... oćemo još ? :)
Osim toga, kao što sam već rekao, svi veći komercijalni engine-i, pa i ostale aplikacije, se razvijaju u C++-u a ako meni niko ne veruje ovde valjda treba verovati ljudima koji od toga zarađuju više para od Holivuda
Da, da... sve sami početnici :)

Rax13
5.8.2006, 3:04
Upravo sam skinuo DxGame... Treba mi pomoc :)
Kako da ga uopshte ucitam u VB, shta mi josh treba da bi to funkcionisalo kako treba, itd...

EclipsE
5.8.2006, 3:18
Treba ti DirectX 8
Lepo ti pishe u kodu, za tutorijale

'DXSHELL - modified May 2006 to use DXG225 or Later.
' -----------------------------------------------------------
' This module initializes the DXGame Engine and the interface. After the
' interface is setup, program control will be passed to you via the
' "GameInit" routine inside mygame.bas
'
' Make sure under "Project-References" you have the following selected:
' OLE Automation
' DXGame 2D Engine (dxg.dll)
' DirectX 8 For Visual Basic Type Library
' -----------------------------------------------------------
Ides na Project, pa References
I gornja 3 treba da ti budu obelezena. Ako nisu, pronadji u listi. Ja sam imao problema sa DXGame 2D Engine, nije bio u listi, pa onda idesh na browse i pronadjes gde si ga stavio ili prekopirash ga u system32 folder, u Windows/Total commanderu u liniji za kucanje komandi ukucash regsvr32 dxg.dll
Mada ni taj nacin meni nije lepo hteo...

M.Silenus
5.8.2006, 11:00
A koliko tih knjiga je besplatno ?

Erm, dadoh link ka sajtu na kome se mogu naći besplatne , zapravo , slobodne knjige ( pod GPL licencom su ). I sasvim su OK , za početnike.

holodoc
5.8.2006, 21:19
E vidiš, tu grešiš i to debelo. Pogledaj malo vesti iz game dev industrije i videćeš da popularnost 2D casual igara koje se mogu skinuti i kupiti preko neta raste, dok prodaja novih AAA naslova opada. Tako da 2D još nije odradio svoje, naprotiv, možda uskoro ponovo bude na tronu. ... Primera radi, Popcap igre su zaradile više para nego Doom 3, a nisam video da Zuma ili Bejeveld vrcaju od 3D grafike
Nemaš pojma koliko mi je drago što si na ovom mestu pomenuo famozni „PopCap games“ jer konačno dobijam šansu da ga u kontekstu nečega što neće da ispadne „offtopic“ propisno ispljujem :) Naime, zaboravio si da pomeneš jednu veoma važnu činjenicu u vezi tzv. „casual“ igrica (ponekad se stvarno pitam u kom pravcu kreće srpski jezik) a to je da se ta popularnost „2D“ (a zašto ovo ide pod navodnike objasniću kasnije) igara zasniva na PopCap-ovim igricama i par hiljada kopija (čitaj: klonova) istih pa je veoma teško da ovde neko može da priča o „iznenadnoj ekspanziji 2D naslova“. Treba li da počnem sa nabrajanjem klonova Zume kao što su „Tumblebugs“, „Luxor“ i ostalih blago rečeno gluposti koje ne služe ničemu drugom do razvoju industrije miševa za računare? Znači, na jednoj strani imaš PopCap a na drugoj još par hiljada klo(v)nova koji pokušavaju da ugrabe parče kolača. Flash zezalice koje su preplavile net se ne računaju. Ne bih rekao da je neka revolucija u toku.

I zaboravio si da napomeneš još jednu stvar koja nije samo odlika domaćeg „tržišta“ a koja je baš usko povezana sa PopCap-ovim igricama. Njihove igrice su ubedljivo najčešće piratizovani komadi zabavnog softvera („ono, ključ sa neta“), čak i na Zapadu i ostatku sveta, što u neku ruku PopCap-u pored normalnih gubitaka donosi besplatnu reklamu pa im valjda nije ni preterano krivo! Čisto sumnjam da bih čisto zarad popularnosti nečega što razvijem i u šta sam uložio dosta vremena i truda trpeo celogodišnji post. Nisam baš toliki vernik ;)

Sve u svemu kada se sve sabere voleo bih da mi neko navede neku igricu koja je razvijena u čistom 2D-u (vodite dobro računa o ovoj stavci pre nego što vam nešto padne napamet :)) a da nije već razvijeno u PopCap-u odnosno da nije jedan od zilion njegovih klonova. Ja trenutno mogu da se setim jedino fenomenalnog a i bogami vremešnog Swen-a Bömwollen-a i fenomenalnih „Morhuhna”. Sve ostalo su ili igrice koje su hibridi (sadrže 2D i 3D komponente) ili su jednostavno kompletno 3D.

Sada dolazi onaj deo o „vrcanju 3D“ grafike. I u Zumi i u svim ostalim klonovima PopCap-ovih igrica ima poprilično 3D grafike samo je potrebno imati „oko“ za nju ;) Primera radi, pogledaj malo bolje kuglice u Zumi i ako hoćeš „Tumblebugs-ima“ ili bilo kojoj „Zuma-like“ tvorevini. Sve kuglice, koje u suštini u toku igrice zauzimaju i do 70-80% ekrana, (pa slobodno možeš da kažeš da tu nešto „vrca“) rađene su malim i veoma ubedljivim 3D engine-om u koji je, verovao ili ne, ugrađena podrška za osnovni fizički model.

holodoc
5.8.2006, 21:20
Ono što sam pričao o „Prirodi i društvu“ gde su objektima pridodate masa, inercija itd. ;) Zašto je to tako rađeno?. Pa zato što je PopCap računao na skalabilnost svojih igrica odnosno želeo je da mogu da se igraju na računarima u dijapazonu od Pentium-a III pa sve do „najnabudženijih“ računara. Da je ovaj deo igrice rađen čistom 2D poligonalnom tehnikom to bi zahtevalo da ciljne konfiguracije imaju katastrofalno visoke performanse, ponajviše vezane za brzinu RAM-a, što bi slažeš se bilo malo bezveze?

I još jedna stvar. Jesi li se ikada zapitao zbog čega sve ove „2D“ igrice prilikom pokretanja na mašinama koje nemaju 3D akceleraciju prijavljuju da 3D akceleracija ne postoji i da će to uticati na performanse prilikom igranja? Odgovor je zbog toga što u tom slučaju „mukici“ od računara ne preostaje ništa drugo nego da čistom snagom softverske emulacije, odnosno „grcanjem“, izađe na kraj sa parčetom đubreta od softvera i njegovim „vrcanjem“ ;)

Treba li da pominjem kako se rade čestični sistemi (eksplozije itd.)?

A game engine je game engine bez obzira da li je 2D ili 3D.

Čekaj, stani malo. Ispravi me ako grešim ali ja ni na jednom mestu, a posebno ne u citiranom tekstu, nisam spomenuo reči „game engine“ jednu pored druge osim na jednom mestu gde je to trebao da bude slučaj. Kompletan tekst koji sam izneo jeste namenjen „3D engine-ima“ kao aplikacijama koje će moći da se koriste kasnije za razvoj „game engine-a“. Svako ko je stigao do kraja sa čitanjem mog poslednjeg posta valjda je pročitao da sam napomenuo da je 3D engine moguće koristiti za toliku drugih (korisnijih) stvari osim za igrice. A pitanje je koliko ljudi je stiglo do kraja.

Znači, „game engine“ je samo podvarijanta engine-a, bio on 2D ili 3D ;)

Činjenica da li je engine 2D ili 3D tipa najverovatnije bi došao do izražaja u trenutku kada bi naišao na klijenta koji iz nekog razloga traži 3D aplikaciju (ne zalazim u dubinu zbog čega) a ti pokušaš da mu obajsniš da će to “mnooogo da ga boli” i da postoji alternativa tome a to je da koristi recimo DXGame za nešto što definitivno ne može da se “nabudži” u 2D varijanti.

holodoc
5.8.2006, 21:21
A kakve pobogu veze imaju jedan game engine i poslovna aplikacija ?

Pod pretpostavkom da si pročitao ovaj pasus gore odgovaram na ovo tvoje pitanje. Da ovo nije samo još jedan plod naučne fantastike objasniću na sledećem primeru. Složićeš se sa činjenicom da je potpuno moguća situacija da naletiš na klijenta koji želi da mu napraviš program uz pomoć kojeg će putem GPS-a ili nekog sličnog sistema moći da prati recimo svoja dostavna vozila ali uz uslov da takav program bude modularan u smislu da bude lako prilagodljiv za različita geografska područja (čitaj: ima mogućnost “ubacivanja” različitih “karti”). Naravno da će ti na pamet pasti da kompletnu stvar oko predstavljanja mape ili područja koje se prati “odradiš” u obliku “2D” engine-a pa da kasnije jednostavnim dodavanjem geografskih modula iskorišćavaš postojeći engine da se uklopi sa “kartom”. To je valjda jedna poprilično “ne-SF” primena jer ako smo valjda ograničeni sa strane, nismo odozgo :). A pogledaj recimo sajt DXGame-a koji si pomenuo i vidi zašta ga oni primenjuju u čistim poslovnim aplikacijama. “Ono, regulacija odbrane od poplave itd.”

Da bih ostao dosledan preciznosti sledi još jedan primer gde se “game-engine-i” koriste u poslovnim aplikacijama. Složićeš se da 3Dmax može na neki način da se smatra poslovnom aplikacijom u domenu recimo dizajna. 3Dmax u sebi od verzije (izvinte malo upućeniji ako grešim mada mislim da ovde to nije slučaj) 6 ima podršku za Havok engine. O tome šta je i čemu služi već i vrapci pevaju odavno epske pesme. Svi programi za dizajniranje enterijera i eksterijera kuće (primera radi Sierrin-a serija Home Architect-a) koristi neki vid (naravno starijeg) game engine-a. Najčešće korišćeni engine za vizuelizaciju u ovakvim aplikacijama doduše ostao je Quake 3 što je delimično za pohvalu uzevši u obzir koliko je mator.

Ovde stajem.

O čemu ti pričaš ? Mnogo bre letiš na sve strane, čas pričaš o početniku koji hoće da pravi igru, a čas o nekome ko ima finansijera (mada je finansijer izrade video igre u Srbiji još uvek SF). Kao što rekoh, većina tih enginea je besplatna za nekomercijalnu upotrebu, što je sasvim dobar način za nekoga da uđe u game dev svet. Ili si i ti jedan od onih koji misle da možeš prvom igrom da zaradiš milione ?

Da preskočimo blok sa onim pritužbama tipa “...ti ne čitaš moje postove...”, “...a ti ne kapiraš šta sam hteo da kažem...”, “...zašto nikada nećeš da mi se javiš...” itd. evo par tvojih citata na osnovu kojih sam i ja krenuo malo offtopic i dohvatio se teme „komercijalno“-„nekomercijalno“ ;)
zašto bi uopšte pisao engine od nule kada postoji toliko dobrih engine-a koji imaju podršku za VB, recimo Truevision, Genesis, 3DState...
mnogi od njih su besplati za nekomercijalnu upotrebu

holodoc
5.8.2006, 21:23
Ili si i ti jedan od onih koji misle da možeš prvom igrom da zaradiš milione ?
Pa da ti kažem nešto! Naravno da nisam od onih koji misle da je moguće zaraditi milione od prve igre jer je milion poprilično mnogo para (ako ih ne izražavaš valutom koja se odaziva na ime „dinar“, naravno). Ali isto tako dobro znam da je moguće nekim, možda malo ekscentričnim projektom, koji je započet čistim entuzijazmom i investicijom vremena i strpljenja, zagarantovati sebi mesečnu platu sa kojom je ovde kod nas moguće kupiti bar dvadesetak solidnih „jugića“. Primera radi, tip koji je inače jedan moj dobar drugar i čiji gost imam sreću da budem za par dana, počeo je bezveze, onako entuzijazma radi, da radi na projektu koji se bavi alternativnim načinima kontrole u engine-ima. Pre par godina, posle predstavljanja svog projekta firmi u kojoj radi, na nekom konkursu, za manje od dva sata je dobio posao u toj poooovelikoj evropskoj ostrvskoj kompaniji koja se bavi razvojem igara. Naziv firme bi ovde bilo možda reklamiranje ali u suštini nije ni važan već činjenica da je dosta ljudi među vama već igralo njihove igre :D Naravno da sada pored „patosirajuće“ plate taj tip ima i jedno parče laminiranog kartona na svojoj košulji sa logotipom kompanije i slikom na kojoj piše „Engine Developement and Modification“. Znam da je plata bitniji faktor ali se meni bogami mnogo sviđa ono kartonče ;) A verovao ili ne nijednom ga nisam čuo da je spomenuo VisualBasic iako na svojim mašinama imaju instaliran MS Studio. Iz pojma neznam kog razloga odlučili su se za C++ :) Ako neko još uvek nije pogodio koja je zemlja u pitanju citiraću malopre pomenutog tipa (doduše u malo blažoj varijanti) da se radi o zemlji sa ubedljivo „najmanje lepim“ delom ženske populacije na planeti Zemlji ;)

I šta nam to govori ? Da je C konj koji vuče, a VB gospodin koji ga vozi

To nam govori da će onog dana kada konj odbije poslušnost ovaj gospodin koji se „časti karucama“ morati da „okalja“ noge u blatu uz rizik da nikada više ne stigne tamo gde se uputio;)

Kao što rekoh, izrada besplatne igre je odličan način da se uđe u game dev svet i vidi za šta si sposoban. Ako ćeš da praviš pare, onda možeš i da platiš engine, šta je tu sporno ?
Sporna je stavka da li je uvek potrebno kupiti engine ukoliko je moguće uz malo dodatno uloženog truda napraviti svoj sopstveni! Očigledno to je onaj problem tipa „lečka više truda“ koji stalno pominjem na ovom forumu. Ako razvijaš igricu tipa klasičnog „Hi-Tech“ 3D space-shooter-a možda ti je lakše da posle toliko free varijanti igrica koje si razvio u svoje prvo komercijalno čudo ugradiš i neku ideju koju si „pokupio“ u free varijantama. Osim toga, konkretno rešenje i implementaciju engine-a može svako da proglasi svojom intelektualnom svojinom ali par matematičkih formula NE!

holodoc
5.8.2006, 21:24
Znači, samo par linija programskog koda vas deli od nečega što sa punim zakonskim pravom možete zvati sopstvenom intelektulanom svojinom i zbog čega kasnije nekoga možete (sa zadovoljstvom :D) hvatati za gušu. A svako bi trebao ovo da proba čisto da se uveri koliko je moćan osećaj poznavati tačno šta koji deo koda radi a ne da se pita zašto je Microsoft-ova varijanta „HelloWorld“ programa skoro 15 puta!!! veća u odnosu na verziju dobijenu nekim free kompajlerom (primera radi DevC++).
Informacije radi, u najvećem broju slučajeva „Hi-Tech“ space-shooter-a koji se izrađuju za komercijalu, engine se samostalno razvija od nule ;) jer je mnogo isplativije napraviti nešto jednostavnije i usput besplatno što će biti eksploatisano 100% nego platiti nešto papreno što će biti iskorišćeno u vrh glave 20-30%. Space-shooter-e sam izabrao iz jednostavnog razloga zato što mislim da predstavljaju odličan napredniji projekat za početnike u svetu razvoja igara..
Pa šta se mi onda ovde objašnjavamo koj moj... odabereš lepo low level assambler i ćao... nema ograničenja. Heh, svašta.

Hvata malo nostalgija za vremenima kada su scenom vladali Edgar M. Vigdal & co. :)? Inače, sećaš li se za koje igrice je ovaj dugogodišnji „assembleraš“ odgovoran? Ali onako bez google-anja ;)
Pošto assembler ošigledno više “ne paše” u moderna shvatanja programskog jezika, zadovoljiću se onime što je “second-best” rešenje za posao koji radim, C i C++ ;) Nekome on može da se učini kao „least best“ ili nešto slično ali to je njegovo mišljenje i naravno na njega ima pravo kao i ja na moje ;)

Poznavati da, ali ne trošiti previše vremena na to uštrb logike programiranja. Ako ja poznajem logiku programiranja, lako ću da nađem nekog fizičara (ili nekoga ko dobro poznaje fiziku) koji će na brzaka da mi napravi nacrte i pseudo funkcije, a ja ću to da pretočim u program. Naravno, lepo je kada jedan čovek poznaje i programiranje i matematiku i fiziku, ali što više oblasti neko poznaje, to se znanje više rasipa i taj čovek je sve manje ekspert za bilo šta, i od svega zna pomalo.
Da ne kažem potpuna reći ću delimična besmislica prevashodno ako ovde mislimo na samostalnu izradu (početak). Pa čak i za malo veći tim ovo takođe ponekad može da bude prava besmislica. Bar u pogledu onog dela u kome pričaš o poznavanju dodatnog materijala kao što je fizika ili matematika. Ja ti uporno sve vreme govorim da u ovoj temi zaboraviš na sve ostale vrste aplikacija osim engine-a. Bilo bi strašno arogantno od tebe da izjaviš da bilo koji dobar programer treba da bude ovoliko isključiv po pitanju proširivanja svog znanja. Da te pitam samo šta ćeš da radiš kad naučiš kompletnu logiku programiranja koju ovde potenciraš. Sačekaćeš da “izađe” nova a u međuvremenu ćeš da “žvaćeš” staru?

holodoc
5.8.2006, 21:26
Valjda je sasvim normalna stvar da, ako će mi upoznavanje sa nekom materijom pomoći u poslu, odvojim malo vremena pa se upoznam sa njom. Po toj tvojoj logici ovi tipovi na informatičkom smeru PMF-a su “polovični” ljudi jer su se, jelte, sve vreme obrazovali i po pitanju matematike i po pitanju informatike. Pošto znam da se traže kao oaza u Sahari ne bih rekao ;)
Za bilo kakvo “šminkanje” sopstvenog engine-a ti ne treba stručnjak već neko ko je završio prvu godinu bilo kog jačeg fakulteta (PMF na prvom mestu, pa zatim ETF itd.) što je automatski slučaj ako si neki od datih fakulteta završio ili završavaš. Ni u jednom jedinom engine-u nema ništa kompleksnije od onoga što ćeš naći u apsolutnoj bibliji fizike čiji su autori Vučić i Ivanović. To će svako da ti potvrdi ko je kroz pomenuti “drill” prošao. Znači, lepo uzmeš prvi tom bilo kog izdanja ovih autora i u njemu ćeč naći i više nego što ti je realno potrebno za „friziranje” tvog engine-a. Pa ako ti je teško da ukapiraš šta znači “masa puta ubrzanje” vrati se nazad na razvoj kalkulatora ;) Eto još jednog razloga zašto uporno potenciram visokoškolsko obrazovanje za game developement ili uopšte bilo koju zahtevniju programersku sferu. Znači, od svega pomalo dobro dođe jer ćeš recimo tamo kada ti zatreba znati gde treba naći sve što ti je potrebno u konkretnom slučaju. Da ne poveruješ ako si istinski sve to naučio kada si trebao bićeš u stanju da se lako podsetiš gde šta ide u toj “odvratnoj” fizici.
Naravno, ako je projekat duboko “ugazio” u neke konkretne vode tipa rada na nekoj poprilično komplikovanoj simulaciji i sl. angažovaćeš stručnjake koje si pomenuo. Fora je samo proceniti da li ti je u konkretnom slučaju potreban stručnjak i da pokušaš sopstvenim dodatnim obrazovanjem da smanjiš tu razliku između sopstvenog neznanja i margine znanja na kojoj okrećeš broj telefona tog stručnjaka. Naravno da ne kažem da ovu marginu treba da pređeš :)
A jedan problem na koji veoma često nalećem kod ljudi koji su apsolutni stručnjaci u svojoj profesiji jeste taj da ponekad umeju da budu poprilično beznadežni po pitanju komunikacije. Mislim konkretno na problem tipa ja njemu “e na jot pi” a on meni sve vreme viče “de omega po de te” ;)
A zašto bi prepravljao ceo VB kod ? Jesi li ti programirao nekad nešto u VB-u ?
Dovoljno dugo (nažalost) da bih bez ikakvih problema smeo ovako nešto da izjavim ;)
Znači, ja ako pravim simulaciju vožnje, treba pored programiranja da se iškolujem za automehaničara, vulkanizera, autolimara i građevinskog tehničara, pa tek onda da sednem i pravim igru ?
Ideš nepotrebno iz krajnosti u krajnost :) Od svih ovih stvari za jednu početničku simulaciju vožnje bi ti možda jedino trebala “edukacija” kod autolimara ;) I naravno “Vučić- Ivanović”;)

holodoc
5.8.2006, 21:27
A što se tiče ozbiljnijih simulacija o tome ne treba raspravljati jer se radi o ogromnim projektima koje normalno razvija tim ljudi pa je i potpuno normalno da imaš stručnjaka za svaku oblast i o tome ne treba raspravljati.
Isto je i za prelamanje svetslosti kroz vodu i refleksiju na sisama posrnule madone U prevodu fizički model radi jedna osoba (bila ona programer ili ne) a isti taj fizički model se može implementirati uz pomoć bilo kog programskog jezika.
Skini negde knjigu pod rednim brojem 8 sa adrese koju ću postaviti malo kasnije u ovoj temi (recimo e-Mule-om) i dobićeš sve od konsultanata što ti je potrebno za refleksije i refrakcije i na Rene-ovim sikama ako je potrebno ;)
A kakve to veze ima sa bilo čim ? Kada kažem treba biti praktičan, to znači da treba ići ka onome što donosi korist u kraćem roku. Dakle, treba se prvo osposobiti za razvoj poslovnih aplikacija koje uvek mogu da donesu neke pare, nasuprot igrama koju treba žestoko da u5ere da bi nešto zaradile, a složili smo se da je VB za to praktičniji. E kad se tome doda da se i u VB-u mogu sasvim lepo praviti igre, onda dolazimo do toga da i VB može biti dobar izbor za jednog početnika. Ništa više, ništa manje od toga.

Predpostavljam da nisi čuo da je Visual Basic 2005 Express besplatan ? I još ima tehničku podršku i sve ostalo što ide uz to.
Ako budem napisao ono što sam prvobitno hteo da napišem na ovom mestu najverovatnije bi se par nekih sličnih tema preslikalo u ovu. Reći ću samo par stvari. VisualBasic nema FREE alternativu! Možeš ti bez problema da skineš Visual Basic 2005 Express (ne sekiraj se skinio sam ga na faksu odmah istog dana kada je bio dostupan za download ;)) i da u njemu kuckaš i čukaš i radiš šta god ti padne napamet. Problem će da nastane onog trenutka kada to tvoje što si naučio hoćeš da prodaš a čika Bili te kljucne lepo po glavi pa kaže “Zahlen Sie Bitte!” (u slobodnom domaćem prevodu “PARE NA SUNCE!!!”). Dodaj na VisualBasic originalan Windows i već mlađani početnik može da se pokrije crnom zemljom kada vidi u šta je uložio vreme. A misliš da je VisualBasic lak za učenje jedino zbog toga što je to dobro po krajnjeg korisnika ili je slučaj sa činjenicom da je Visual Basic 2005 besplatan samo slučajnost. Pa i ja da sam na čika Bilijevom mestu prvo bih se pobrinuo da “navučem” široke narodne mase na nešto što kasnije mogu da im prodam. Šta, jadničak koji je potrošio godinu dana na deljanje Basic-a sada treba da odustane jer nije razmišljao odmah na početku šta prvo treba da plati pa da krene da “mlati”. Još smo kao zemlja “zeleni” po pitanju svesti šta sve mora da se plati jer smo navikli da sve košta “dve čvrvene” ;)

S druge strane postoji toliko kvalitetnih besplatnih ali i komercijlanih C++ kompajlera za Windows koji su višestruko jeftiniji i za koje sam siguran da neće da mi u izvršnom fajlu zapamte čak i spisak omiljenih pornografskih sajtova ;)

holodoc
5.8.2006, 21:28
Jel ovo iz iskustva ili samo nabadaš nešto što si pročitao iz knjiga ? Pitam zato što moje iskustvo govori drugačije.

A pa nemoj ovo pogrešno da shvatiš ali pretpostavljam da nisi jedini i najiskusniji programer u VisualBasicu u Srbiji ;) Treba iskustva uporediti inače su beskorisna. Ne sekiraj se da ću sada da kažem da sam ja iskusniji od tebe po pitanju VisualBasic-a, jer najverovatnije nisam, pošto sam već rekao da ima par godina kakao sam ga definitvno batalio za bilo šta ozbiljnije. To ne znači da ga kad-kad ne iskoristim za neko malo programče (naravno izuzimam novi .NET koji me jednostavno nervira svojim ponašanjem i pored definitivnog poboljšanja komfora u radu) ili da se ne družim sa ljudima koji ga stvarno koriste kao četkicu za zube. Recimo, često se sa kolegama “bejzikašima” uhvatim u raspravu plus i minus u odnosu na C i C++. Jedna od čestih tema je bila osnovna mana VB-a, brzina. Nebrojano puta se došlo čak i do priče o korišćenju ne samo C i C++ funkcija već i direktnog asemlerskog koda. Sve to zajedno je radilo uvek više nego patetično. Kao što sam rekao genetika je loša rabota u VisualBasic-u a linker je najveći „crv“ u celoj stvari ;)

A to što je nekada zbog neotesanosti ljudi običan smrtnik primoran da koristi najprostije moguće stvari to je naš problem. Evo još jednog kratkog primera a nadam se samo da ovo ne spada u domen vojne tajne jer nam do dana današnjeg niko ništa nije rekao. Vojni aerodrom u Lađevcima kod Kraljeva poseduje simulator našeg domaćeg „Galeba“ čija kabina je preko raznih kontrolnih uređaja (step motori, brdo hidraulike itd.) povezana na tri računara odnosno kućišta. Kompletan sistem je devedesetih godina radio „Mihailo Pupin“ a prilikom dizajniranja i odluke o jezičkoj platformi, odluka je pala na Visual Basic, zbog jednostavnosti i u tom trenutku očigledne nepromišljenosti. Jedna „kanta“ koja je zadužena za direktnu kontrolu mikrokontrolerskih uređaja kabine, radi na prastarom MS-DOS-u i iznad nje stoji ogromno parče papira sa natpisom „NE DIRAJ“. Stvar je u tome da ukoliko bi neko nešto, ne daj bože, „čačnuo“ po „kanti“ sve ostalo bi moglo da se baci jer nema više nikoga ko bi mogao sa celom „šklopocijom“ da se snađe. Ostala dva kućišta su računari namenjeni za simulaciju instrumenata u kokpitu i za koordinaciju simulatora sa navigacionom mapom. Problem je taj, što se raznim prepravkama došlo do situacije kada zbog potrebne brzine proračuna određenih delova simulacije dolazi do „štucanja“ sistema. Napominjem da je hardver ova dva računara „state-of-the-art“ tako da ga ne treba uzimati u obzir. Kolega sa faksa koji je inače vojno lice i radi na „reprogramiranju“ datog simulatora mi je par puta napomenuo da bi jedino logično rešenje bilo prebacivanje na neki „pogodniji“ sistem simulacije koji bi bio sposoban da „provuče“ više podataka u jedinici vremena. Čik neka neko pogodi koju platformu je preporučio ;)

holodoc
5.8.2006, 21:28
Sve ovo može da važi i za bilo koju knjigu i eto, opet smo na početku.
OK! Ti “tutorijal” ja “knjiga” ;)
A koliko tih knjiga je besplatno ?
Isto onoliko koliko ima legalnih kopija Microsoft Visual Studi-a u našoj zemlji ;)
Eto, ja sam prošao sve to i ne preporučujem knjige uopšte. Šta sad ?
Pa počni da čitaš knjige o C++-u pa možda promeniš mišljenje ;)
E pa tu na scenu stupa Help fajl koji sam pomenuo. Mnogo se bre vrtiš u krug. I pre nego što ponovo kažeš da taj help ne može da te nauči programiranju, ja kažem tu su tutorijali i primeri koji se mogu isprobati. A ti me sad pitaš, a šta ako naiđu na grešku, ja ti lepo kažem, e pa tu je Help fajl, a ti onda pitaš e a kako... oćemo još ?
OK! Ti “help” ja “knjiga” ;)
Da, da... sve sami početnici
Nisi razumeo rečenice koje si citirao iako mi se čini da je poprilično jasna. Ovo je trebalo da se odnosi na to šta je definitivno kvalitetniji izbor ako ćeš baš da razbijaš lovu ;) A čisto onako usput citiram još jednom moju rečenicu koju si očigledno propustio ;)
Ali da čovek ne bi bio početnik od nečega mora da počne, zar ne?

holodoc
5.8.2006, 21:37
Evo linka odakle možete da skinete .pdf fajl sa knjigama koje preporučujem da nabavite ukoliko hoćete stvarno da "parlate" C++ za potrebe razvoja igara.

http://www.ptt.yu/korisnici/h/o/holodoc1701/Literatura3D.pdf
(Veličina: 414KB)

Knjige se mogu jednostavno naći P2P programima (preporučujem eMule).

Ako pronalaženje ili skidanje bude problem svakoga koga ove knjige interesuju (a i možda još poneka usput) neka me zvrcne na private pa da vidimo.

Inače, ko ne zna engleski bolje neka počne da ga uči ;)

Poz
:ciao:

Marko_L
5.8.2006, 22:20
Znači, na jednoj strani imaš PopCap a na drugoj još par hiljada klo(v)nova koji pokušavaju da ugrabe parče kolača. Flash zezalice koje su preplavile net se ne računaju. Ne bih rekao da je neka revolucija u toku.
Pa nemaš ti tu šta da "rekneš", podaci koji se mogu pronaći na netu govore sami za sebe. Povećana je prodaja "shareware" naslova, a opala je prodaja AAA naslova.
I zaboravio si da napomeneš još jednu stvar koja nije samo odlika domaćeg „tržišta“ a koja je baš usko povezana sa PopCap-ovim igricama. Njihove igrice su ubedljivo najčešće piratizovani komadi zabavnog softvera („ono, ključ sa neta“), čak i na Zapadu i ostatku sveta, što u neku ruku PopCap-u pored normalnih gubitaka donosi besplatnu reklamu pa im valjda nije ni preterano krivo!
A zašto da im bude krivo kada su svoje čedo prodali u preko 150.000.000 primeraka ?
Sada dolazi onaj deo o „vrcanju 3D“ grafike. I u Zumi i u svim ostalim klonovima PopCap-ovih igrica ima poprilično 3D grafike samo je potrebno imati „oko“ za nju
Eto, a pošto ja nemam oko za to, za mene je to i dalje 2D.
I još jedna stvar. Jesi li se ikada zapitao zbog čega sve ove „2D“ igrice prilikom pokretanja na mašinama koje nemaju 3D akceleraciju prijavljuju da 3D akceleracija ne postoji i da će to uticati na performanse prilikom igranja?
Prilično nebitna stavka s obziropm da danas sve karte imaju 3D akceleraciju.

Marko_L
5.8.2006, 22:32
Činjenica da li je engine 2D ili 3D tipa najverovatnije bi došao do izražaja u trenutku kada bi naišao na klijenta koji iz nekog razloga traži 3D aplikaciju (ne zalazim u dubinu zbog čega) a ti pokušaš da mu obajsniš da će to “mnooogo da ga boli” i da postoji alternativa tome a to je da koristi recimo DXGame za nešto što definitivno ne može da se “nabudži” u 2D varijanti.
Aman, DXGame engine je game engine i ne služi za pravljenje 2D poslovnih aplikacija, nego isključivo igara. Ako klijent iz nekog razloga traži 3D aplikaciju, ima da plati nabavku ili izradu dobrog 3D engine-a, pa nek se on pita posle da li mu treba aplikacija koja će da košta nekoliko hiljada evra više.
Složićeš se sa činjenicom da je potpuno moguća situacija da naletiš na klijenta koji želi da mu napraviš program uz pomoć kojeg će putem GPS-a ili nekog sličnog sistema moći da prati recimo svoja dostavna vozila ali uz uslov da takav program bude modularan u smislu da bude lako prilagodljiv za različita geografska područja (čitaj: ima mogućnost “ubacivanja” različitih “karti”). Naravno da će ti na pamet pasti da kompletnu stvar oko predstavljanja mape ili područja koje se prati “odradiš” u obliku “2D” engine-a pa da kasnije jednostavnim dodavanjem geografskih modula iskorišćavaš postojeći engine da se uklopi sa “kartom”. To je valjda jedna poprilično “ne-SF” primena jer ako smo valjda ograničeni sa strane, nismo odozgo
Ako bih koristio neki postojeći game engine u tu svrhu, to bi bilo "budženje" da nema goreg. U tom slučaju bih radije napisao engine od nule i to fino naplatio.
Da bih ostao dosledan preciznosti sledi još jedan primer gde se “game-engine-i” koriste u poslovnim aplikacijama. Složićeš se da 3Dmax može na neki način da se smatra poslovnom aplikacijom u domenu recimo dizajna.
Opet ne mogu da shvatim o čemu pričaš. Hoćeš da kažeš da jedan početnik može da nabavi bilo koji game engine i napravi 3D Max, a onda ga prodaje za 3000 evra ? :) Highly Unlikely. Ako bi bilo ko pravio novi 3D Max, trebalo bi da pravi novi engine, jer mu nijedan game engine u tome neće pomoći.

Marko_L
5.8.2006, 22:51
A verovao ili ne nijednom ga nisam čuo da je spomenuo VisualBasic iako na svojim mašinama imaju instaliran MS Studio. Iz pojma neznam kog razloga odlučili su se za C++
I moj prijatelj razvija softver u VB-u za poznatu švedsku kompaniju i ima patosirajuću platu, kartonče na košulji, i još plus službeni auto koji može da koristi za šta hoće, a zamisli nijednom mi nije pomenuo C++, i šta s tim ? Čak je ovaj i bolje prošao, ima i auto :)
To nam govori da će onog dana kada konj odbije poslušnost ovaj gospodin koji se „časti karucama“ morati da „okalja“ noge u blatu uz rizik da nikada više ne stigne tamo gde se uputio
Ako umeš s konjem, neće taj odbiti poslušnost... ima da ga vozaš dok ne crkne ;)
Sporna je stavka da li je uvek potrebno kupiti engine ukoliko je moguće uz malo dodatno uloženog truda napraviti svoj sopstveni! Očigledno to je onaj problem tipa „lečka više truda“ koji stalno pominjem na ovom forumu.
Praktičnost pre svega... ako pravim besplatnu igru za koju mi odgovara neki postojeći engine, ja ću da ga iskoristim... a ako ne postoji napisaću svoj i zdravo. Šta tu ima da se filozofira ?
Bilo bi strašno arogantno od tebe da izjaviš da bilo koji dobar programer treba da bude ovoliko isključiv po pitanju proširivanja svog znanja. Da te pitam samo šta ćeš da radiš kad naučiš kompletnu logiku programiranja koju ovde potenciraš.
Šta ću, ja sam arogantan tip. Meni je jeftinije da za sve ono što ne znam unajmim čoveka koji to zna, a vreme koje bi izgubio učeći nešto što ko zna kada će mi zatrebati iskoristim za pametnije stvari kao što su devojka, izlasci, gledanje filmova... Jednostavno, nemam potrebu da znam sve, već samo ono što mi je dovoljno za ono čime se bavim.

Marko_L
5.8.2006, 23:03
Znači, lepo uzmeš prvi tom bilo kog izdanja ovih autora i u njemu ćeč naći i više nego što ti je realno potrebno za „friziranje” tvog engine-a. Pa ako ti je teško da ukapiraš šta znači “masa puta ubrzanje” vrati se nazad na razvoj kalkulatora
Što ? Ne umeš da napraviš kalkulator u C++-u ? Pa što ne kažeš, saću ti ja zbrčkam jedan, pa ti sa C++ samo dodaj svoje ime kao ime autora. Tolko valjda možeš da uradiš :)
Naravno, ako je projekat duboko “ugazio” u neke konkretne vode tipa rada na nekoj poprilično komplikovanoj simulaciji i sl. angažovaćeš stručnjake koje si pomenuo. Fora je samo proceniti da li ti je u konkretnom slučaju potreban stručnjak i da pokušaš sopstvenim dodatnim obrazovanjem da smanjiš tu razliku između sopstvenog neznanja i margine znanja na kojoj okrećeš broj telefona tog stručnjaka. Naravno da ne kažem da ovu marginu treba da pređeš
Za većinu igara sasvim je dovoljno obrazovanje iz fizike, matematike i ostalih čudesa koje vučemo iz osnovne, pa i srednje škole... za sve ostalo postoje stručnjaci (ili ljudi koji nisu stručnjaci, ali odlično poznaju materiju), a ako već dođeš u taj stadijum da radiš to ostalo, to bi trebalo da značiš da se se probio u onom prvom i da imaš para da platiš stručnjaka.
A jedan problem na koji veoma često nalećem kod ljudi koji su apsolutni stručnjaci u svojoj profesiji jeste taj da ponekad umeju da budu poprilično beznadežni po pitanju komunikacije.
E sad si me ubedio da si apsolutni stručnjak, jerbo ja tebe ništa ne razumem... i beznadežno teško komuniciramo :)
Problem će da nastane onog trenutka kada to tvoje što si naučio hoćeš da prodaš a čika Bili te kljucne lepo po glavi pa kaže “Zahlen Sie Bitte!” (u slobodnom domaćem prevodu “PARE NA SUNCE!!!”).
VB 2005 Express je free forever. Sorry.
Dodaj na VisualBasic originalan Windows i već mlađani početnik može da se pokrije crnom zemljom kada vidi u šta je uložio vreme.
Pa normalno da ćeš da platiš Windows, osim ako ne planiraš da razvijaš softver za onoi čudo od Linuksa koje koristi 5% svetske populacije i koji su ionako navikli da ništa ne plaćaju.
S druge strane postoji toliko kvalitetnih besplatnih ali i komercijlanih C++ kompajlera za Windows koji su višestruko jeftiniji i za koje sam siguran da neće da mi u izvršnom fajlu zapamte čak i spisak omiljenih pornografskih sajtova
Samo da mi je znati kako smo od početnika prešli na vas, ljubitelje pornografije :)

Marko_L
5.8.2006, 23:08
Kolega sa faksa koji je inače vojno lice i radi na „reprogramiranju“ datog simulatora mi je par puta napomenuo da bi jedino logično rešenje bilo prebacivanje na neki „pogodniji“ sistem simulacije koji bi bio sposoban da „provuče“ više podataka u jedinici vremena. Čik neka neko pogodi koju platformu je preporučio
Game maker ?
A zašto bi mene trebalo da interesuje šta je jedan student preporučio ? To je po njemu jedino logično rešenje, a možda bi neki stručnjak ipak znao bolje, ne ?

holodoc
6.8.2006, 3:04
A zašto da im bude krivo kada su svoje čedo prodali u preko 150.000.000 primeraka ?

A jel’ ti nije malo bezveze da ako već google-aš po netu i Wikipedi-ji bar ne pročitaš lepo šta tačno piše u tome šta si „izgoogle-a“. Jesu li tvoji „oficijelni podaci“ sa ove stranice?

http://en.wikipedia.org/wiki/PopCap_Games

E pa obrati dobro pažnju na to šta piše u prvom redu. Broj downloadovanja igrica sigurno nije jednak broju prodatih ;) A i našao si koji ćeš sajt da uzmeš kao relevantan po pitanju statistike. Evo sad ću ja da prepravim sadržaj te stranice da piše 5.000.000.000 primeraka pa da “PopCapGames” bude ubedljiviji :dzavo: Jesi čuo ti za izreki “Wiki is tricky ;)”?

Pa nemaš ti tu šta da "rekneš", podaci koji se mogu pronaći na netu govore sami za sebe. Povećana je prodaja "shareware" naslova, a opala je prodaja AAA naslova.

Jel treba da pitam odakle ti ove informacije?

Eto, a pošto ja nemam oko za to, za mene je to i dalje 2D.

Pa onda je najverovatnije potrebno da nabaviš i to drugo oko pa da dobiješ i treću dimenziju jer se bojim da će uskoro i četvrta da bude relevantan faktor ;) Mislim da nije nikakav drugi komentar potreban na ovu tvoju šalu.

Prilično nebitna stavka s obziropm da danas sve karte imaju 3D akceleraciju.

Ali porpilično bitna stavka u pobijanju nečije tvrdnje da su PopCap-ove igrice čist “2D” :dedica: Čak štaviše situacija je skoro potpuno drugačija.

holodoc
6.8.2006, 3:05
U tom slučaju bih radije napisao engine od nule i to fino naplatio.

Bravo, vidiš da komunikacija počinje da funkcioniše :tapsh Normalna je valjda stvar da ako ti postojeće varijante ne odgovaraju uradiš jednu koja ti odgovara. EOL

Opet ne mogu da shvatim o čemu pričaš. Hoćeš da kažeš da jedan početnik može da nabavi bilo koji game engine i napravi 3D Max, a onda ga prodaje za 3000 evra ? Highly Unlikely. Ako bi bilo ko pravio novi 3D Max, trebalo bi da pravi novi engine, jer mu nijedan game engine u tome neće pomoći.

Pročitaj VisualBasic-a ti još jednom pasus o game engine-ima u aplikacijama i kaži mi da ti nije jasno šta tu piše. Ne može da bude toliko nejasno. Siže: tvoje pitanje je glasilo kakve veze imaju engine-i (u ovom slučaju “game engine-i”) sa poslovnim aplikacijama. Odgovor na ovo glasi da 3dsmax u sebi za potrebe dinamičke animacije ima ugrađen reactor koji koristi Havok engine. Havok engine je inače jedan od najidealnijih, trenutno postojećih, game engina po pitanju fizike. To ti je jedan primer. Drugi primer ti je upotreba “Quake 3” engine-a u mnogim programima koji se koriste za projektovanje interijera i eksterijera kuće. Aman na jednom jedinom mestu nisam pomenuo noob-a u tom delu priče! Jel tako?

Ako ni sada nije jasno, nemoj ni da mi kažeš jer odustajem od ovog dela. Shvatili su oni koji su trebali ili hteli da shvate ;)

I moj prijatelj razvija softver u VB-u za poznatu švedsku kompaniju i ima patosirajuću platu, kartonče na košulji, i još plus službeni auto koji može da koristi za šta hoće, a zamisli nijednom mi nije pomenuo C++, i šta s tim ? Čak je ovaj i bolje prošao, ima i auto

Game maker?

I šta sada to treba da nam kaže? Da u industriji igara nema ni traga ni glasa od VisualBasic-a a da prilikom razvoja poslovnih aplikacija (pretpostavljam da ti prijatelj na tome radi u Šviderlandima) nema ni traga ni glasa od C++-a? Dobro. Ajde neka za sada bude takva idelana situacija. Pa šta će onda tvoj predlog ovde?

A što se tiče auta i tako toga hoćemo da pređemo i na sitan kućni inventar? :)

Praktičnost pre svega... ako pravim besplatnu igru za koju mi odgovara neki postojeći engine, ja ću da ga iskoristim... a ako ne postoji napisaću svoj i zdravo. Šta tu ima da se filozofira ?
Ako mi ikada bude trebao diplomata ili političar veruj mi da ćeš biti prvi kome ću se obratiti. Lepo izbegavaš pitanja a još bolje odgovore koje si inicirao :dzavo No nema veze. Ja ti ovu tvoju rečenicu koju si ti ponovio sada objašnjavao u celom jednom postu od malopre da bi ti sada došao na isti zaključak. Komunikacija, nema šta. Ode ovaj srpski u 3LPM

holodoc
6.8.2006, 3:07
Šta ću, ja sam arogantan tip. Meni je jeftinije da za sve ono što ne znam unajmim čoveka koji to zna
U redu je da pozoveš majstora da ti malo “dotera” kuću ili da odeš kod mehaničara da ti “sredi” auto ali ne i da unajmljuješ specijalistu za fiziku ako iz već pomenutog „Vučića-Ivanovića“ treba da pročitaš dve glave. No i ovo je subjektivna stvar.
a vreme koje bi izgubio učeći nešto što ko zna kada će mi zatrebati iskoristim za pametnije stvari
Lepo je znati šta su pametnije stvari a inače ovo je klasičan izgovor i jedan od razloga zašto jednostavno „cvetamo“ sa opštom kulturom. Neće ti mozak istrunuti ako naučiš šta su Njutnovi zakoni! Bar do te mere da znaš kako kasnije možeš da ih primeniš. Ako nisi primetio fizika nije nauka već sve što te okružuje pa i ti sam ;)
nemam potrebu da znam sve, već samo ono što mi je dovoljno za ono čime se bavim.
Jedini problem leži u tome što se definicija „dovoljnog“ menja svakog dana pa ne možeš da kažeš da si ozbiljan u bilo čemu ako i jedan jedini trenutak zapostaviš to što radiš ;)

Što ? Ne umeš da napraviš kalkulator u C++-u ? Pa što ne kažeš, saću ti ja zbrčkam jedan, pa ti sa C++ samo dodaj svoje ime kao ime autora. Tolko valjda možeš da uradiš

Pa ja sam mislio da ćeš da predložiš nešto hrabrije od toga. Recimo da ja tebi dam da napraviš 3D engine po nekoj specifikaciji a da ja uradim taj kalkulator u C++-u pa da se posle zamenimo ;) Pa da proverimo koliko je kome prosečno vremena trebalo da odradi obe stvari ;) Naravno engine moraš da naprviš a ne da ga jednostavno „pozajmiš“ sa net-a jer bi onda i ja imao pravo da skinem gotovu verziju kalkulatora ;)
E sad si me ubedio da si apsolutni stručnjak, jerbo ja tebe ništa ne razumem... i beznadežno teško komuniciramo
Pa sad bar znaš da se to dešava zbog „dve dimenzije“ :dzavo
VB 2005 Express je free forever. Sorry.
Pazi stvarno. Ne postoji više ograničenje od godinu dana. Znači ovaj deo se promenio. Jedino što je i dalje nepromenjeno (a to ćeš naravno tek naći u FAQ-u) kada skineš komplet je šta sve pomenuti Express paket NE sadrži i šta sa njim realno možeš da uradiš. Za Visual Basic vidim da fali par dobrih komponenti i dalje ali mislim da je deo koji se ne može oprostiti vezan za izostanak MFC-a. I to da koristi početnik??? Smešno. Nije mi jasno kako samo možeš da radiš u tako obogaljenom paketu? Inače, nemoj da se sekiraš što se tiče Microsofta. U prošlom postu sam napisao šta je ovde očigledna namera a kao što kaže stara klingonska poslovica „Čuvaj se romulanaca koji nose poklone“:dzavo:

holodoc
6.8.2006, 3:08
Pa normalno da ćeš da platiš Windows, osim ako ne planiraš da razvijaš softver za onoi čudo od Linuksa koje koristi 5% svetske populacije i koji su ionako navikli da ništa ne plaćaju.
„Mali Mukica sedi na obali reke i u jednoj ruci drži papir dok drugom nešto zapisuje i ponavlja tihim glasom.

- „Da vidimo šta mi treba i kolko će da me košta da počnem da zarađujem čukajući po tastaturi.“

- „Originalni Windows – dvanaestopalačno crevo.“
- “Service Pack za originalni Windows – jetra”,
- “Microsoft Visual Studio 2005 – desna polovina mozga, ionako mi treba samo jedna”,
- “Service Pack za Micrososft Visual Studio 2005 – levi bubreg”,
- “Pentium na 3GHz-a i ostali hardver – prebijena leđa i probijeno desno plućno krilo”

;)

Samo da mi je znati kako smo od početnika prešli na vas, ljubitelje pornografije

Primera radi Marko, primera radi :) Još da MS pokupi samo ovakve podatke i ne bi bio problem.
Game maker ?
A zašto bi mene trebalo da interesuje šta je jedan student preporučio ? To je po njemu jedino logično rešenje, a možda bi neki stručnjak ipak znao bolje, ne ?
Kolega je malo stariji (jedno petnaestak godina od tebe) ;) a inače, što je najinteresantnije, zovem ga kolega samo zato što se često vrti po faksu i laboratorijama. Sada ako bih rekao još par stvari sigurno bih rekao nešto što ne treba zato bolje da ćutim. A što se tiče preporuka „studenta“ mislim da slobodno za ovoga čoveka mogu da kažem da je poprilično kompetentan i stručan ;) po pitanju programiranja jer ga poznajem i znam kakve je sve lude programerkse projekte radio. Nešto o čemu nas dvojica možemo samo da sanjamo možda. I još jedna stvar, zašto bi zanemarivao mišljenje čoveka koji radi u industriji igara a koga sam pomenuo na početku teksta (evo me stižem :D) Da stvar bude upečatljivija nije jedini.

holodoc
6.8.2006, 3:10
I da na kraju rezimiram ovu priču.

Ovde valjda ima dovoljno materijala za svakoga ko namerava da se informiše o tome šta mu treba da počne da razvija igrice a i malo više od toga. Iskreno rečeno ako još neko otvori ovakvu temu na Forumu lično ću da ga &%(/(##&/%). Na ovom Forumu nema svih ostalih tema zajedno toliko koliko ima onih na temu razvoja igrica. Zato SEARCH!

Znači, vidim da ima malo ljudi koji žele da se uključe konkretno u ovu temu pa su valjda kao „najdosadniji“ argumenti ostali ovi Markovi i moji. Znači, ja sam ostao na tome da treba početi sa C++-om. Ovo govorim iz jednostavnog razloga što sam sa ovom problematikom počeo da se bavim još iz doba Aztec, North_C i SAS C kompajlera i kada C++-a još nije bilo ni na pomolu u standardizovanom obliku. Od tada pa do sada je prošlo sigurno desetak i više godina i mnogo, mnogo vremena posvećenog kodu i knjigama. Jedini razlog zbog kojeg se još ništa nije pojavilo iz furune u kojoj “pečem” je taj što je veliki deo stvari koji je realno završen ostao na drugim platformama ali će veoma brzo biti dostupni za “testiranje”. Naravno ne treba pominjati vreme koje je otišlo na faks ;) Znači, mislim da imam dosta argumenata da se početnik opredeli šta želi da koristi. Još ako ovaj blesavi ostrvljanin kaže neku lepu reč ;)

EOF

Marko_L
6.8.2006, 20:11
A jel’ ti nije malo bezveze da ako već google-aš po netu i Wikipedi-ji bar ne pročitaš lepo šta tačno piše u tome šta si „izgoogle-a“. Jesu li tvoji „oficijelni podaci“ sa ove stranice?
Podaci nisu sa Wikipedije, ali nebitno, u pravu si, moja greška, downloadovan je 150.000.000 puta, a prodato je u preko 5.000.000 primeraka, što je opet fantastičan broj, i priznaćeš, lep devetocifren prihod u dolarčićima.
Jel treba da pitam odakle ti ove informacije?
Pa recimo da verujem CNN-u :)
http://www.cnn.com/2006/TECH/fun.games/02/28/casual.games/
Pa onda je najverovatnije potrebno da nabaviš i to drugo oko pa da dobiješ i treću dimenziju jer se bojim da će uskoro i četvrta da bude relevantan faktor
3D look nije isto što i 3D igra. Ja u Popcap-ovim igrama nigde nisam video korišćenje treće dimenzije. To što loptice deluju kao 3D objekti je potpuno irelevantno, jer to je i dalje 2D igra, koju pokreće 2D engine, kao što i sami autori tvrde na svojim stranicama.
The Framework has been used on a number of different game types, from simple match-three games to hardcore side-scrolling shoot-em-ups. Although it supports 3d acceleration for graphical effects, it is principally a 2d game engine.
http://developer.popcap.com/info.php
Isto tako, ako ja pravim 2D space shooter (sa pogledom odozgo) i iskoristim modele brodova rađene u 3D Max-u recimo, to i dalje nije 3D igra, i za nju mi ne treba 3D engine, niti poznavanje 3D programiranja.
Ali porpilično bitna stavka u pobijanju nečije tvrdnje da su PopCap-ove igrice čist “2D” Čak štaviše situacija je skoro potpuno drugačija.
Mislim da sam upravo pokazao zašto jesu 2D igre.

Marko_L
6.8.2006, 20:21
Ako ni sada nije jasno, nemoj ni da mi kažeš jer odustajem od ovog dela. Shvatili su oni koji su trebali ili hteli da shvate
Naravno da nije jasno. Kakve sad veze imaju komercijalne aplikacije koje ti pominješ, sa poslovnim aplikacijama o kojima sam ja pričao ?
I šta sada to treba da nam kaže? Da u industriji igara nema ni traga ni glasa od VisualBasic-a a da prilikom razvoja poslovnih aplikacija (pretpostavljam da ti prijatelj na tome radi u Šviderlandima) nema ni traga ni glasa od C++-a? Dobro. Ajde neka za sada bude takva idelana situacija. Pa šta će onda tvoj predlog ovde?
To treba da nam kaže da ni VB nije za bacanje i da se sa njim može lepo raditi i zarađivati. I uopšte mi nije jasno zašto sad pominješ game dev. Odluči se više o čemu hoćeš da pričaš umesto što šetaš diskusiju, čas je u pitanju izrada igara, čas komercijalne poslovne aplikacije, čas 3D izgled upoređuješ sa pravom 3D igrom, kao da su isto... i to u trenutcima kada tebi to odgovara, samo da bi pokazao ne znam ni ja šta.
Ako mi ikada bude trebao diplomata ili političar veruj mi da ćeš biti prvi kome ću se obratiti.
Da, to mi svi kažu... čak pominju i advokaturu :) A sve tri oblasti donose lepe parice... moraću da porazmislim o tome.
U redu je da pozoveš majstora da ti malo “dotera” kuću ili da odeš kod mehaničara da ti “sredi” auto ali ne i da unajmljuješ specijalistu za fiziku ako iz već pomenutog „Vučića-Ivanovića“ treba da pročitaš dve glave. No i ovo je subjektivna stvar.
Ekonomija je majka opstanka :) Naravno da je to subjektivna stvar, i ja ću ako mi se više isplati da unajmim čoveka da mi nešto odradi koliko god da je mala stvar u pitanju, a ako mi se ne isplati, uradiću sam... vrlo prosto.

Marko_L
6.8.2006, 20:32
Lepo je znati šta su pametnije stvari a inače ovo je klasičan izgovor i jedan od razloga zašto jednostavno „cvetamo“ sa opštom kulturom. Neće ti mozak istrunuti ako naučiš šta su Njutnovi zakoni! Bar do te mere da znaš kako kasnije možeš da ih primeniš. Ako nisi primetio fizika nije nauka već sve što te okružuje pa i ti sam
Praktičnost pre svega holodoče. Šta misliš, zašto je SAD najrazvijenija nacija na svetu. Pa upravo zato što im ne cveta "opšta kultura", nego svako radi svoj posao. Ovde čovek misli da je neko **** ako zna da pronađe Zanzibar na karti, dok će lepo amera da bole **** gde je to, a ako mu ustreba, naći će ga za pola minuta preko Googla recimo. Isto tako je u IT svetu... u normalnim zemljama je programer programer, dizajner dizajner, crtač crtač, modelar modelar, a ne ko ovde, jedan čovek hoće da radi sve... e pa zato nam i ne cveta softverska industrija. A što se tiče Njutnovih zakona, ako me interesuju ja ću da ih učim, a ako ne, pronaći ću uz pomoć Googla za manje od 5 minuta sve o njima...
Jedini problem leži u tome što se definicija „dovoljnog“ menja svakog dana pa ne možeš da kažeš da si ozbiljan u bilo čemu ako i jedan jedini trenutak zapostaviš to što radiš
Ne menja se nimalo... Dovoljno je uvek tačno onoliko koliko ti treba. Može da se promeni količina onoga što ti treba, ali to je i dalje tačno onoliko koliko ti treba.
Pa ja sam mislio da ćeš da predložiš nešto hrabrije od toga. Recimo da ja tebi dam da napraviš 3D engine po nekoj specifikaciji a da ja uradim taj kalkulator u C++-u pa da se posle zamenimo Pa da proverimo koliko je kome prosečno vremena trebalo da odradi obe stvari
Može, zašto da ne... samo da se dogovorimo o kojoj cifri pričamo, pošto mi ne pada na pamet da radim 3D engine za džabe... kalkulator bih još i mogao da ti uvaljam kao freeware :)

3dM@niak
6.8.2006, 20:40
Pazi, to o Amerima bash i nije za pohvalu. Ne meri se covek ni parama ni opshtom kulturom. Ako je neko programer, ne mora da bude SAMO JEDINO I ISKLJUCIVO programer. Niko nije umro od citanja i ucenja.... Opsta kultura nije bitna samo zbog poznavanja njutnovih zakona, vec ti daje bolji pogled na svet, pre svega objektivniji (pogotovo mislim na poznavanje knjizevnosti, istorije i.t.d)...

Marko_L
6.8.2006, 20:42
„Mali Mukica sedi na obali reke i u jednoj ruci drži papir dok drugom nešto zapisuje i ponavlja tihim glasom.

- „Da vidimo šta mi treba i kolko će da me košta da počnem da zarađujem čukajući po tastaturi.“

- „Originalni Windows – dvanaestopalačno crevo.“
- “Service Pack za originalni Windows – jetra”,
- “Microsoft Visual Studio 2005 – desna polovina mozga, ionako mi treba samo jedna”,
- “Service Pack za Micrososft Visual Studio 2005 – levi bubreg”,
- “Pentium na 3GHz-a i ostali hardver – prebijena leđa i probijeno desno plućno krilo”
Možda, ako se se mali Mukica informisao o započinjanju posla kod tebe, a da je pitao mene, računica bi izgledala ovako...
-Originalni Windows - 75 evra (cifra koja se može zaraditi jednom izuzetno jednostavnom poslovnom aplikacijom)
-Service Pack za Win - besplatan (ja mu dam na CD-u, ne mora ni prazan disk da mi plati)
-Microsoft VS mu ne treba za početak, može jednostavno da uzme besplatan VB 2005 Express ili za nekih 50$ pazari preko E-Bay-a Visual Studio 6.0 (cifra koja se može zaraditi izradom još jednostavnije poslovne aplikacije ili baze podataka)
-Service pack za VS - besplatan (takođe mu dam ja na CD-u)
-Pentium 3GHz i ostale pi*čke materine mu trebaju da bi pokrenuo najnoviju igru, mašina koja je dovoljna za programiranje može da se kupi za 150-200 evra, a ako već razmišlja o programiranju, verovatno već ima nekakav PC, tako da ova stavka otpada.
Ili u prevodu, bulazniš bre... :)
Primera radi Marko, primera radi Još da MS pokupi samo ovakve podatke i ne bi bio problem.
Pa što primera radi, kao primer ne nađe muziku koju slušaš, ili filmove koje gledaš, nego baš pornografiju ;) Neko ko se bavi psihologijom može svakakve zaključke da izvede :) Uostalom i da MS skuplja takve podatke, meni to nimalo ne smeta, jer to znači da se jedan MS interesuje za mene, i bilo bi mi drago zbog toga... a što bi mi i smetalo... ne radim ništa ilegalno :)

3dM@niak
6.8.2006, 20:45
Ni ovo se ne bih slozio... shta ko ima da se interesuje za mene i da skuplja podatke o meni? Da sam hteo, otvorio bih blog na netu, pa nek me cita ko oce... posto nisam, sta ima da me "ukompajliraju"? :D :D
Nisam ja nikakav lik sto se gubi u teoriji zavere, ali ne volim da bilo ko skuplja bilo kakve podatke o meni...

Marko_L
6.8.2006, 20:53
Znači, vidim da ima malo ljudi koji žele da se uključe konkretno u ovu temu pa su valjda kao „najdosadniji“ argumenti ostali ovi Markovi i moji. Znači, ja sam ostao na tome da treba početi sa C++-om.
Slažem se, treba početi sa C++-om :) Samo sam hteo da napomenem da postoje i VB i Delphi :)
Pazi, to o Amerima bash i nije za pohvalu. Ne meri se covek ni parama ni opshtom kulturom. Ako je neko programer, ne mora da bude SAMO JEDINO I ISKLJUCIVO programer. Niko nije umro od citanja i ucenja.... Opsta kultura nije bitna samo zbog poznavanja njutnovih zakona, vec ti daje bolji pogled na svet, pre svega objektivniji (pogotovo mislim na poznavanje knjizevnosti, istorije i.t.d)...
Ne razumemo se... naravno da nikome neće škoditi da proširi svoje znanje o nečemu što ga interesuje, samo hoću da kažem da nije neophodno, osim ako se ne baviš tom oblašću. Recimo, zašto bi meni kao jednom programeru trebalo da znam sve što se može znati o Zanzibaru, ako me to ne interesuje. Ako mi to nekad i ustreba, praktičnije mi je da odem na Geo facts i pročitam šta mi treba, umesto da to držim u glavi. To ne znači da ja nemam znanja iz nekih drugih oblasti koje me interesuju. Recimo, posedujem pozamašno znanje o dinosaurusima, iako mi to verovatno nikada neće doneti neke koristi, jednostavno me je to zanimalo i upijao sam sve do čega sam mogao da dođem u vezi toga (knjige, časopisi, filmovi, dokumentarci...), ali to je nešto što sam ja izabrao da učim. Zato mi se sviđša US sistem, tamo je malo obaveznih, a dosta izbornih predmeta, što ti pomaže da svoje znanje proširiš nečim što te intereseuje i što će ti verovatno ostati u glavi, umesto što ćeš da puniš glavu nečim što tze ne zanima, što ćeš verovatno brzo da zaboraviš, a izgubićeš na to vreme koje si mogao pametnije da iskoristiš. Ja iskreno nisam neki ljubitelj fizike, znam osnovne stvari... i sasvim mi je dovoljno što znam da će lopta koju bacim na kraju zbog gravitacije završiti na zemlji. Ako mi ustreba kompleksniji proračun, pa potražiću to preko googla i siguran sam da ću naći (recimo kako izračunati kojom brzinom će lopta padati, koliko će puta odskočiti pre nego što se zaustavi...), umesto da sve to držim u glavi, uz rizik da ću da zaboravim pola toga (ili da izmešam formule), jer me jednostavno to ne interesuje previše... To je poenta.

Marko_L
6.8.2006, 20:57
Nisam ja nikakav lik sto se gubi u teoriji zavere, ali ne volim da bilo ko skuplja bilo kakve podatke o meni...
Rekoh, "čak i da MS skuplja", a to ne znači da skuplja... naprotiv, to je vrlo malo verovatno, jer bi to neko kad tad provalio, a onda bi se MS suočio sa jednom masnom tužbom zbog narušavanja privatnosti. Treba pročitati EULA i ako tamo ne piše (a ne piše) da MS sme da uzima podatke o tome koje sajtove posećujete, onda to sasvim sigurno i ne radi. Prikupljanje podataka o serijskom broju Win-a, VS-a, i sl. je dozvoljeno prikupljati, jer su ti isti serijski brojevi njihovo vlasništvo, ali podatke o tome koju muziku slušate, da li ste ljubitelj pornografije, i slične budalaštine, jednostavno ne sme da skuplja, i da je to kojim slučajem MS ikada radio, izbio bi do sada veliki skandal, tako da, ne zaluđujte se time.

holodoc
7.8.2006, 3:53
Pa recimo da verujem CNN-u :) http://www.cnn.com/2006/TECH/fun.games/02/28/casual.games/
Ponekad se zapitam vredi li raspravljati o nečemu kada sagovornik misli da si toliko arogantan i/ili možda retardiran da nećeš pažljivo da proveriš njegovu argumentaciju i posebno linkove koje navodi.

Da pređem odmah na stvar. Citiram početak teksta pošto si se ispravio za prethodnu grešku od „150 miliona“ pa ti je oprošteno :):
While sales of boxed PC games at retail are on a steep decline -- 38 million games sold in the United States for 2005 compared with 47 million games sold in 2004, according to retail marking consultant the NPD Group -- casual games are now enjoyed by an estimated 100 million PC users, according to comScore Media Metrix.
Par redova dole:
PopCap says its games have been downloaded more than 175 million times over the past four and a half years.
Prvo, eto koliko statistika (prevashodno ona sa inteneta) služi nekoj konkretnoj svrsi. Dok jedan sajt tvrdi da su PopCap-ove igrice download-ovane “preko 150 miliona puta”, CNN tvrdi da ih “koristi” oko “175 miliona ljudi”. Moraš da priznaš da “statistička razlika” od 25 miliona i nije baš mala. Doduše može da se desi da je sajt sa koje si naveo prvobitnu informaciju neažuran pa ga tek u tom slučaju ne možeš svrstati u kompetentne. Sa druge strane CNN jeste jedan od najuticajnijih (ako ne i najuticajniji) svetskih medijskih magnata ali je malo deplasirano za nekoga ko je IT profesionalac da se informiše o dešavanjima u industriji igara (koja je naravno deo IT-a) putem CNN-a. Posebno u slučajevima kada iskusni mediji (a CNN definitivno jeste takav) negde u svoj toj statistici ubace onu malu sintagmu „according to“. Pa i vrapci znaju od čega (stvarno) žive kompanije koje se bave „analizom“ tržišta. Treba tu analizu neko i da plati, zar ne? Jel treba nekoga da podsećam na skoro svakodnevno prepucavanje „RTS-a“ i „Pinka“ oko toga kolika je njihova „gledanost“ a ako bar jednom pokušate da saberete procente koji se pominju shvatićete da je ukupan broj ljudi malo veći od onog koji „analitičari“ pominju kao „grupa ispitanika“.

Zato da ne bih ponovo dužio i uništavao ovu jadnu tastaturu evo linka ka jednoj od najrelevantnijih i najcenjenijih game-developement sajtova pa, čisto vežbe radi :), nađi na njemu pravu statistiku današnjih igara ;) Ovaj sajt naravno preporučujem svima koji stvarno nameravaju da se bave razvojem ove vrste aplikacija. Ako se malo više pomučite možda će te imati sreće sa nekim od brojnih oglasa Ubisofta, Lucas Artsa i sličnih kompanija ;)

http://www.gamedev.net/

holodoc
7.8.2006, 3:54
Druga stvar, izveo si na osnovu prvog citata zaključak da prodaja vrhunskih (kako voliš sam da ih zoveš AAA) naslova za PC opada. Apsolutno tačno. Čak štaviše ja sam to naveo na samom početku ove naše male rasprave. Znači u ovom slučaju engleski ti je OK ali nije okej to što nisi uzeo u obzir “taman kol’ko ti treba” da izvedeš pravi zaključak. Šta je sa konzolama? Imaš li i najmanju predstavu koliki je broj prodatih konzolnih naslova u svetu. Treba li da pomenem koliko se igara proda za Xbox, PS i ostale konzole. Ne treba da budeš menadžer ili neko kome su pare struka pa da lepo posle podvučenih crta shvatiš da „casual“ naslovi ne mogu ni da „prismrde“ ovom broju. Ali nemoj kao argument da iskoristiš da su to konzole i da se ne računaju jer nemaju veze sa PC računarima. Nije tačno jer se na njima razvijaju ;)
Praktičnost pre svega holodoče. Šta misliš, zašto je SAD najrazvijenija nacija na svetu. Pa upravo zato što im ne cveta "opšta kultura", nego svako radi svoj posao. Ovde čovek misli da je neko **** ako zna da pronađe Zanzibar na karti, dok će lepo amera da bole **** gde je to, a ako mu ustreba, naći će ga za pola minuta preko Googla recimo.
Uf što si našao koga ćeš da porediš :) Nas i amere!!?:rofl: Pusti ti amere, oni su potpuno drugi svet odvojen i fizički i psihički od ostatka sveta. Ko njih razume mora da je ili jedan od njih ili pripada nekom od malobrojnih indijanskih plemena koja su još u životu ;) Što nisi naveo neku evropsku zemlju primera radi? Evo recimo šta misliš zbog čega su nemci tamo gde jesu. Sigurno ne zbog svoje kolektivne gluposti ili opšteg neobrazovanja (jer nije tako) već zato što su od malena naučeni da svuda gde mogu ulože malo više truda i rada jer znaju da će im se višestruko isplatiti. Nešto što je za nas nažalost postala misaona imenica u poslednjih dvadesetak godina. No da ne zalazim dublje u ovu problematiku jer je to ionako za nekoga ko se bavi psihologijom ili ko zna čime već.
u normalnim zemljama je programer programer, dizajner dizajner, crtač crtač, modelar modelar
I šta ti ovo govori? Naravno da nismo normalni! Da ovo definitivno stoji kao činjenica shvatiće svako ko provede bar jedan jedini sat u bilo kojoj evropskoj državi. Primera radi Engleska u kojoj je dovoljno da prošetaš 100 metara od aerodroma i da shvatiš koji si ti u stvari seljak. Sledećih stotinak metara ćeš već razmišljati o tome da hm, hm “overiš” neku cnkinju (kojih stvarno ima na kile) ili da makar umreš pre nego što se vratiš nazad pa da kažeš da si umr’o ko čovek ;)

Dobro i ja preterah sad malo :)

holodoc
7.8.2006, 3:56
a ne ko ovde, jedan čovek hoće da radi sve... Okolina diktira na koji način ćeš da se pilagodiš pa ćeš zato u zemlji Srbiji često morati da se “navučeš” na još par “dodatnih aktivnosti” da bi se bar koliko-toliko održavao na površini jer ti se ne isplati ni da se udaviš ;)
e pa zato nam i ne cveta softverska industrija.
Pa ne mora da znači da će se scenario sa procvatom softverske industrije ikada desiti. Da li stvarno očekuješ da u zemlji u kojoj je sasvim normalno da zbog nepažnje radnika EPS-a „pocrka“ 90% računara u nekom delu grada, razvijaš softver? Možda nekada u dogledno vreme. A ako ne i u slučaju da i dalje ne voliš da prljaš ruke zna se kud i kako. Čamac i veslo u ruke pa Dunavom uzvodno, nikako nizvodno ;)
A što se tiče Njutnovih zakona, ako me interesuju ja ću da ih učim, a ako ne, pronaći ću uz pomoć Googla za manje od 5 minuta sve o njima...
Izvor u krajnjem slučaju nije toliko bitan. Važno je da ti naučiš Njutnove zakone pa sad da li ćeš koristiti Google ili Yoogle nije važno ;) Mada kad malo bolje razmislim možda i jeste jer se opet postavlja pitanje kredibiliteta tih sajtova. Pazi da ne naletiš na neki sajt čiji sadržaj ažurira neki student jer oće ovi studenti stalno da plasiraju netačne informacije pa veoma lako može da ti se desi da budeš odgovoran za neku veeeeliku štetu jer si “progutao” Njutonov zakon u “skraćenoj” verziji ;)
Ne menja se nimalo... Dovoljno je uvek tačno onoliko koliko ti treba. Može da se promeni količina onoga što ti treba, ali to je i dalje tačno onoliko koliko ti treba.
Uf zaboravio sam da si programer. Moja greška. Hteo sam da kažem da se „deklaracija dovoljnog“ uvek menja a ne „definicija“. Izvinjavam se za ovu nepreciznost. Neznam šta mi bi ;)
Može, zašto da ne... samo da se dogovorimo o kojoj cifri pričamo, pošto mi ne pada na pamet da radim 3D engine za džabe... kalkulator bih još i mogao da ti uvaljam kao freeware
Znači ništa od „Test Run-a“ :) A ja sam se ponadao, ono čisto sportskog duha radi, da „bacimo“ po jedan engine za popodne pa da vidimo. Bez ikakvih naprednih džidža-bidža čisto vertex modeliranje i „popločavanje“ jednostavnim teksturama. Naravno i malo svetla mora da bude. VB vs C++ ;) No commercial engines allowed! ;)

A što se tiče kalkulatora,... :) Jedino što sa njime možeš da uradiš ako ga lansiraš kao freeware je da napraviš sebi antireklamu ;)

holodoc
7.8.2006, 3:58
Možda, ako se se mali Mukica informisao o započinjanju posla kod tebe, a da je pitao mene, računica bi izgledala ovako...
-Originalni Windows - 75 evra (cifra koja se može zaraditi jednom izuzetno jednostavnom poslovnom aplikacijom)
-Service Pack za Win - besplatan (ja mu dam na CD-u, ne mora ni prazan disk da mi plati)
-Microsoft VS mu ne treba za početak, može jednostavno da uzme besplatan VB 2005 Express ili za nekih 50$ pazari preko E-Bay-a Visual Studio 6.0 (cifra koja se može zaraditi izradom još jednostavnije poslovne aplikacije ili baze podataka)
-Service pack za VS - besplatan (takođe mu dam ja na CD-u)
Mali Mukica lepo posluša tvoj savet i ode i kupi sve to što si mu rekao (uzme čak i CD-ove da mu narežeš Service Pack-ove). Narežeš mu ti sve to lepo, izljubite se, pozdravite i ode sav srećan kući .

Posle nedelju dana vidno uzrujan dolazi kod tebe u firmu sa macolom od 10 kila vukući kućište za sobom i vrišteći na tebe jer si ga napravio mamlazom :) Njegove glavne pritužbe se odnose na to da su mu Windows Home Edition koji su mu predložio uporno nudili uz neki smrdljivi miš jer drugačije nikako ne može da „pazari“ OEM varijantu. I još, nevernici su mu na sve to obračunali i PDV tako da ga je sve iznelo oko 95 evra a ne pomenutih 75 ;) Da stvar bude gora kada je sve to sklopio kod kuće WindowsXP uporno odbija da mu „napravi“ neku aplikaciju na kojoj upravo hoće da radi jer mu XP uporno izbacuje da nema pojma šta je to IIS i da par veoma važnih i prekopotrebnih funkcija u XP-u jednostavno ne postoji. Okrene par brojeva, zove tehničku službu a ona gospođica sa druge strane „tehničke doprške“ baulja po slušalici da je mali Mukica dobio šta je tražio jer to nigde nije pisalo da se isporučuje u Home verziju Windows-a. Tajac.

Dobro, kaže mali Mukica. Valjda ću da preživim. Odluči on da se više ne igra i posluša tvoj drugi savet i preko ovog e-baya naruči taj MS Studio 6-icu pošto vidi da mnogo ljudi to prodaje po niskim cenama pa valjda misli kod amera konkurencija pa pala cena ;) Stigne njemu paket i on ustanovi da se u njemu pored „Solitera“ i „Mina“ nalazi i par interesantnih gluposti (recimo neki niskobudžetni film „Š“ klase sa Čak Norisom u glavnoj ulozi).

E sad se mali Mukica samo pita gde prvo da te „pukne“ :) i da li da počne od malog prsta ili da ti prekrati muke ciljanjem „odma’ u glavu“ :)

holodoc
7.8.2006, 4:00
Da smanjim doživljaj :) Windows XP Home Edition je sve samo ne platforma za jednog programera. Doduše i u samoj reklami Microsoft-a, koji bi inače trebao najviše i da napumpava njegove sposobnosti, nigde ni nema pomena o nekoj ozbiljnijoj primeni a kamoli korišćenju u profesionalne svrhe. Microsoft sam naglašava da je ovaj operativni sistem namenjen uživanju u multimedijalnom materijalu, igricama i bla, bla, truć. Pa šta misliš zašto prodavci XP Home Edition ugrađuju u poslednje vreme kao sumanuti u nove mašine i laptopove. Sigurno ne zato da bi omogućili nekom programeru da se blago rečeno „iživljava u svojoj kreativnosti“ na njemu nego zato da bi mogli da iskoriste onu frazu „da vi’š brajko kake lepe šare ima ovaj Media Player“ ;)

Da rezimiram, iz gorkog iskustva ogromnog broja ljudi koji su se prešli pa kupili Windows XP Home za poslovnu primenu može se samo zaključiti dalje ruke od njega. Da nečemu realno vredi ne bi koštao 100 evra ;) Da ne bih ogrešio dušu na ovom mestu WinXP Proffesional je potpuno druga priča ali naravno je i njegova cena ;)
pi*čke materine
Ako ova zvezdica treba da predstavlja cenzuru, koliko je meni poznato iz „opšte kulture“ i gramatike, zbog gubljenja suglasnika slobodno si mogao da izostaviš to zamenjeno slovo. A možda to nije cenzura nego greška pri kucanju ;)
Pa što primera radi, kao primer ne nađe muziku koju slušaš, ili filmove koje gledaš, nego baš pornografiju Neko ko se bavi psihologijom može svakakve zaključke da izvede
Pa da ti kažem nešto. Više verujem ljudima koji obožavaju pornografiju nego onima koji „obožavaju slušanje muzike ili gledanje filmova“. Kod ovih prvih bar uvek možeš da znaš na čemu si i šta im je „falinka“ a kod ovih drugih samo jednog dana možeš da se iznenadiš kada te „obesi“ i počne da te „tetovira“ jer mu je to jedini način da iskali svoj bes i bogom datu kreativnost ;)
Uostalom i da MS skuplja takve podatke, meni to nimalo ne smeta, jer to znači da se jedan MS interesuje za mene, i bilo bi mi drago zbog toga... a što bi mi i smetalo... ne radim ništa ilegalno
„Grešiš sinko ovaj silno grešiš!“ Ne interesuješ Microsoft ti već tvoje pare. Vrh onoga što vide o tebi (ako uopšte vide) je tvoj serijski broj. Šta mu vredi tvoje ime i prezime kad ne ume ni da ga pročita? ;)
Slažem se, treba početi sa C++-om. Samo sam hteo da napomenem da postoje i VB i Delphi
“File” -> “Save Page As...” -> “OK” ;)

EclipsE
7.8.2006, 8:47
Sve sam ovo procitao i doneo sam jedan zakljucak. Sledeca igra ce se zvati: "holodoc vs. Marko_L"

:D

bobi
7.8.2006, 8:56
Sve sam ovo procitao i doneo sam jedan zakljucak. Sledeca igra ce se zvati: "holodoc vs. Marko_L"

:D
Ja nisam imao strpljenja da sve procitam. :dzavo:
Mada, Eclipse, uvek mozemo da otstampamo takvu knjigu (copy/paste-ujemo tekst (zato Marko i Holodoce, pazite na gramatiku :) ) i zaradimo dobre pare.
Naravno nakon sto potrosimo silne pare koje smo zaradili, na zene, rock, i alkohol, prijavicemo se na forum pod drugim nick-om i postaviti novo pitanje. Sacekamo mesec dana i druga knjiga je na pomolu. :Freddy:
Jel' moze Eclipse? :)

3dM@niak
7.8.2006, 11:08
ja cu da vam ilustrujem :D Onaj deo sa "Povratkom malog mukice" ce da bude pravi Sin City :D :D :D Testerice, pa prst-po-prst :D :D

EclipsE
7.8.2006, 15:26
Ja nisam imao strpljenja da sve procitam. :dzavo:
Mada, Eclipse, uvek mozemo da otstampamo takvu knjigu (copy/paste-ujemo tekst (zato Marko i Holodoce, pazite na gramatiku :) ) i zaradimo dobre pare.
Naravno nakon sto potrosimo silne pare koje smo zaradili, na zene, rock, i alkohol, prijavicemo se na forum pod drugim nick-om i postaviti novo pitanje. Sacekamo mesec dana i druga knjiga je na pomolu. :Freddy:
Jel' moze Eclipse? :)

Super ideja, mozda dostignemo Bila Gejtsa
$$$$$$$$$$$$
:rofl:

Andross
7.8.2006, 18:22
Heh ideja bi bila Mastermind da nije pred svima izlozena.;) :kreza:

EclipsE
7.8.2006, 19:13
platicemo moderatorima ili adminu da obrisu ;)

holodoc
7.8.2006, 21:00
Sad sam tek video da neki delovi mog odgovora fale pa ajde da ne budem polovičan da ih pastujem. Sreća da ponekad odgovore pišem u UltraEditu pa ne moram da se ponavljam ;)
3D look nije isto što i 3D igra. Ja u Popcap-ovim igrama nigde nisam video korišćenje treće dimenzije. To što loptice deluju kao 3D objekti je potpuno irelevantno, jer to je i dalje 2D igra, koju pokreće 2D engine, kao što i sami autori tvrde na svojim stranicama.
Šta nije jasno u reči “hibrid”? Hibrid ovde treba da se odnosi na mešavinu 2D i 3D grafike. A ne možeš da kažeš da je nešto 3D look kada je u stvari 3D objekat! Sada uzmi u obzir izjavu na ovom sajtu da je engine „u principu“ 2D i činjenicu da je kompletnu izjavu sklepao neki menadžer koji je čisto „nafilovan“ informacijama od strane razvojnog tima i trebalo bi da bude jasno da ovaku izjavu treba uzeti sa rezervom. Lično neznam šta dotični gospodin smatra ostatkom od „u principu“ ali to je definitivno najvažniji deo u Zumi (loptice) koje se rade isključivo 3D tehnikom ;)
E sada, možda je razlog tome što nigde nisi video 3D taj što monitor u suštini može samo da prikaže dve dimenzije pa da odmah na ovom mestu batalimo bespotrebno raspravljanje i problem u komunikaciji ;)
Mislim da sam upravo pokazao zašto jesu 2D igre.
Ne već si pokazao da ne možeš da shvatiš šta su 2D/3D hibridi iliti “ne-2D” igrice ;)
Naravno da nije jasno. Kakve sad veze imaju komercijalne aplikacije koje ti pominješ, sa poslovnim aplikacijama o kojima sam ja pričao ?
Pa kada neko odluči da potpuno ignoriše to što čita naravno da mu nije jasno. Sve što sam pomenuo u vezi komercijalnih i poslovnih aplikacija treba čitati u kontekstu teksta u kome se pominju. Zato nemam nameru da se ponavljam treći put kada ti lepo sve to možeš da pročitaš prvi put;)
To treba da nam kaže da ni VB nije za bacanje i da se sa njim može lepo raditi i zarađivati. I uopšte mi nije jasno zašto sad pominješ game dev. Odluči se više o čemu hoćeš da pričaš umesto što šetaš diskusiju, čas je u pitanju izrada igara, čas komercijalne poslovne aplikacije, čas 3D izgled upoređuješ sa pravom 3D igrom, kao da su isto... i to u trenutcima kada tebi to odgovara, samo da bi pokazao ne znam ni ja šta.
Mislim da ti treba konačno da pročitaš prvu poruku u ovoj temi i provališ o čemu se ovde uopšte priča. Ako se dobro sećaš ja sam ovu malu raspravu započeo onime što je stvarna tema, razvoj igara, a ti si sve vreme pričao o poslovnim aplikacijama i generalnim stvarima vezanim za programiranje čega ima ionako na kile na ovom forumu. Pominjanje poslovnih aplikacija sa moje strane naći ćeš samo na mestima gde imaš repliku od mene na neki tvoj komentar ;) A već smo se složili sa time ko je kvalifikovaniji za advokaturu ;) i uporno izbegava odgovore na postavljena pitanja ;)

U svakom slučaju nečije ignorisanje učesnika u diskusiji sigurno ne može da mu pomogne da shvati šta su ovi hteli da kažu ;)

DeCoy
7.8.2006, 21:10
Ovaj Crusader88 sigurno nije ni sanjao u sta ce tema da mu se izrodi kada ju je postavljao!
Moram da priznam da mi je vrlo zanimljivo,ali i poucno da pratim ovu temu;)

holodoc
9.8.2006, 0:33
Inače zaboravio sam samo da kažem da obavezno posetite GameDevNet forum http://www.gamedev.net/community/forums/ koji je prepun korisnih informacija o tome gde i kako možete nabaviti finu literaturu (od koje sam već dosta i ja naveo) i odlične tutorijale.

Na forumu je takođe moguće naći i poveliki broj tutorijala (seminara) koji drže sami moderatori a koji su vezani za učenje C++-a za apsolutne početnike. U svakom slučaju za svakoga ko se ozbiljno bavi (ili želi da se bavi) razvojem igara ima ponešto;)

Ako se registrujete (preporučujem) imaćete priliku da pitate najrazličitija pitanja poprilično prijatnu "rulju" bez obzira koliko je po vašem mišljenju pitanje "lame";)

Marko_L
9.8.2006, 19:17
Prvo, eto koliko statistika (prevashodno ona sa inteneta) služi nekoj konkretnoj svrsi. Dok jedan sajt tvrdi da su PopCap-ove igrice download-ovane “preko 150 miliona puta”, CNN tvrdi da ih “koristi” oko “175 miliona ljudi”. Moraš da priznaš da “statistička razlika” od 25 miliona i nije baš mala. Doduše može da se desi da je sajt sa koje si naveo prvobitnu informaciju neažuran pa ga tek u tom slučaju ne možeš svrstati u kompetentne.
Nek je statistička greška i 50 miliona i to u korist tvoje tvrdnje, pa da je igra skinuta 100 miliona puta, to je opet cifra koja nadjačava AAA naslove (a primeti da se radi samo o Popcap-ovim igrama). Prema tome, jasno je da je pravljenje casual igara isplativ posao, i postaje sve više isplativ, a ulaganja u takav naslov su mnogo, mnogo manja nego za izradu AAA naslova. U principu, razlika je sasvim sigurno milionska cifra.
Posebno u slučajevima kada iskusni mediji (a CNN definitivno jeste takav) negde u svoj toj statistici ubace onu malu sintagmu „according to“. Pa i vrapci znaju od čega (stvarno) žive kompanije koje se bave „analizom“ tržišta.
Ako su ti jedina argumentacija vrapci, onda nemamo o čemu da pričamo. Može jedna kompanija koja se bavi analizom tržišta da bude plaćena da našteluje podatke, ali svakako ne postoji samo jedna kompanija, a podaci se manje više slažu. Uostalom, šta misliš, da je vlasnik Popcap-a uzeo kamion para i krenuo da deli redom da se laže o broju prodatih kompija. Ma, how yes no :)

Marko_L
9.8.2006, 19:35
Šta je sa konzolama? Imaš li i najmanju predstavu koliki je broj prodatih konzolnih naslova u svetu. Treba li da pomenem koliko se igara proda za Xbox, PS i ostale konzole. Ne treba da budeš menadžer ili neko kome su pare struka pa da lepo posle podvučenih crta shvatiš da „casual“ naslovi ne mogu ni da „prismrde“ ovom broju.
Pa nema smisla ubacivati konzole u priču kada na njima gotovo da nema casual igara, u stvari ja ne znam ni za jednu, niti su konzole pogodne za shareware naslove, jer kao prvo treba da postoji lagan način da se dođe do casual igara (download preko interneta recimo), zatim pojednostavljeno plaćanje (takođe preko interneta), zatim pojednostavljen proces registracije (da da, i to :))... Kada jednog dana konzole budu osposobljene za takve stvari, onda možemo da poredimo odnos AAA naslova i casual igara. Za sada treba da se ograničimo na PC.
Uf što si našao koga ćeš da porediš Nas i amere!!? Pusti ti amere, oni su potpuno drugi svet odvojen i fizički i psihički od ostatka sveta. Ko njih razume mora da je ili jedan od njih ili pripada nekom od malobrojnih indijanskih plemena koja su još u životu
Ameri su uzeti kao primer. Uzmi bilo koju razvijeniju zemlju i videćeš svuda važi pravilo da su najcenjeniji ljudi koji se bave jednom oblašći i profesionalci su za nju, a ne oni koji od svega znaju pomalo, što je inače patentirani srpski sistem i ovde su još uvek najcenjeniji ljudi koji umeju da isprogramiraju nešto, da crtaju, da zbudže nekakvu mrežu, jer svakom gazdi više odgovara da plaća jednog čoveka, nego trojicu... jer njemu je dovoljno da se nešto nakrpi da radi, ali tako ne treba da bude, i neće biti još dugo... čim ljudi shvate koliko je važno imati profesionalca za svaku oblast.

Marko_L
9.8.2006, 19:51
Evo recimo šta misliš zbog čega su nemci tamo gde jesu. Sigurno ne zbog svoje kolektivne gluposti ili opšteg neobrazovanja (jer nije tako) već zato što su od malena naučeni da svuda gde mogu ulože malo više truda i rada jer znaju da će im se višestruko isplatiti.
Nemoj da mešaš neobrazovanje i rasipanje znanja. Nisam rekao ništa protiv toga da čovek koji ima kapaciteta, nauči šta god ga zanima i proširi svoje poznavanje opšte kulture, već sam protiv toga da to nekome bude imperativ. Dakle, Nemci nisu neobrazovan narod svakako, ali kod njih vala nećeš naći firmu u kojoj jedan čovek programira, dizajnira, radi sistem administraciju i da istog tog čoveka cimaju da radi nekakve Word i Excel izveštaje, grafikone, i čuda... kao kod nas, jer se ovde po defaultu smatra da ako radiš nešto na računaru, ti si odma' majstor i za programiranje, i za dizajn, i za mreže i za sve ostalo što može da se radi na kompjuteru, plus čim on radi sa kompjuterom mora da zna i matematiku i fiziku... Neko će još da pomisli da treba tako, a to nije tačno. Tebe ako zanima nešto osim programiranja, pa uči... ko ti brani, ali to znanje ne treba da bude predispozicija da bi se ti bavio programiranjem.
Okolina diktira na koji način ćeš da se pilagodiš pa ćeš zato u zemlji Srbiji često morati da se “navučeš” na još par “dodatnih aktivnosti” da bi se bar koliko-toliko održavao na površini jer ti se ne isplati ni da se udaviš
To je na neki način tačno, ako želiš doživotno da radiš za nekoga i zadovoljan si platom. Ako želiš više, onda moraš i da razmišljaš evropski.
Pa ne mora da znači da će se scenario sa procvatom softverske industrije ikada desiti. Da li stvarno očekuješ da u zemlji u kojoj je sasvim normalno da zbog nepažnje radnika EPS-a „pocrka“ 90% računara u nekom delu grada, razvijaš softver?
Ne mora procvat da znači da odjednom Srbija počne da zarađuje milione od softvera. Za nas bi bio procvat i ako bi se omogućilo da radimo normalno i da ljudi shvate pojam intelektualne svojine kao nešto bitno (barem onoliko koliko ozbiljno shvataju pojam fizičke svojine, jer je to u principu isto) i da softve r počne da se plaća, i da onaj ko ne može da plati MS Office, lepo potraži domaću jeftiniju alternativu. To bi donelo dobro svima, programeri bi imali više posla, svi ostali bi imali veće plate, a naša zemlja konačno ne bi bila na crnoj listi, pa bi to omogućilo stranim kompanijama da ulažu kod nas u proizvodnju softvera (jer bi postojalo tržište), što bi otvorilo dosta radnih mesta, za priličan broj profila (programere, dizajnere, modelare, sekretarice, čistačice, PR profesionalce, marketing menadžere, trgovce...). To bi po meni bio kakav takav procvat. Dakle, jednog dana, profesionalci će se ovde ceniti, i to veoma skoro, osim naravno ako se ne opametimo i odemo ponovo pod sankcije, ali u tom slučaju ti ni poznavanje 1000 kur*čeva neće pomoći, ne ?

Marko_L
9.8.2006, 20:10
Mada kad malo bolje razmislim možda i jeste jer se opet postavlja pitanje kredibiliteta tih sajtova. Pazi da ne naletiš na neki sajt čiji sadržaj ažurira neki student jer oće ovi studenti stalno da plasiraju netačne informacije pa veoma lako može da ti se desi da budeš odgovoran za neku veeeeliku štetu jer si “progutao” Njutonov zakon u “skraćenoj” verziji
Ko kaže da moraš takve informacije da tražiš po studentskim sajtovima. Postoje zvanične institucije, zavodi i obrazovni centri koji su kompetentniji nego bilo ko drugi za te stvari.
Znači ništa od „Test Run-a“ A ja sam se ponadao, ono čisto sportskog duha radi, da „bacimo“ po jedan engine za popodne pa da vidimo. Bez ikakvih naprednih džidža-bidža čisto vertex modeliranje i „popločavanje“ jednostavnim teksturama.
Kad mi proradi sportski duh ja odem sa društvom na fudbal ili basket, a programiranjem se bavim profesionalno, i ako ću da radim nešto, radiću za pare ili da bih doprineo nečemu, a ne da bih nekome dokazivao šta ja mogu.
Njegove glavne pritužbe se odnose na to da su mu Windows Home Edition koji su mu predložio uporno nudili uz neki smrdljivi miš jer drugačije nikako ne može da „pazari“ OEM varijantu. I još, nevernici su mu na sve to obračunali i PDV tako da ga je sve iznelo oko 95 evra a ne pomenutih 75
Pa i on će da naplati PDV na svoj proizvod koji bude napravio, pa je na istom, a miša ću ja da mu otkupim ako je toliki problem jedan miš, koji uopšte nije beskorisna alatka i koju u krajnjem slučaju može nekom da uvalja i povrati pare.

Marko_L
9.8.2006, 20:18
Da stvar bude gora kada je sve to sklopio kod kuće WindowsXP uporno odbija da mu „napravi“ neku aplikaciju na kojoj upravo hoće da radi jer mu XP uporno izbacuje da nema pojma šta je to IIS i da par veoma važnih i prekopotrebnih funkcija u XP-u jednostavno ne postoji.
Jeste, Mukica koji tek počinje sa programiranjem je lud bez IIS-a :) I kojih to preko potrebnih funkcija ? U XP Home verziji sasvim lepo može da se odradi većina aplikacija, bez ikakvih ograničenja. Da neće možda VB odbiti da mu kompajlira projekat zato što koristi Home varijantu ? :)
Okrene par brojeva, zove tehničku službu a ona gospođica sa druge strane „tehničke doprške“ baulja po slušalici da je mali Mukica dobio šta je tražio jer to nigde nije pisalo da se isporučuje u Home verziju Windows-a. Tajac.
Tehnička podrška ne služi da te uči programiranju, nego da ti reši problem koji ti imaš sa njihovim softverom.
Da smanjim doživljaj Windows XP Home Edition je sve samo ne platforma za jednog programera. Doduše i u samoj reklami Microsoft-a, koji bi inače trebao najviše i da napumpava njegove sposobnosti, nigde ni nema pomena o nekoj ozbiljnijoj primeni a kamoli korišćenju u profesionalne svrhe.
Pa normalno da ne pominje profesionalnu upotrebu za proizvod koji je namenjen kućnim korisnicima. To ne znači da ne može da se iskoristi u profesionalne svrhe i programira u njemu. Naprotiv, meni to sasvim lepo radi. Uostalom, Home verziju sam pomenuo da bi maksimalno skresali troškove. I Pro varijanta je džaba kada se pogleda šta sve može i koliko para može da se zaradi radeći na toj platformi.

Marko_L
9.8.2006, 20:26
Dobro, kaže mali Mukica. Valjda ću da preživim. Odluči on da se više ne igra i posluša tvoj drugi savet i preko ovog e-baya naruči taj MS Studio 6-icu pošto vidi da mnogo ljudi to prodaje po niskim cenama pa valjda misli kod amera konkurencija pa pala cena Stigne njemu paket i on ustanovi da se u njemu pored „Solitera“ i „Mina“ nalazi i par interesantnih gluposti (recimo neki niskobudžetni film „Š“ klase sa Čak Norisom u glavnoj ulozi).
Pa nek Mukica traži na drugom mestu ako ne veruje E-Bay-u. Meni je sasvim lepo stiglo sve što sam naručivao. Poenta je da VS verzije 6.0 može da se nabavi po ceni manjoj od 100 dolara, a ako imaš sreće i za mnogo manje od toga.
E sad se mali Mukica samo pita gde prvo da te „pukne“ i da li da počne od malog prsta ili da ti prekrati muke ciljanjem „odma’ u glavu“
Ili dođe i zahvali mi se što nije potrošio hiljade evra za nešto što mu realno kao početniku, odnosno nekome ko započinje posao ne treba. Niko njemu ne brani da kada pokrene posao, dokupi ono što mu treba, bilo to Windows XP Pro ili VS 2005 Pro. Poenta je da sa malo ulaganja čovek može da se osposobi za izradu aplikacija i bude legalan.

Marko_L
9.8.2006, 20:37
Ako ova zvezdica treba da predstavlja cenzuru, koliko je meni poznato iz „opšte kulture“ i gramatike, zbog gubljenja suglasnika slobodno si mogao da izostaviš to zamenjeno slovo.
Jok more, onda bi me forum cenzurisao skroz, pa od pi*čke ne bi bilo ništa :)
Pa da ti kažem nešto. Više verujem ljudima koji obožavaju pornografiju nego onima koji „obožavaju slušanje muzike ili gledanje filmova“. Kod ovih prvih bar uvek možeš da znaš na čemu si
A na čemu li si ti ? :) Mislim da preteruješ malko... zar stvarno misliš da u MS-u rade Bogovi, a ne ljudi, pa da mogu tek tako da sakriju prikupljanje ličnih informacija i to od IT profesionalaca, ma daj... neko bi kad tad to provalio, a onda bi izbio skandal, jer to nije tako mala stvar i MS bi se našao na sudu, a ja se ne sećam da se to desilo.
„Grešiš sinko ovaj silno grešiš!“ Ne interesuješ Microsoft ti već tvoje pare. Vrh onoga što vide o tebi (ako uopšte vide) je tvoj serijski broj. Šta mu vredi tvoje ime i prezime kad ne ume ni da ga pročita?
Pa ti si prvi počeo da dramiš o tome kako MS skuplja podatke o tvojim seksualnim afinitetima, a ne ja. Ja sam samo rekao da čak i ako je tako, ne smeta mi.
“File” -> “Save Page As...” -> “OK”
Eto, tako ti i treba kad hoćeš da znaš sve, pa ti se znanje rasipa. Ne ide tako, nego
“File” -> “Save Page As...” -> “Save” ;)

Marko_L
9.8.2006, 20:44
Šta nije jasno u reči “hibrid”? Hibrid ovde treba da se odnosi na mešavinu 2D i 3D grafike. A ne možeš da kažeš da je nešto 3D look kada je u stvari 3D objekat! Sada uzmi u obzir izjavu na ovom sajtu da je engine „u principu“ 2D i činjenicu da je kompletnu izjavu sklepao neki menadžer koji je čisto „nafilovan“ informacijama od strane razvojnog tima i trebalo bi da bude jasno da ovaku izjavu treba uzeti sa rezervom.
E jeste, informacija na zvaničnom sajtu igre ne valja, al zato je tu holodoc koji nikad nije kročio u firmu koja je razvijala igru, da nam objasni kakav je njihov engine i kako su oni pravili igru :) Zanimljivo. Šta je sledeće ? Raskrinkavanje google zavere ?
Lično neznam šta dotični gospodin smatra ostatkom od „u principu“ ali to je definitivno najvažniji deo u Zumi (loptice) koje se rade isključivo 3D tehnikom
E sada, možda je razlog tome što nigde nisi video 3D taj što monitor u suštini može samo da prikaže dve dimenzije pa da odmah na ovom mestu batalimo bespotrebno raspravljanje i problem u komunikaciji
Nema to veze sa problemom u komunikaciji, već sa tvojim nepoznavanjem pojmova. 3D grafika, nije isto što i 3D igra koju pokreće 3D engine. Loptice u Zumi se kreću po 2 ose x i y, a ni u jednom trenutku ne skakuću (z osa) što će reći, za takvu igru nije potreban 3D engine. To što je grafika modelovana u nekom 3d programu, a onda prikazana kao 2D objekat, nikako ne čini 3D igru. Dakle, igra kao što je Zuma (u originalu) može da se napravi korišćenjem bilo kog 2D engine-a, bez problema. Kuglice mogu da se izmodeluju u 3D Max-u recimo, radi olakšavanja posla, ali iste bez problema mogu da se nacrtaju ručno. Dakle, to nije 3D igra i tačka.

voodoo_
9.8.2006, 20:56
Nema to veze sa problemom u komunikaciji, već sa tvojim nepoznavanjem pojmova. 3D grafika, nije isto što i 3D igra koju pokreće 3D engine. Loptice u Zumi se kreću po 2 ose x i y, a ni u jednom trenutku ne skakuću (z osa) što će reći, za takvu igru nije potreban 3D engine.
Nemojmo se praviti naivni. Gde god se koriste poligoni umesto bitmapa, u pitanju je 3D grafika, i tu nema zbora. To je ko kad bi rekao da je Herkules od pre hrista 2D igra, jer se junak kreće po jednoj ravni levo-desno i što su karakteri sprajtovi, potpuno zanemarivši što je sve oko njega 3D, uključujući i podlogu po kojoj se kreće. To što Zuma može da se napravi kao čista 2D igra, ne znači da je i sad 2D igra.

Marko_L
9.8.2006, 20:57
Ne već si pokazao da ne možeš da shvatiš šta su 2D/3D hibridi iliti “ne-2D” igrice
ok, objasni mi onda kako u Zumi da rotiram kameru i radim proizvoljan zoom ili nateram lopticu da odskoči... bilo šta što bi me ubedilo da je to 3D igra.
Pa kada neko odluči da potpuno ignoriše to što čita naravno da mu nije jasno. Sve što sam pomenuo u vezi komercijalnih i poslovnih aplikacija treba čitati u kontekstu teksta u kome se pominju. Zato nemam nameru da se ponavljam treći put kada ti lepo sve to možeš da pročitaš prvi put
Ok, dakle 3D Max koristi 3D engine. I šta si time dokazao ? Da DXGame može da se koristi za izradu poslovne aplikacije ? Naravno da može, kao što svaki drugi engine može da se koristi za bilo šta, ali sa kojom svrhom ? Za koj će mi moj collision detector u poslovnoj računovodstvenoj aplikaciji recimo ?
Mislim da ti treba konačno da pročitaš prvu poruku u ovoj temi i provališ o čemu se ovde uopšte priča. Ako se dobro sećaš ja sam ovu malu raspravu započeo onime što je stvarna tema, razvoj igara, a ti si sve vreme pričao o poslovnim aplikacijama i generalnim stvarima vezanim za programiranje čega ima ionako na kile na ovom forumu.
Lažeš, lažeš, a ko laže taj i krade ;)
Dakle, ja sam rekao
Pa, recimo DXGame je sjajan 2D game engine kompletno pisan u VB6.
na šta si ti odgovorio sa
Daleko od toga da želim da kažem da DXGame ne bi mogao da nađe svoju primenu recimo negde u nekoj poslovnoj aplikaciji
Dakle, poslovne aplikacije si prvi pomenuo TI - holodoc. Ako već hoćeš da lažeš, onda nauči kako se to radi.

Marko_L
9.8.2006, 21:08
To je ko kad bi rekao da je Herkules od pre hrista 2D igra, jer se junak kreće po jednoj ravni levo-desno i što su karakteri sprajtovi, potpuno zanemarivši što je sve oko njega 3D, uključujući i podlogu po kojoj se kreće.
Ako se dobro sećam te igre, glavni junak se kreće levo desno, a bogme i napred plus može da skače... dakle u upotrebi su sve tri ose. Ne sećam se nešto preterano okoliša, ali u neku ruku se to može nazvati 3D igrom, ali Zuma je kompletno 2D orijentisana, bez obzira što koristi 3D grafiku.
To što Zuma može da se napravi kao čista 2D igra, ne znači da je i sad 2D igra.
Cela rasprava je započela time što je holodoc rekao da je pominjanje 2D-a u game dev-u neprimereno, a ja sam dao primer kako jednostavna 2D igra može da zaradi milione. I da zanemarimo Zumu i raspravu oko toga šta su programeri koristili, ja tvrdim i stojim iza toga da takva igra (baš ista takva kakva jeste) može bez problema biti napravljena korišćenjem 2D engine-a i bitmapa (nebitno da li su kugle modelovane u nekom 3D programu i pretvorene u bitmape ili crtane ručno). Uostalom, kao što smo već ustanovili, programeri sami tvrde da je njihov engine 2D.

voodoo_
9.8.2006, 21:28
Uostalom, kao što smo već ustanovili, programeri sami tvrde da je njihov engine 2D.
Ne tvrde programeri, već osoba zadužena za PR koja baš ne poznaje najdetaljnije tehnikalije ;)
Ko što WinZip PR department tvrdi da njihov program koristi njihove state-of-the-art algoritme, a svi znamo da je to u stvari infozipov izvorni kod spakovan u fensi interfejs :)

Marko_L
9.8.2006, 21:40
Ok, ubedili ste me... sve je to 3D, što je u principu odlično, jer sam upravo saznao da sam i 3D programer. Upravo razmišljam da promenim ime svog Pong klona u Pong 3D. Mislim, isti je kao original, ali nešto kontam, ako vam je Zuma 3D igra, zašto ne bi bio i moj Pong, loptica se kreće na sličan način (uostalom, redizajniraću lopticu u 3D Max-u ;)).

holodoc
10.8.2006, 3:50
Kao što Freddy Mercury jednom reče „The show must go on“.

Prvo ću da odgovorim na tvoju argumentaciju pa bih te onda uputio na jedan interesanatan tutorijal koji se nalazi na kraju mog izlaganja koje upravo počinje.
Nek je statistička greška i 50 miliona i to u korist tvoje tvrdnje, pa da je igra skinuta 100 miliona puta, to je opet cifra koja nadjačava AAA naslove (a primeti da se radi samo o Popcap-ovim igrama). Prema tome, jasno je da je pravljenje casual igara isplativ posao, i postaje sve više isplativ, a ulaganja u takav naslov su mnogo, mnogo manja nego za izradu AAA naslova. U principu, razlika je sasvim sigurno milionska cifra.
Izgleda da nisi ni bacio oko na GameDevNet sajt. Povrh toga opet praviš istu grešku koju si napravio u prethodnom postu i pominješ broj „downloadovanih“ a ne prodatih igrica. Dok taj deo ne razlučiš nema svrhe raspravljati dalje o ovoj tački ;)

Što se tiče razlike u ulaganjima prilikom razvoja visokobudžetnih igrica zaboravio si da si ti taj u koga se ulaže u najvećem broju slučaja ;) Da posjasnim malo ovo. Ako dođeš u situaciju da se baviš razvojem visokobudžetnih igara to znači da odavno više nisi u zemljici Srbiji već negde preko. Bar što se trenutne situacije tiče. Kako si sam rekao, tamo preko svako radi svoj posao. Tvoj posao će biti da sve što ostale radne stanice (grafika, dizajn, zvuk, AI itd.) „ispljunu“ ti moraš da spojiš u jednu skladnu i pre svega funkcionalnu celinu. I tu se tvoj udeo u visokobudžetnom razoju igara završava ;) Ono o čemu ti uporno razbijaš glavu a u stvari nije tvoj „reon aktivnosti“ kao programera je novac! O njemu ima ko da se brine i da razmišlja. Na kraju krajeva ti bi trebalo da budeš taj koji na kraju meseca od čoveka sa parama dobijaš svoju platu zar ne? Zato ako već toliko visoko pucaš sa profesionalizmom ponašaj se kao profesionalac i radi svoj posao kako si i sam rekao a za pare ima ko da brine. Naravno ovo je totalno suprotan slučaj ako već poseduješ sopstvenu firmu a želiš da radiš nešto veliko. U tom slučaju ako i dalje želiš da budeš gazda koji će da vodi računa o novcu, pravcu u kome se projekat razvija itd. tvoja funkcija u celoj toj priči kao programera prestaje. U tom trenutku postaješ projekt menadžer koji ako je imalo ozbiljan i profesionalan treba da radi svoj posao, kako sam kažeš, i da se ostavi programiranja ;) Toliko o ulaganjima :)

holodoc
10.8.2006, 3:51
Ono našta ja pokušavam da ukažem u celoj ovoj priči je da je u slučaju da nekoga stvarno interesuje ozbiljan razvoj igara taj neko treba da uloži dosta vremena i truda da bi postao stvarno dobar u tome što radi. Tako komplesnu materiju kao što je razvoj igara nije jednostavno moguće uploadovati u mozak kao u Matrix-u („Operator, load program Game developement!“ :)) već je potrebno godina i godina pripremanja i učenja. U ovoj temi sam se prevashodno obraćao onima koji jednostavno žele da nauče kako se igrice razvijaju jer to je primaran cilj. A to da li će neko kasnije otvoriti firmu i sam se baciti na posao (i investiciju) ili se zaposliti u nekoj firmi vani kao stručnjak koji može da se pohvali da je dosta uložio u svoju budućnost (čitaj: znanje) za početak i nije baš preterano važno ;)
Ako su ti jedina argumentacija vrapci, onda nemamo o čemu da pričamo. Može jedna kompanija koja se bavi analizom tržišta da bude plaćena da našteluje podatke, ali svakako ne postoji samo jedna kompanija, a podaci se manje više slažu. Uostalom, šta misliš, da je vlasnik Popcap-a uzeo kamion para i krenuo da deli redom da se laže o broju prodatih kompija. Ma, how yes no
Jedna kompanija je sasvim dovoljna! Zaboravio si od čega svaka novinska kuća živi. Senzacije! Zato je PopCap-u potrebno samo jedno džakče novca i papir na kome piše „Ovog puta neka bude 175.000.000 download-a!“ a CNN će se veoma obradovati da takvu „senzacionalnu“ vest objavi pod „according to“ stavkom ;)

Pa nema smisla ubacivati konzole u priču kada na njima gotovo da nema casual igara, u stvari ja ne znam ni za jednu, niti su konzole pogodne za shareware naslove, jer kao prvo treba da postoji lagan način da se dođe do casual igara (download preko interneta recimo), zatim pojednostavljeno plaćanje (takođe preko interneta), zatim pojednostavljen proces registracije (da da, i to)... Kada jednog dana konzole budu osposobljene za takve stvari, onda možemo da poredimo odnos AAA naslova i casual igara. Za sada treba da se ograničimo na PC.
Zaboravljaš da je poenta u ovom slučaju posmatranje kompletne situacije sa strane developera, odnosno ljudi koji razvijaju igre a ne sa strane menadžmenta ;) U ovom konkretnom slučaju je krug još uži jer govorimo samo o programerima. A šta programere u industriji igara zanima? Naravno razvoj igara i to bez obzira na to da li se radi o konzolnim ili PC varijantama. E sada tvoj izvor (CNN) nažalost zalazi malo i u sferu menadžmenta pa bi se onda upoređivanje „moglo“ svesti na čisto upoređivanje PRODATIH primeraka „casual“ igrica i AAA naslova a taj odnos je, kako sam već napomenuo, uveliko u korist kombinacije PC+konzole. To što nečega nema na konzolama apsolutno ne treba da bude razlog da se one izbace iz analize. Podsećam još jednom da je ovde konkretno reč o razvoju (ne konzumiranju) oba oblika igara a koliko sam ja upućen one se i dan danas razvijaju na PC-u ;)

holodoc
10.8.2006, 3:52
Ameri su uzeti kao primer. Uzmi bilo koju razvijeniju zemlju i videćeš svuda važi pravilo da su najcenjeniji ljudi koji se bave jednom oblašći i profesionalci su za nju, a ne oni koji od svega znaju pomalo, što je inače patentirani srpski sistem i ovde su još uvek najcenjeniji ljudi koji umeju da isprogramiraju nešto, da crtaju, da zbudže nekakvu mrežu, jer svakom gazdi više odgovara da plaća jednog čoveka, nego trojicu... jer njemu je dovoljno da se nešto nakrpi da radi, ali tako ne treba da bude, i neće biti još dugo... čim ljudi shvate koliko je važno imati profesionalca za svaku oblast.
Problem leži u činjenici da Gazde uopšte neće da plate „profesionalce“ pa onda možeš da biraš da li ćeš da se dodatno obrazuješ ili ćeš da crkneš od gladi ;) A Gazda može da bira da li će zaposliti tebe ili jednog od ostalih hiljadu kandidata. Pa biraj :)
Nemoj da mešaš neobrazovanje i rasipanje znanja.
A šta ti podrazumevaš pod rasipanjem znanja?
kao kod nas, jer se ovde po defaultu smatra da ako radiš nešto na računaru, ti si odma' majstor i za programiranje, i za dizajn, i za mreže i za sve ostalo što može da se radi na kompjuteru, plus čim on radi sa kompjuterom mora da zna i matematiku i fiziku...
Isto tako među ljudima koji se bave programiranjem ili nekom sličnom delatnošću na računarima vlada prokletstvo (pre bih rekao sujeta) da ako je neko počeo da kapira jednu oblast automatski postaje ekspert za sve ostale. To je čak mnogo pogubnija kombinacija od one kada se neko stvarno trudi da nauči što je više stvari moguće pa mu vremenom sve to prelazi u dragoceno iskustvo. Neee! Kod nas će svako sa dovoljno arogancije da tvrdi da je ekspert za programiranje ako ume da napravi listu u Winamp-u. Neznam da li u celoj toj stvari postoji neka lažna otmenost ili je u pitanju čisto fora da „ekspert“ može da se pohvali pred komšijama kako radi posao u kojem se ne prljaju ruke. Tu dolazimo i na onaj, pa rekao bih slobodno pomalo tinejdžerski problem, da je postala sramota saslušati nečiju ideju ili prihvatiti stavku da taj neko stvarno ima kredibilitet da priča o nečemu (nevezano za računare) ili da je možda pametniji od nas. Uvek mi je u glavi ona rečenica „Ma šta koj moj ti znaš, nemaš ti pojma!“ Nažalost, koliko god obožavao da slušam ljude koji su kompetentni da pričaju o nekoj oblasti, toliko sam „alergičan“ na ljude koji pate od malopre pomenute sujete ;) Kada bih sada morao da ocenim šta je najveći problem za razvoj naše „softverske industrije“ mislim da bi odgovorio da smo to mi sami. Kao i za sve ostale stvari.

holodoc
10.8.2006, 3:53
To je na neki način tačno, ako želiš doživotno da radiš za nekoga i zadovoljan si platom. Ako želiš više, onda moraš i da razmišljaš evropski.
Samo ti razmišljaj „evropski“ u zemljici Srbiji i daleko ćeš dogurati :) Bolje da se umesto razmišljanja bacimo na neki posao. To je valjda jedino što još nismo probali ;)
Ne mora procvat da znači da odjednom Srbija počne da zarađuje milione od softvera.
Previše idealizuješ stvari i odvajaš „softversku industriju“ od tla na kom se „razvija“. Nemoj samo da se razočaraš ako za jedno pet do deset godina glavna moda u Srbiji postane poljoprivreda (e miline ;) ) pa budeš morao da pređeš sa tastature na motiku koja, pazi molim te, nema ugrađen ni smrdljivi Winamp!
Ko kaže da moraš takve informacije da tražiš po studentskim sajtovima. Postoje zvanične institucije, zavodi i obrazovni centri koji su kompetentniji nego bilo ko drugi za te stvari.
Pa ako si mislio da „tutorijale“ tražiš na njihovim oficijelnim web stranicama nećeš se preterano usrećiti jer ja koliko znam ne postoji nijedan sajt na netu koji održava neka poznata institucija ili zavod a da ima „tutorijale“ za bilo koji fizički zakon. Čak i da je „Max Planck“ u pitanju na njemu ćeš naći brljotine o nekim projektima koje ionako niko živi sa trocifrenim IQ-om ne razume. Čak i da uspeš da nađeš neki sajt sa kredibilitetom u najvećem broju slučajeva fizički model kojim se predstavlja fizički sistem koji tebi treba je previše zakomplikovan i matematički i logički. Ostaju ti jedino sajtovi koji se bave razvojem igara (ikad čuli GameDevNet?) koji ima fantastične tutorijale na ovu temu. Jedini problem u tom slučaju je što „GameDevNet nicht sprechen VB!“ već samo C++. Naravno, možeš sve te formule da pretočiš u VB kod ali ćeš to morati da radiš sam i ručno. Gde je tu onda tvoja praktičnost ? Imaš serviran kod a ti moraš da pišeš drugi ispočetka ;) Pod uslovom da ovaj možeš da pročitaš ;)
Kad mi proradi sportski duh ja odem sa društvom na fudbal ili basket, a programiranjem se, i ako ću da radim nešto, radiću za pare ili da bih doprineo nečemu, a ne da bih nekome dokazivao šta ja mogu.
A šta kažeš na to da tim malim eksperimentom doprineseš domaćoj i stranoj „softverskoj industriji“. Primera radi možeš da doprineseš nečijoj odluci za koju programersku platformu da se odluči. Recimo Crusader88 se sigurno još uvek pita šta pobogu ova dvojica trabunjaju i hoće li neko konačno da mi kaže čime da počnem. Otkud znaš. Možda ti jednog dana taj isti Crusader88 koji je otvorio kompaniju za razvoj igara u Srbiji dođe u firmu i zatraži da mu odradiš neku aplikaciju tipa neke baze podataka ili sl. Zar to nije „razvoj softverske industrije“? Usluga za uslugu ;) Naravno možda ipak nikada ne bude hteo da mu ti to odradiš jer si ga možda pre desetak godina pogrešno posavetovao čisto zarad sopstvene sujete. U tom slučaju najverovatnije neće biti ni njegove firme ;) pa nema ni buma „softverske industrije“.

holodoc
10.8.2006, 3:54
A što se tiče sportskog duha opet onaj problem sa „dovoljno“ stavkom. Niko nezna sve vezano za svoju struku pa naravno ni ja ni ti. Hoćeš li prvom čoveku koji se pojavi sa željom da mu radiš 3D engine reći da se pojavi za godinu dana kada budeš smeo da se potpišeš na „tome“ što ćeš napraviti samo zato što zbog par „trokoraka“ nikada nisi ni prišao razvoju 3D aplikacija.
Pa i on će da naplati PDV na svoj proizvod koji bude napravio, pa je na istom, a miša ću ja da mu otkupim ako je toliki problem jedan miš, koji uopšte nije beskorisna alatka i koju u krajnjem slučaju može nekom da uvalja i povrati pare.
Mali Mukica odluči da te poseti ponovo i vidi da li su ti izrasli prsti koje ti je „otfikario“ prošli put :) (Svima koji su se ponadali da će scenario da ide u pravcu „šut“ u glavu eto razočarenja :dzavo:) Sa zadovoljstvom ustanovljava da će imati na čemu da se iživljava ako i ovaj put zabrljaš. Naime, Mukicu muči to što bi hteo da mu odradiš aplikaciju uz pomoć koje će moći da evidentira svaki posao koji odradi pošto posao blago rečeno „cveta“. Naš mali Mukica je otkrio da je u zemlji Srbiji postao strašno unosan posao kopanje bunara pošto ispravne pijaće vode ionako nema. Dogovorite se vi oko toga šta i kako treba da izgleda i ti mu kažeš da dođe za par nedelja ali ovog puta bez alata :)

Posle tri meseca eto Mukice na vratima tvoje firme sav srećan jer si se konačno javio na telefon posle par meseci (jer znam i ja kako se mušterije izbegavaju a to se uči prvih par meseci na poslu ;)) i sedne pored tebe da prisustvuje svom prvom velikom koraku u „high-tech bunardžijskoj karijeri“. I dok se on tako kezi sav srećan ti prilaziš nekom bučuku od kutija i iz njih vadiš monitor, kućište i ostalu PC menažeriju. Mali Mukica te gleda malo nemo al’ ajd’ u sebi misli „profesionalac a i ne bi sigurno voleo da ga skratim za još koji prst“. Odjedanput ti mu kažeš da proveri da li je sve tu na mestu kako treba i na broju. Mali Mukica se nađe u čudu jer mu nije jasno šta u stvari treba da pogleda u toj hrpi plastike. Da ne ispadne seljak ko prošli put on odluči da te pita šta da pogleda. Tvoj odgovor naravno glasi opremu koja dolazi uz program jer se program koji si mu radio isporučuje isključivo kao OEM paket! Sada te Mukica naravno pita šta to znači a ti mu kažeš da svu tu plastiku mora da ponese. Naravno pošto plati i nju i program. I još kao gest dobre volje od firme dobiće besplatan Genius miš „sa električnim mikroprekidačima i high-precisiion točkićem koji je sa računarom spojen ultra brzim bakarnim provodnicima“ ;)

Sledeće čemu prisustvuješ je naravno :) fantastičan pogled u unutrašnjost katodne cevi svog monitora jer je jadni Mukica ovog puta zaboravio da ponese alat. Sa „oduševljenjem“ ustanovljavaš da nije zaboravio „svoj“ :dzavo: alat.

holodoc
10.8.2006, 3:55
Bottom-line. Dokle više sa tim nagađanjima podataka. Za tebe je možda mala stvar razlika između 75 i 100 evra ali nekome je to bitna stavka. Možda taj neko odluči već sutra da ode i u nekoj prodavnici kupi pomenuti proizvod a tek tamo ustanovi da si zaboravio PDV i ostala čudesa. Zamisli da si naveo cenu za WinXP Pro u koji nisi uračunao PDV i najverovatnije neki DVD rezač ili sl. Znam da niko nije u obavezi na ovom Forumu da daje tačne informacije ali ukoliko „ulepšavanje“ slike treba da služi samo kao protivargument onda se svaka informacija dotičnog u tom slučaju može smatrati dezinformacijom.

Što se tiče OEM pakovanja, stvar nije u tome što Windows dolazi u varijanti sa nekim „parčetom“ hardvera već u tome što ako već zahtevaš poštovanje nečije svojine onda trebaš da uzmeš u obzir i činjenicu da Windows ne bi smeo da se isporučuje uz „sitan hardver“ već samo uz nove konfiguracije računara. Naravno domaći prodavci se brzo dosete trika (čija je legalnost implementacije jako diskutabilna) i odluče da prodaju „štakore“ uz Win. No u ovom slučaju veći problem od „tih“ miševa koje bi otkupio predstavlja sam WinXP Home o kome sam rekao šta mislim u prošlom postu pa je miš ovde najmanji problem.
Jeste, Mukica koji tek počinje sa programiranjem je lud bez IIS-a I kojih to preko potrebnih funkcija ? U XP Home verziji sasvim lepo može da se odradi većina aplikacija, bez ikakvih ograničenja. Da neće možda VB odbiti da mu kompajlira projekat zato što koristi Home varijantu ?
Ako pod „većinom aplikacija“ podrazumevaš neke sitne aplikacije koje čisto par puta „projure“ kroz ODBC (ili nedaj bože fosilni DAO) i ispišu neke podačiće onda je sasvim OK jer Microsoft i sam kaže da je WinXP Home Edition namenjen igranju. Treba li da napomenem da nijedan programer ne može sigurno da gleda ko ovca u VisualBasic ili C++ a da izostane na „komforu“ kao što je podrška za mrežu i gomila, gomila gluposti koje nažalost život znače. Ne kažem da mi je potpuno jasno zašto gomila stvari koje ljudi koriste jednostavno ne radi na WinXP Home Edition-u. Daleko od toga. Znam da jednostavno ne rade. Da li je to zbog onih „75 evra“ nisam siguran ali kad malo bolje razmisliš „stojadin“ koji bi nekom taksisti služio za zarađivanje hleba košta bar deset puta više. Znači „Microsoft Zastava“:rofl: Pitam se pitam šta bi ispalo od ovog hibrida
Procenite sami ;)

holodoc
10.8.2006, 3:56
Što se tiče IIS-a da nisi možda mislio da sa Microsoft-ovom tehnologijom koristiš neki free softver. Šta ti bi? Recimo kombinacija Appacha i VisualBasic-a. Jesi li ikada probao ovako nešto? Moja preporuka je nemoj! I nemoj samo da kažeš da server nije važna stavka prilikom razvoja aplikacija (pa i za početnika) jer ogroman deo „tržišta“ odlazi na razvoj klijentskih web aplikacija. Ono, čovek ima nekoliko radnji i hoće recimo da putem neta prenosi dnevni pazar odnosno da „očita“ registar kasu i da sve to ima u okviru jedinstvene mreže. Sve to naravno povezano sa centralnom aplikacijom. Mogu da ti nabrojim bar deset firmi kojima sam radio ovakve klijentske aplikacije za njihove web servere zašta je naravno potreban IIS. I C++ naravno. Treba li da pominjem SQL servere i ostale gluposti i odoše i jetra i žuč i živci u PM sa sve PDV :rofl:
Tehnička podrška ne služi da te uči programiranju, nego da ti reši problem koji ti imaš sa njihovim softverom.
Tehnička podrška? Gde sam ja pomenuo tehničku podršku :)

Vidiš mogu i ja da „pretpostavljam“ ali to u ovoj diskusiji ne radim. U rečenici koju si citirao piše lepo „tehnička doprška“ i tako treba da stoji a od „zapevanja“ na temu programiranja toj devojci sa druge strane linije nije bilo ni pomena. Mukica se požalio da nema nekih stvari u WinXP Home-u koje je očekivao. Sigurno je nije pitao zašto ne može da sortira multidimenzioni niz sa pokazivačima na pokazivače stringova :)
I Pro varijanta je džaba kada se pogleda šta sve može i koliko para može da se zaradi radeći na toj platformi.

Amen to that!
Pa nek Mukica traži na drugom mestu ako ne veruje E-Bay-u. Meni je sasvim lepo stiglo sve što sam naručivao.
Različita iskustva. Čije li je isksutvo verovatnije da se ponovi u ostalim slučajevima u zemljici Srbiji? ;) Carinici izvinite :dzavo:
Jok more, onda bi me forum cenzurisao skroz, pa od pi*čke ne bi bilo ništa
Jesi probao? :)

holodoc
10.8.2006, 3:57
A na čemu li si ti ? Mislim da preteruješ malko... zar stvarno misliš da u MS-u rade Bogovi, a ne ljudi, pa da mogu tek tako da sakriju prikupljanje ličnih informacija i to od IT profesionalaca, ma daj... neko bi kad tad to provalio, a onda bi izbio skandal, jer to nije tako mala stvar i MS bi se našao na sudu, a ja se ne sećam da se to desilo.
A zar treba da budeš Bog da bi sakrio informaciju? Jesi li ikada čuo za RSA ili neki drugi napredniji algoritam šifriranja? Znaš li po čemu je poznat kilobajtni! RC4 algoritam ili bilo koji druge industrijske jačine? Imaš li blagu predstavu koliko je potrebno vremena (i resursa) da se dešifruje 1024-bitni ključ??? Za onoga ko ima ključ naravno samo par milijarditih delova sekundi. Za onoga ko ga nema i uz pretpostavku da je za obradu informacija potreban „grozd“-cluster računara koji sadrži bar trocifren broj jedinica potrebno je mnooooogo vremena. Ne bih da zalazim u statistiku ali sa sadašnjim stanjem razvoja tehnologije i u zavisnosti od konfiguracije cluster-a bilo bi potrebno sigurno par desetina ako ne i stotina godina.

E sad. Jednostavna matematika. Možeš li bar sada da mi odgovoriš na pitanje koje sam postavio (sada se ni ja više ne sećam kada) zbog čega je Microsoft-ova verzija „Hello world“ programa dugačka 165KB dok verzija DevC++-a proizvodi izvršni fajl dužine od oko 8-9KB. Kakve sve to „special-features-e“ MS verzija ima u sebi. Pretpostavi recimo da razlika od otprilike 150KB podataka predstavlja ko zna šta jer je nemoguće da ovolika razlika postoji između programa koji rade istu stvar na istom OS-u. U 150KB podataka (reci teksta) ne da može da stane kompletna lista tvojih bookmarka već može da se smesti kompletan fajl! Ajd na sve to dodaj 1024-bitnu enkripciju i moli boga da poživiš malo duže (jedno par stotina godina) kada bude prva MS-ova poruka dešifrovana ;)

Paranoici ovo je samo hipotetička pretpostvaka i ne mora da je tačna :) Ali ne mora da bude ni netačna. Da li je i ovde Molder umešao prste :)
Pa ti si prvi počeo da dramiš o tome kako MS skuplja podatke o tvojim seksualnim afinitetima, a ne ja. Ja sam samo rekao da čak i ako je tako, ne smeta mi.
Mešaš ono što MS DOBIJE od tebe i ono što MS UZME od mene. Tvoji registracioni podaci nisu isto što i lista moje omiljene „pornografije“ ;) jer su serijski i ostali podaci vaša stvar a moja „kolekcija“ samo moja stvar ;) Kontekst ;)
Eto, tako ti i treba kad hoćeš da znaš sve, pa ti se znanje rasipa. Ne ide tako, nego
Citat:
“File” -> “Save Page As...” -> “Save”
Pretpostavio sam da ćeš da se „upecaš“ ;) Fajl se zove „OK“ a ne opcija ;) Oćeš screenshot?

holodoc
10.8.2006, 3:58
E jeste, informacija na zvaničnom sajtu igre ne valja, al zato je tu holodoc koji nikad nije kročio u firmu koja je razvijala igru, da nam objasni kakav je njihov engine i kako su oni pravili igru Zanimljivo. Šta je sledeće ? Raskrinkavanje google zavere ?
E vidiš, holodoc se jednom davno naučio da ne veruje nikome ma koliko on izgledao „user-friendly“ već da „potera“ svoju guzicu i sam proveri činjenično stanje. Evo recimo, zamisli da te neko pošalje na auto pijacu da kupiš nekog polovnjaka. Na pijaci naletiš na nekog tipa koji prodaje „stojadina“ ili „golfa“ po jakoooo povoljnoj ceni. Pitaš lika koji ga prodaje a koji je inače obučen u neko fino odelce i sve u dvajes sa „malim Borom“ u ustima što tolko jeftin i kakve su mu karakteristike a on ti lepo kaže da nema potrebe da se sekiraš da je nov novcijat motor ubačen unutra i da je jedva prošo dvesta iljada. Zagledaš ti motor i unutrašnjost i izgleda stvarno dobro. Ajde misliš tip je pošten a i vidi se da poznaje struku jer ima ogroman kačket sa znakom Mercedes-a na glavi:rofl: Platiš sedneš u kola i odvezeš se čak do izlaza hale gde auto „kapitulira“. Kad izađeš iz auta ima šta i da vidiš. Sve od prodavca koji vežba manevar „come-about“ pa do izlaza delovi automobila :)

E vidiš. Prvo što bi ja uradio da krenem na takvu auto pijacu je da ponesem jedan magnet i macolu. Magnet čisto da se uverim šta je plastika a šta git a macolu da j***m majku i prodavcu i „stojadinu“!!! ;)

Nema to veze sa problemom u komunikaciji, već sa tvojim nepoznavanjem pojmova. 3D grafika, nije isto što i 3D igra koju pokreće 3D engine. Loptice u Zumi se kreću po 2 ose x i y, a ni u jednom trenutku ne skakuću (z osa) što će reći, za takvu igru nije potreban 3D engine. To što je grafika modelovana u nekom 3d programu, a onda prikazana kao 2D objekat, nikako ne čini 3D igru. Dakle, igra kao što je Zuma (u originalu) može da se napravi korišćenjem bilo kog 2D engine-a, bez problema. Kuglice mogu da se izmodeluju u 3D Max-u recimo, radi olakšavanja posla, ali iste bez problema mogu da se nacrtaju ručno. Dakle, to nije 3D igra i tačka.
Pošto vidim da možeš da ukapiraš tek kad ti se nacrta evo jednog kratkog tutorijala koji može da ti bude koristan kada budeš počeo da radiš svoj prvi 3D engine. Usput ovo je demonstracija tehnike koja se koristi i kod „Zume“ i kod bilo koje „Zuma-like“ igrice i valjda dovoljno „nacrtano“ objašnjenje zašto menadžeri nisu programeri ;) Kad ja moram da „palim“ MAX da bi nekom isterao lude bubice ;)

holodoc
10.8.2006, 3:59
Na prvoj slici treba da konačno demistifikujemo šta znači 3D look a šta znači 3D objekat. 3D look predstavlja ova pozadinska slika koja je urađena prethodno u 3Dstudio MAX-u pa je ovde samo iskorišćena kao background. O tome sam pričao kada sam rekao da 3D može da „simulira“ 2D izgled a da obrnuto ne važi. Kuglice na pomenutoj slici nisu 3D look već 3D objekti i iako se kreću kako sam kažeš po x,y osi imaju i z osu koju ti ne vidiš. Ovakav 3D objekat JE NEMOGUĆE simulirati čistim 2D engine-om. Nije bar do sada niko uspeo pa verujem da nisi ni ti.

holodoc
10.8.2006, 4:01
Na sledećoj slici postoji par slika koji trebaju da definišu šta sačinjava kuglicu. Osnovni termini su predstavljeni na slikama 1,2,3 i 4. Na slici jedan se vidi osnova celog 3D-a, sfera prikazana pomoću tzv. „vertex-a“ ili kako se još popularnije zovu „vertise“. Vertexi su ništa drugo do obične tačke u 3D prostoru tzv. Euklidovom prostoru (upamtite dobro ovaj naziv jer postoji još i levi i desni Dekartov, cilindrični, sferni i još neki specijalni). Na slici 2 su predstavljene tzv. „ivice“ ili „edges“ koje se dobijaju spajanjem dve vertise. Na slikama 3 i 4 predstavljeno je ono što u stvari nama treba za objašnjenje. Na slici 3 su predstavljena tzv. „lica“ (faces) ili kako se još nazivaju „trouglovi“ ili trinagli koji se dobijaju kombinacijom 3 tačke u prostoru što je po definiciji dovoljno da se u njemu formira ravan. Dva ili više lica čine poligon. O ovome svi pričaju kada pominju neki engine jer je veoma bitna stavka koliko poligona može da „potera“. O ovome ima specijalnog čitanja kao Low poly tehnike i sl. ali ovde nam to nije potrebno.

holodoc
10.8.2006, 4:02
Na slici 5 se vidi izrendan prikaz kuglice sa strane koja ide po kanalu koji se vidi na ravni na „podu“. Ovde u stvari treba da se simulira ta treća dimenzija koju površnim gledanjem nije moguće „videti„ u Zumi. U ovom prikazu obeležen je jedan poligon na sferi koji normalno ima na sebi nalepljen deo teksture koji ide preko loptice. Na slici 6 se vidi šta se dešava sa obeleženim poligonom kada se loptica otkotrlja. Poligon je promenio potpuno svoj x,y položaj ali i visinu ose z.

Na slikama 7 i 8 se vidi otprilike kako bi to izgledalo „odozgo“ u Zumi. Ono što ćeš ti videti u Zumi je kako to malo poligonče „tera“ deo teksture za koji je odgovoran. Na primeru koji sam ja izrendao ima malo manje poligona ali u suštini kod objekata koji su manji od ovog mog i potreban je manji broj. Naravno, pošto kuglice često zauzimaju veliki deo ekrana za tako nešto je potrebna 3D akceleracija a ne samo za efekte. Inače, onako izvođenje rotacija kuglica sa šarama kao što imaju „Zuma-like“ igrice nisu moguće u 2D-u.

holodoc
10.8.2006, 4:03
E sada pitam ja tebe da li i dalje misliš da ne poznajem termine 3D grafike. Izvini ako je ovo bilo malo šturo ali stvarno i ovaj tekst mi je oduzeo puno vremena a kamoli da još zalazim u detalje. To što ti ne vidiš kako je nešto odrađeno u 3D-u uglavnom može da provali klinac koji je odigrao bar desetak do dvadeset 3D naslova u svom životu tako da ni igranje igrica nije baš za potcenjivanje. Vidiš ponekad se isplati za neku stvar zanemariti „trokorak“ i baciti se na „casual“ učenje ;)

Lažeš, lažeš, a ko laže taj i krade
E vidiš kako se neko da veoma lako naterati da pročita tekst od početka do kraja;) A i nisam se baš nešto pretrgao oko pominjanja aplikacija u tom delu. Samo sam pomenuo primenu 3D-a u aplikacijama tako da taj deo slobodno možeš da zabatališ a posvetiš se ovom centralnom koji sledi kasnije. A inače zar ne misliš da bih bio malo retardiran ako bih pokušao da iznesem neku laž pored više od 4000 ljudi na ovom forumu zar ne ;)

Apel moderatorima da me ne banuju zbog ovolikog posta ali morao sam da eleiminišem neke nedoumice.

Pozdrav,dobro jutro i izvinjavam se za gramatičke greške kojih ima sigurno:)

bobi
10.8.2006, 12:51
Iako se ne razumem u engine i programiranje, mislim da je Marko u pravu.

Kuglice na pomenutoj slici nisu 3D look već 3D objekti i iako se kreću kako sam kažeš po x,y osi imaju i z osu koju ti ne vidiš. Ovakav 3D objekat JE NEMOGUĆE simulirati čistim 2D engine-om. Nije bar do sada niko uspeo pa verujem da nisi ni ti.
Ja ne vidim ovde zasto bi u programiranju, sto se tice ovog primera, moralo da se ide po Z osi. A i kuglice bih ja pre nazvao 2D objekatima, koji su renderovani u nekom programu, nego 3D objektima (cak ih uopste ne bih nazivao 3D objkatima).
Jer vidi, treba samo isprogramirati elipsoidnu putanju po kojoj ce da se krece prethodno izrendana animacija ove loptice, kojoj se cak napravi da se blago uveca kako pridje donjem delu ekrana (sa naravno alphom ukljucenom).
Pozadina bi se radila iz 2 layera, jedan bi bio suva pozadina (animirana blago ili ne, svejedno,) i ona munja kao drugi layer, koja bi bila uvek iznad loptice (moze i ona da bude izanimirana sa alphom).
I eto ti ruleta :)
Sad, kao sto rekoh ne razumem se u programiranje, ali mislim da ovo ne bi trebalo da bude neki problem.

Andross
10.8.2006, 16:17
Heh i ja bi reko da je Marko upravu.Ali momci ta vasa rasprava vec postaje besmislena i nece bas puno pomoci Crusaderu oko programiranja(mada ce razlikovati 2D/3D zezancije :kreza: ).Lepse bi bilo kad bi imala tema Marko_L vs. holodoc koja je pinnvana kao ring i ko pobedi dobije reputaciju ili nesto drugo.Pola teme je rasprava izmendju vas dvojice!!!!:n-cc2:

holodoc
10.8.2006, 16:59
Pa zar i ti brate (B)obi :)

U svakom slučaju drago mi je da se uključio još neko sa strane. Pošto sam sinoć napravio debeo zastoj sa poslom zbog onih postova ovaj put maksimalno skraćujem :)

Ja ne vidim ovde zasto bi u programiranju, sto se tice ovog primera, moralo da se ide po Z osi. A i kuglice bih ja pre nazvao 2D objekatima, koji su renderovani u nekom programu, nego 3D objektima (cak ih uopste ne bih nazivao 3D objkatima).

A bre bobi nemoj da me razočaravaš :) Kuglice nisu renderovane u nekom 3D programu već su „napravljene“ 3D engine-om (ili ako neki ljudi baš ne vole 3D rutinom ze handlovanje izlazne 3D grafike :D) pa su valjda zato i 3D objekti. Detaljnije o ovome u sledećoj stavki pošto si tu skoncentrisao dovoljno pitanja za jedan kvalitetan i sveobuhvatan odgovor.

Jer vidi, treba samo isprogramirati elipsoidnu putanju po kojoj ce da se krece prethodno izrendana animacija ove loptice, kojoj se cak napravi da se blago uveca kako pridje donjem delu ekrana (sa naravno alphom ukljucenom).
Pozadina bi se radila iz 2 layera, jedan bi bio suva pozadina (animirana blago ili ne, svejedno,) i ona munja kao drugi layer, koja bi bila uvek iznad loptice (moze i ona da bude izanimirana sa alphom).
I eto ti ruleta

Varijanta sa elipsoidnom putanjom bi bila odlična samo kad ne bi iziskivala da se u tom slučaju napravi par veoma krupnih kompromisa po pitanju krajnjeg izgleda igrice. Kao prvo, elipsoidan pristup animaciji kuglice bi normalno zahtevao da sve staze na svim nivoima u „Zuma-like“ igricama budu isključivo elipse ;) Primetićeš da u „Zumi“ a posebno „Tumblebugsima“ oblik putanje poprilično odskače od elipse od nivoa do nivoa. Znači, ideja o primeni elipse za pathfinding kuglica bi bila primenjljiva samo na ovom mom primeru gde je putanja elipsoidna ali nije primenjljiva ni u jednom drugom slučaju. Čak i u slučaju da se prihvati ideja kombinacije prerenderovane animacije kretanja kuglice za svaki nivo i svaku stazu ponaosob složićeš se samnom da je u tom slučaju potrebno previše posla prilikom razvoja jer bi svaki nivo zahtevao prethodno pripremljenu animaciju kuglica. Da stvar bude gora kod „Zume“ bi u krajnjem najneprofesionalnijem (čitaj: „fuš Deluxe“ slučaju) možda sve to bilo moguće i progutati ali recimo u „Tumblebugsima“ ili „Luxoru“ nikako.

holodoc
10.8.2006, 17:00
Na ovom mestu mi je drago što je neko pomenuo i alphu :) (a ko bi drugi nego glavom i bradom naš bobi :) )pa možemo da produbimo malo priču i na to zašto je uveličavanje kuglica pri dnu ekrana jednostavnim 2D skaliranjem no-no :) Za razliku od 3D gde su teksture za lepljenje na kuglicu već uveliko pripremljene (priprema se sastoji od najobičnijeg UV mapiranja) animacija koja bi se koristila kao „podloga“ za alpha otvore je ništa drugo nego obična 2D animacija nalepljena na ravan ili površ (ovde hoću da kažem da bi animacija koja je sakrivena iza alpha kanala trebala da bude ekvivalentna nekoj ravni koja na sebi kao teksturu ima pomenutu prerenderovanu animaciju). E sada problem nastaje u trenutku kada je potrebno zajedno sa otvorom alpha kanala skalirati i animaciju koja se nalazi ispod. Prvi problem je taj da 3D varijanta može mnogo bolje (zbog već pripremljene teksture koja je mnogo povoljnija za skaliranje) da sakrije nedostatke kao što su nazubljenja koja se javljaju zbog uvećanja koja 2D varijanta ne može tako lako da sakrije (posebno kada se ponekad u algoritmu za skaliranje kao rezultat jave veoma česte disproporcije). Sada će neko da pita kako je lakše uveličati nešto što je 3D od onoga što je 2D ili preciznije „2D 3D look“? Znam da ovo zvuči malo konfuzno ali pokušaću na malo lakšem primeru. Zamislite jednostavan školski globus. Sada na taj globus treba da nalepite kartu. Ako pokušate sa običnom kartom sveta koja odgovara dimenzijama globusa ubrzo ćete primetiti da nikako nije moguće takvu kartu nalepiti na globus bez ozbiljnog gužvanja i dobre „šutke“ :) jer se karta čini nekako previše „kockasta“ :) E sada, uzmite bilo koju tzv. „razvijenu“ kartu sveta (liči kao kontura Kirlathi fightera iz Wing Commandera :dzavo:) i obrežite je po spoljnim ivičnim linijama i pokušajte ponovo. Dobićete parče papira koje najblaže može da se poredi sa svime samo ne sa kartom sveta. Ako pažljivo prislonite ovu obrezanu verziju na globus (naravno pod uslovom da prečnik globusa odgovara „prečniku“ zemlje na karti) videćete perfektno uklapanje. Prva varijanta (ona sa gužvanjem) bi bila ekvivalentna već pomenutoj animaciji na običnoj površi dok bi druga bila sa UV mapiranom teksturom i specijalno prilagođena za „lepljenje“ na kuglicu (globus). Da skratim, 2D skaliranje se u ovakvim slučajevima skoro nikada ne radi jer mu postoji mnogo „lepša“ i (i ovo je jedna od najvažnijih stavki u game engine-u) BRŽA alternativa.

holodoc
10.8.2006, 17:00
Da se na ovom mestu samo još jednom dohvatim ove ideje sa „podanimacijom“ i alpha kanalima. Alpha kanali bi u ovom slučaju mogli teoretski da se iskoriste na dva načina. Jedan od njih je da se „ispod“ svakog alpha kanala sakrije po jedna animacija koja „prati“ otvor alpha kanala. E sada, zamisli da ti se na ekranu nalazi preko 200 kuglica od kojih ti je za svaku potrebna kopija (ne instanca) pomenute animacije. Ovakak sadomazohizam nad sistemom ne bi opstao ni sekundu kao prihvatljivo rešenje jer ga ne bi mogla da potera ni SLI konfiguracija a kamoli klasičan Pentium III na kome ove igrice rade odlično. Naravno postoji varijanta da se koristi jedna animacija po boji za ceo ekran ali ni to nije rešenje jer svaka kuglica na nepravilnoj putanji u datom trenutku ima svoj pravac (koji inače odgovara tangenti na kružnici u kojoj se centar „kuglice“ nalazi) pa ovako nešto ne bi bilo ostvarljivo ni za dve kuglice a kamoli 200 ;)

Tu dolazimo do najvećeg problema i uopšte razlike između načina na koji funkcioniše game-engine i recimo MAX. Prva stvar je prilagođena za brzinu dok je druga prilagođena kvalitetu prikaza. Siguran sam da bi se bobi složio da i u Max-u specijalni modifier-i kao što je Mesh Smooth izazivaju pravu malu glavobolju ako se koriste sa iteracijom većom od recimo 2 ili 3. E sada, treba samo zamisliti šta bi se desilo kada bi neko ovakav model ubacio u game engine! Katastrofa!!! Frame rate animacije bi se najverovatnije izražavao jednocifrenim brojem (ako i toliko) a treba zamisliti šta bi se sa dotičnom scenom desilo da se ubaci još jedan isti takav objekat. Naime, engine ne može da čeka sat vremena da se neka scena izrenderuje, kao što je to slučaj sa MAX-om, već mora da bude optimizovan i spreman da „ispljune“ bar 25 frejmova u svakoj sekundi! E tu se prave kompromisi. Zato u Maxu postoje i modifieri koji se specijalno koriste za razvoj igara i tzv. „Low-poly“ tehniku modeliranja. Primera radi, pomenuću <4S Suqad>, koji već uveliko priprema sopstvenu verziju fightera za za prijavu na Void server (ovo valjda nije klanska tajna jel bobi :dzavo:). Uslov Void-a je da fighter mora biti modelovan sa maksimalnim brojem poligona od 3000 komada. Siguran sam da bi bobi mogao na ovu temu da kaže mnogo više nego ja pa zato prestajem da balavim više o ovome.

holodoc
10.8.2006, 17:01
Krajnji zaključak je da sve veći broj ljudi koji se bave razvojem igara spoznaju prednost 3D grafike kada je u pitanju brzina čime nešto treba odraditi u game engine-u. Interesantno bi na ovom mestu možda bilo porediti 2D i 3D grafiku kao razliku između osobina Photoshop-a i Adobe Illustratora. Dok je Photoshop kao stvoren za rastere ima jednu jedinu manu da neke stvari jednostavno ne može da odradi a koje je moguće veoma lako i brzo uraditi u svetu vektora. Znači, ono što Photoshop ne može da uradi nadopunjuje Illustrator. Pa ne bi Adobe džabe u poslednje vreme forsirao PS i Illustrator u okviru jednog paketa. Da ne mora ovo da bude jedini argument reći će vam svako ko je radio nekada nešto ozbiljnije u ovim programima (primera radi neku knjigu ili billboard i sl.). Ajd da vidim da je neko radio billboard od 3x2 metara a da recimo nije koristio vektorski logo. Pravu moć je moguće spoznati samo ako se pravilno koriste mogućnosti i jednog i drugog programa. Oko toga se u suštini vrti i ova kompletna fama oko toga 2D ili 3D ;)

Upravo sada vidim koliko sam skratio ovu moju priču :dzavo:

bobi
10.8.2006, 17:03
Ej' bre, pa nisam ja igrao tu vasu Zumu :) i ne znam kako se kuglice ponasaju, ni dali su 3D objekti (ako su na fazonu kugli poput u igrice Balance, onda jesu 3D)
Ja sam mislio da si onu sliku dao cisto kao primer, da pokazes da je nemoguce i prosto se nisam slozio sa time.

bobi
10.8.2006, 17:36
Heh i ja bi reko da je Marko upravu.Ali momci ta vasa rasprava vec postaje besmislena i nece bas puno pomoci Crusaderu oko programiranja(mada ce razlikovati 2D/3D zezancije :kreza: ).Lepse bi bilo kad bi imala tema Marko_L vs. holodoc koja je pinnvana kao ring i ko pobedi dobije reputaciju ili nesto drugo.Pola teme je rasprava izmendju vas dvojice!!!!:n-cc2:
Sto bre, ovako je bas zabavno :dzavo: , a mnogi mogu da nauce nesto korisno....
Sto se tice ringa, mislim da niko ne bi bio pobednik, posto su obojica tvrdoglavi, sto nama moze da donese samo finansisku korist ukoliko se odlucimo za izdavanje tomova i tomova knjiga :)

bobi
10.8.2006, 22:08
Konacno da sam uspeo da natenane procitam ceo odgovor...


Tu dolazimo do najvećeg problema....
Ej moj braticu... :)
Naravno da engine ne moze da sazvace meshsmooth cak ni na itteration jedinici.
Pokusacu ovde da objasnim stvari koje ja znam a ticu se 3D game dev-a (mozda nekome bude od koristi).
U principu max je najzahvalniji od svih programa(i to odgovorno tvrdim) za modelovanje 3D objekata koji trebaju da udju u engine. Pre svega imamo sjajne edit/poly alatke koje nam omogucavaju da bez problema izmodelujemo (pod uslovom da znamo dobro da modelujemo) koji god objekat da zamislimo.
Najbanalnije...

Modeling:
Krenes od kocke, seces je, izduzujes, pravis nove poligone, od njih pravis jos novije poligone, sve dok dodjes do cifre (recimo 3000 poligona (mnogo puta je to i manji broj (recimo daju ti da za svecnak iskorists 100 poligona, sto je jako tesko)).
Elem, nizes tako poligon do poligona dok ne dodjes do cifre koju ti je programer odredio.
Hint:
Kazu da je bolje prvo raditi hi/poly (model sa svim potrebnim detaljima) pa tek onda radis lo/poly. Na primer, trebas da izmodeluje Konana... uzmes odradis ga skroz u hi/poly fazonu (plus moze da udje u FMV sekvence), pa zatim njega drzis u max-u i krenes da radis lo/poly preko ovoga.
Slozices se da je ovo sjajan hint, her tako mozes da dodas i par detalja koje ti ovako ne bi pali na pamet.

Unwrap:
Nakon sto se izmodeluje doticni 3D objekat, treba da se urade i teksture. Unwrap je sjajna stvar za game dev, zato sto omogucava da se cela mreza poligigona razvije na jednoj slici, sto nam omogucava da imamo potrebne teksture za 3D objekat u samo jednom fil-u t.j jednoj slici.
Hint:
Za detaljisanje objekata najbolje su, kazu, normal mape (nesto poput bumpa, s' tim sto bump ima samo dve informacije o visini (belu i crnu boju, kao i opacity), a normal mape imaju po nekoliko informacija koje se ticu osim visine i dubine, i sirine, a za dobivanje tih informacija ne koriste samo crno-belu, vec nekoliko boja)

To je to.
Iako nemam realnog iskustva (praksu) u modelovanju objekata za neki 3D engine, vec imam nekoliko njih spremljenih.
Nadam se da je nekome makar malo koristilo ovo pojasnjenje oko game dev-a u max-u.

Marko_L
10.8.2006, 22:45
Ja nažalost nemam toliko vremena kao holodoc (biznis, hebi ga), tako da ću ovaj put preskočiti citiranje po postovima, a i nema potrebe za tim, jer... holodoče, čoveče, ne zapetljavaj se više kad pojma nemaš o čemu pričaš. Samo bre skakućeš sa teme na temu i lupetaš. Neki od tvojih bisera su da je CNN korumpiran (heh, pa ako Popcap može da ih potplati šta li tek rade one veće kompanije koje vrte milione i milijarde... da li to onda znači da je prodaja AAA naslova uveličana 10 puta ? :)), da Popcap laže o broju downloadovanih primeraka i engine-u u kome su radili igru (samo ne znam s kojim razlogom), da MS skuplja podatke o tebi (da, verovatno su ludi za tim da saznaju šta neka srbenda holodoc voli od pornografije)... i te stvarčice baziraš na čemu ? Na tvojim predpostavkama da je to tako, bez ijednog relevantnog dokaza. Dakle, CNN nema pojma, Popcap nema pojma, MS su špijunska organizacija, a zamisli, sve je to raskrinkao jedan holodoc :tapsh:
Druga stvar, one priče sa Mukicom i seckanjem prstiju pretvori u jedan lep sicilijanski roman, umesto što baljezgaš ovde po forumu. Ja sam naveo primer kako sa relativno malo ulaganja (pod relativno malim ulaganjima smatram sredstva koji se mogu vratiti od 1-2 odrađena posla) može da se uđe u svet programiranja, a to što ti karikiraš i tražiš dlaku u jajetu (nije 75 nego 90 evra, Home verzija je neupotrebljiva, za započinjanje programiranja treba prodati pola organa i slično...) je tvoj problem. Jeste, možda nekome razlika od 20 evra prestavlja nepremostiv problem, ali onda taj ne treba ozbiljno da se bavi programiranjem (početnik koji hoće da uči može da uzme i pirata, niko mu neće zameriti), jer, budimo realni, to je cifra koja je smešna u odnosu na to koliko se može zaraditi samo jednim odrađenim poslom. Isto tako karikiraš kada pričaš o Home i Pro varijanti Windowsa. Jeste tačno da je Pro verzija potpunija i bolje "opremljena", ali daleko od toga da je Home verzija neupotrebljiva za rad (naravno, ukoliko umeš da radiš). Ja sam lično čoveku (koji je zbog cene uzeo Win XP Home za svoje mašine) napravio klijent server aplikaciju koja opslužuje 5 poslovnica i koristi sopstveni server, i zamisli, sve to radi savršeno. Uvek kasnije ukoliko osetiš ograničenje, možeš da pređeš na Pro varijantu... a dotle sasvim lepo možeš da radiš i sa Home verzijom i zaradiš nešto. Što se tiče nabavke VS 6.0 preko E-Bay-a, ja to dadoh kao primer kako se može doći do legalnog alata za male pare... uvek možeš da pazariš VB.NET za 100$, ili skineš besplatan VB.NET 2005 Express, ili... povoljnog izbora ima, i sve su to cifre koje se jako brzo vraćaju.

Marko_L
10.8.2006, 22:45
Treća stvar, što se tiče rasprave o tome da li je bolji VB ili C++, šta tu ima da se priča. Ja nigde nisam osporio da je C++ u nekim situacijama brži, i takođe u određenim situacijama manje ograničen od VB-a, i opet u nekim situacijama pruža bolju kontrolu nad sistemom, a najveća prednost mu je portabilnost na različitim platformama i to je ok, ali to ne znači da je VB neupotrebljiv za poslovne aplikacije, kao ni za igre... naprotiv VB je veoma moćan i prilagodljiv alat koji nudi brz razvoj, lakoću učenja i mogućnost korišćenja 3rd party komponenti i lib-ova (pa i onih pisanih u C++-u, što po nekom mom iskustvu, ma šta ti pričao, radi veoma dobro). To što si ti toliko zapeo sa pričom da je C++ mnogo bolji izbor, nego li VB su samo tvoji kompleksi (valjda si od onih koji smatraju da je sve što u sebi ima BASIC lame, ali zato ako koristiš C++ onda si elitni programer), a nikako realno stane stvari. Bolji izbor je onaj koji ti omogućava da završiš posao u kraćem roku i uz minimalne napore, pa bio to VB ili C++. Jeste, tačno je, ako u budućnosti vidite sebe u UbiSoftu, odmah se bacite na C++, a ukoliko želite da se bavite programiranjem, radite ozbiljne poslovne aplikacije u kratkom roku, i želite da odradite svoju igru, pa makar onda bila i 2D klon Zume, možda treba razmisliti o pružanju šanse VB-u ili Delphi-ju. Uostalom, već 5-6 godina se profesionalno bavim programiranjem u VB-u, i za to vreme sam odradio brdo aplikacija (od sitnih tipa zabavnog softvera, pa sve do većih poslovnih sistema koji obrađuju više od 100 poslovnica i obrađuju gomilu podataka) i VB mi još nijednom nije zakazao, niti sam došao u situaciju da nešto ne mogu da uradim. A usput, Jurassic Soft trenutno radi i na jednoj igri (ne bih o detaljima još uvek), pa kad bude spreman demo, onda ćemo da pričamo o tome kakav je VB u game dev-u, o čemu se uostalom i priča u ovoj temi. Ja sam za sada prezadovoljan performansama i zbog toga uopšte i pričam na ovoj temi da ne treba po defaultu odbacivati VB. Jeste tačno da VB nije toliko portabilan, i da se njime rade aplikacije za Win platformu, ali imajte u vidu da Win platforma zauzima 95% svetskog tržišta, tako da to i nije neki hendikep.
Četvrto, ja tek sad vidim da ti Zumu izgleda nikad nisi ni video. Ona slika koju si okačio veze nema sa igrom. Naime, ona žabetina na sredini koja se rotira je obična bitmapa bre, sa pogledom odozgo pod 90 stepeni i bilo bi malo glupo da loptice i okolina budu 3D. I ako malo bolje pogledaš, videćeš da su loptice iste veličine na bilo kom delu ekrana i nema govora o trećoj dimenziji. Dakle, to je za mene 2D igra, pa nek je korišćeno sto hiljada 3D Max-ova za izradu grafike. Doduše, lepo je što si se raspisao, jer će neko možda i da nauči nešto o 3D grafici, ali za Zumu nisi u pravu. Ona je 2D igra koju tera 2D engine.

Andross
11.8.2006, 2:32
Evo opet se slazem sa Markom.VB je dosta upotrebljiv za poslovne aplikacije!Tu je konza!!!Eto vec sam sa VB6 sklepao multimedijalni plejer sposoban da pusta muziku i filmove!Sto je tice C++-a tu je konza za igre!

priest (of_the_moon)
11.8.2006, 2:49
Koliko vremena potrošenog za čitanje...

Broj dimenzija Zume:
Našao sam demo dotične na nekim diskovima za skupljanje prašine, i u igri se ne koristi tri-de grafika. Postoji opcija u meniju "3D hardware acceleration" ali je to u stvari DirectDraw... Kada se u sistemu isključi 3d akceleracija igra radi sasvim normalno, ali ako se isključi i DirectDraw, ta njihova "hardverska akc." je nedostupna (razlika je u tome da se kuglice ne rotiraju, ne senče i ne postoje neki particle efekti). Znači engine igre je odrađen u Win32 GUI-u uz DirectDraw (i DirectSound, nebitno).

Odakle početi:
Tja, pisalo se već o tome, pa ću ovde biti kratak...
Nikako ne bih preporučio da jedan osnovac, koji je do sada najviše znao da instalira prozore, uzme da uči C++. Doduše, ukoliko mu prirodne nauke idu od ruke, mogao bi samo da proba, ali bez previše opterećivanja i nerviranja "ako ne radi".

Knjige vs Tutorijali:
Ako je sadržaj kvalitetan, i jedna i druga solucija su sasvim ok, a možda bi najbolje došla neka kombinacija.

Nemesis
11.8.2006, 3:18
Ljudi (odnosi se na Holodoc-a i Marka_L) vi zaista imate puuuno vremena!!! :D Svako vece se pojavi po jedna nova stranica. Ne stizem ni da procitam sta ste sve napisali. Koliko je samo trebalo vremena da se to sve i napise? :a_whistli

LM, da vam malo kvarim "zabavu" imam jednu malu repliku za ANDROSSa...
Evo opet se slazem sa Markom.VB je dosta upotrebljiv za poslovne aplikacije!Tu je konza!!!Eto vec sam sa VB6 sklepao multimedijalni plejer sposoban da pusta muziku i filmove!Sto je tice C++-a tu je konza za igre!

Sto volim "konza" argumente!
Nije VB losh, ali ni u ludilu ne moze da se poredi sa Delphijem za poslovne aplikacije. Ja sam silom prilika morao jedan program da uradim u VB i trebalo mi je mnogo vise vremena nego da sam radio u Delphiju. A i funkcionalnost aplikacije je bila na mnogo manjem nivou. Ako vec koristimo termin "konza" onda je VB konza :D za pisanje skriptova za Word i Excel i tu mogu da se urade zanimljive stvarcice. (BTW, imam jedan program za knjigovodstvo u Excelu :kreza: naravno sa skriptovima u VBu)
A sto se tice igara ne doimira C++ zato sto je toliko dobar, vec zato sto je postao nepisan standard. Ja sam prvo radio u Delphiju a na C++ sam presao samo zato sto je skoro sva dokumentacija i dodatni materijali pisana prvenstveno za C++. Bas zbog "zurke" instaliranja DirectX-a pod Delphijem sam i odustao od ovog jezika za pravljenje igrica.

holodoc
11.8.2006, 3:19
#i n c l u d e <i o s t r e a m >

i n t m a i n ()
{
s t d :: c o u t << "I rest my case!\ n ";
}

Andross
11.8.2006, 11:58
Sto ne iskoristi using namespace std; ???:kreza:
@Nemesis: Nisam isprobao Delphi tako je meni za GUI VB konza(nisam jos drljao po Qt Designeru koji je za C++).A iz price slutim da je delphi podjednako(ako ne i bolji)ko VB.Samo me nervira proleti 2005...

M.Silenus
11.8.2006, 12:22
Pitam se šta li sada misle oni koji koriste WinAPI , MFC , GTK+ i slične c-ovske biblioteke za GUI.
Pada mi na pamet ono , kako se lovi slon :
Programer:
Hvata slona po sledećem algoritmu:
a) otići u Afriku
b) početi od Rta Dobre nade
c) ići sa kraja na kraj kontinenta (lijevo i desno), krećući se postepeno ka severu
d) u svakom prolasku s kraja na kraj kontinenta:
- uhvatiti svaku životinju koju ugledate
- uporediti njene osobine sa osobinama nekog poznatog slona
- zaustaviti se kada se detektuje podudaranje
- u protivnom nastaviti dalje.
Iskusni programer:
Pre nego što primeni opisani algoritam, postavi jednog slona u Kairo, kako bi bio siguran da će se algoritam sigurno završiti.
Programer u C-u: radi sve što i programer, ali puzeći na kolenima.

Crusader88
11.8.2006, 15:26
Au ljudi malo sam offline i, mnooogo postova ipak je to sto svi pricate poucno ali malo previse za moje "znanje" c++, nabavio sam visual studio 6, i knjigu uz njega(uzeo sam od druga)
knjiga je "Korak po korak" , microsoft visual studio basic 6 za profesionalce...:rofl:
ovo zadnje me je bas nasmejalo ali tu ima samo o visual basicu a nema za c++ kao za aplikaciju.:confused:
a knjiga kaze " ... naucice te da radite sa active x kontrolama, opcijama komppajlera....

Crusader88
11.8.2006, 15:33
posto razmisljam da upisem smer softverski inzinjering, zanima me nesto ima li ikakve razlike u smeru u novom sadu i nisu, posto moj drug koje je to sada upisao nisu tvrdi da ima.
A za PMF ne znam to je ipak veoma tezak fakultet ako se na varam a ja bas i ne volim matis( iako ga znam) nekako smaraju te brojke, kad bih imao cilj kao da napravim nesto to smaranje bih prevazisao.
tako da drafi programeri imam jos nesto manje od godinu da na da se odlucim sta da upisem
:paranoia: :paranoia: :paranoia: :confused:

Crusader88
11.8.2006, 16:42
Posle jednocasovnog temeljnog sumiranja postova oko programiranja i pravljanja igara, naisao sam na par linkova
iiiiiiiii....(moj rezime o prepucavanju) znaci ima dosta dobrih resenja za programiranje, delfi za kancelarijske alatke i td, vb(ili bv) za sve i svasta, c++ najvise za igrice.
i odlucio sam se za.............................C++...jeeee:tapsh:
hvala hvala, sala na stranu znaci za programiranje i igrice :debian c++(link molim)
i neki free(open source) endzin kao irrlicht, i sta jos treba osim
1.strpljenja
2.strpljenja
3.mnogo matis
4. i jos matis
5. i hijade tutarijala
:a_whistli

holodoc
11.8.2006, 17:01
Sto ne iskoristi using namespace std; ???:kreza:

Iz jednostavnog razloga što Microsoft Visual C++ do verzije 6 ne ispunjava u potpunosti standard kojim je definisan sam C++ pa bi u slučaju da se ovaj moj navedeni kod "nadogradi" sa "using namespace std;" kompajler tipa MS Visual Studio 6 prijavio grešku zbog nepostojanja klase koja treba da se "povuče" iz standardnog zaglavlja.

Ovo je klasičan problem u MS C++-u i jedino rešenje nažalost predstavlja eksplicitno navođenje header-a. Zbog toga ono pridodato "std::" ispred "cout-a" ima svoj razlog ;) Koliko je meni poznato ovaj bug je ispravljen u jednoj od .NET verzija ali nisam trenutno siguran u kojoj konkretno.

Sa druge strane, svi ostali kompajleri nemaju problema sa ovom stavkom tako da za one koji koriste neki noviji .NET MS Studio, DevC++ ili Borland "using namespace" deklaracija bi radila odlično.

holodoc
11.8.2006, 17:28
debian c++(link molim)

Nisam baš siguran da ovako nešto postoji :) Ali zato postoji DevC++ ;) koji možeš, kao što sam već na par mesta napomenuo, da skineš sa http://www.bloodshed.net/dev/devcpp.html.

Crusader88
11.8.2006, 19:25
citat "debian c++(link molim)" :boodala: moja greska. moraj ja jos mnogo da:icon_stud

EclipsE
11.8.2006, 21:25
Iz jednostavnog razloga što Microsoft Visual C++ do verzije 6 ne ispunjava u potpunosti standard kojim je definisan sam C++ pa bi u slučaju da se ovaj moj navedeni kod "nadogradi" sa "using namespace std;" kompajler tipa MS Visual Studio 6 prijavio grešku zbog nepostojanja klase koja treba da se "povuče" iz standardnog zaglavlja.

Ovo je klasičan problem u MS C++-u i jedino rešenje nažalost predstavlja eksplicitno navođenje header-a. Zbog toga ono pridodato "std::" ispred "cout-a" ima svoj razlog ;) Koliko je meni poznato ovaj bug je ispravljen u jednoj od .NET verzija ali nisam trenutno siguran u kojoj konkretno.

Sa druge strane, svi ostali kompajleri nemaju problema sa ovom stavkom tako da za one koji koriste neki noviji .NET MS Studio, DevC++ ili Borland "using namespace" deklaracija bi radila odlično.

pa sto ne rece ranije, ja se mucim da kompajliram obican primer helloworld i koristim using namespace std a on prijavljuje gresku....

Crusader88
11.8.2006, 22:21
naleteo sam na ovaj sajt http://www.freebyte.com/programming/cpp/
i ima sve i svasta, e pa kad bi neko mogao da mi kaze sta bih mogao sve da skinem pocev od enzdina do ....
moze i neki drugi sajt posto za koji dan idem do prijatelja koji ima dosta brzu konekciju da skidam nesto.

Andross
11.8.2006, 22:35
Programer u C-u: radi sve što i programer, ali puzeći na kolenima.
Eh ovo bas nisam razumeo pa ako bi mogao da pojasnis.

EclipsE
12.8.2006, 1:14
imam jedno pitanje

#include <iostream>

int main()
{
std::cout<<"HEY, I'm alive! Hello World!\n";
return 0;
}

Vidite li ovo?? Zasto je jedan prost primer u c++-u velik 225 kb?

holodoc
12.8.2006, 2:05
Ne u C++-u već u Microsoft Visual Studio verziji 6 :)

Pitanje koje si postavio je veoma interesantno a da o izloženom problemu postoji i par teorija zavere svedok je i jedan post u ovoj temi :) Primera radi, izvršni fajl dobijen kompajliranjem istog koda u DevC++-u velik je samo 18,8KB. Pitam se pitam šta stane u onu razliku od skoro 200KB?

Možda gomila instrukcija koje rade nešto što niko od njih nije tražio. Primera radi, pogledaj dobro tvoj kod i reci šta misliš da nije ok. Bez obzira da li se na kraju tvoje main() funkcije nalazi "return 0" ili ne izvršni program u DOS promptu će i dalje da ti ispiše poruku "Press any key to continue". Po standardu nijedna aplikacija koja vraća vrednost ne bi smela da bude prekinuta nečime što je svojevolja kompajlera jer nigde u tvom programu ne postoji eksplicitni deo u kome ti lično programiraš deo koji će da čeka pritisak tastera. Takođe ovo može da bude veliki problem ako jedan program poziva drugi eksterno recimo preko operativnog sistema i ovaj drugi treba da vrati povratnu vrednost.

Čisto još jedan od bisera MS-a :)

priest (of_the_moon)
12.8.2006, 2:52
pa sto ne rece ranije, ja se mucim da kompajliram obican primer helloworld i koristim using namespace std a on prijavljuje gresku....
Zato što grešite, ovaj grešite negde... ili imate neki šlogirani VS6 (da ne kažem nešto drugo)...

Ne u C++-u već u Microsoft Visual Studio verziji 6 :)
Kada je toliko loš :), zašto je onda toliko i popularan? Ok jeste da MS nikada nije preterano mario za resurse računara, ali na to smo se već navikli :).

Primera radi, izvršni fajl dobijen kompajliranjem istog koda u DevC++-u velik je samo 18,8KB. Pitam se pitam šta stane u onu razliku od skoro 200KB?
Recimo, podaci za debagovanje i još neke sitnice koje su uključene po defaultu.
Ako hoćete mali exe, pretražite malo net, ima milion sajtova o tome, kao što su
http://web6.codeproject.com/tips/aggressiveoptimize.asp?df=100 i
http://www.catch22.net/tuts/minexe.asp .

Bez obzira da li se na kraju tvoje main() funkcije nalazi "return 0" ili ne izvršni program u DOS promptu će i dalje da ti ispiše poruku "Press any key to continue".
Da, kada se pokreće iz VSa, ali kada se poziva samostalno (tj. iz explorera) neće se zaustaviti sa tom porukom već će raditi "kako mu je rečeno".

Nemesis
12.8.2006, 3:07
...
Vidite li ovo?? Zasto je jedan prost primer u c++-u velik 225 kb?

Pitanje:
Da li si izabrao empty project ili si koristio i MS "carobnjake"?

Pitanje2:
Da li je rec o debug ili release verziji? :D :D :D

EclipsE
12.8.2006, 3:10
stvarno je glup ovaj Microsoft Visual Studio 6
sad ne mogu ni taj projekat da kompajliram

LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16

ma pricajte sta hocete, al VB6 konza

holodoc
12.8.2006, 4:05
Zato što grešite, ovaj grešite negde... ili imate neki šlogirani VS6 (da ne kažem nešto drugo)...

I u čemu bi bila ta "naša" greška ovde:confused: Problem sa "using namespace"-om i "std" zaglavljem je opšte poznat u verzijama Microsoft Visual C++-a od verzije 6 pa nadole. To je i uobičajena početnička greška kada se C++ kod kompajlira u njima. Ovaj problem, kao što sam već rekao, je ispravljen u novijim .NET verzijama i u njima je sasvim lepo moguće kompajlirati kod i sa korišćenjem "using namespace" deklaracija.

Kada je toliko loš , zašto je onda toliko i popularan? Ok jeste da MS nikada nije preterano mario za resurse računara, ali na to smo se već navikli

Greška u kucanju:( Trebalo je da stoji "Microsoft Visual C++ 6" umesto "Microsoft Visual Studio 6". Ispravljam se jer greška nije bila namerna već izazvana umorom :( Inače, nemam ništa lično protiv Microsofta niti MS C++-a 6 . Da je takav slučaj ne bih ga ja lično koristio :) Na nove .NET verzije sam još uvek pomalo alergičan a i ima i još par stvari koje mi se ne sviđaju i zbog čega ne prelazim još uvek na .NET.

Recimo, podaci za debagovanje i još neke sitnice koje su uključene po

Ovo je meni lično sve već poznato ;) ali ću sada da te pitam da li ozbiljno misliš da sve navedeno zahteva čak jedanaest puta više mesta od veličine samog programa a veličina tih "podataka" se povećava skoro eksponencijalno sa povećanjem programa :confused: Uzmi u obzir da je u onih DevC++-ovih 20KB smešteno sve od stvarnih funkcija koje su potrebne za rad programa. Pretpostavljam da je ista stvar minimalno smeštena i u MS verziju jer sigurno DevC++ kompajler ne proizvodi toliko drugačije instrukcije od onih koje proizvodi MS kompajler kada je u pitanju isti posao :)

E sada za build i release verzije možda znamo ja i ti i još poneko ovde ali se kladim da je veoma malo ljudi koji su tek počeli sa programiranjem došlo u situaciju da podešava kompajler:icon_scra Takođe mislim da dobar deo softvera koji izađe iz "domaće" (pa i strane) MS Studio furune uopšte ne izlazi u release varijanti jer većina tutorijala i knjiga ovu stavku (podešavanje kompajlera) vešto izbegava. Zato nije ni čudno da većina ljudi i ne traži rešenje za problem za koji nezna ni da postoji. Šta tek reći kada se radi o aplikacijama koje su velike po nekoliko megabajta pa par stotina KB ili čak MB nije moguće ni primetiti ;) Inače, release varijanta "Hello world" programa je "teška" takođe oko 60-ak KB dok je u DevC++-u podešavanjem kompajlera moguće izvesti da njegov "Hello world" iznese samo 8-9KB! Razlika je opet ogromna :)

Znači stavka i dalje ostaje da mislim da je preko 1000% prostora od osnovnog dela aplikacije previše za čuvanje čistih debug informacija i ostalog đubreta ;) Možete me smatrati paranoikom ali eto :)

holodoc
12.8.2006, 4:08
Da, kada se pokreće iz VSa, ali kada se poziva samostalno (tj. iz explorera) neće se zaustaviti sa tom porukom već će raditi "kako mu je rečeno".

Pošto nemam vremena da ulazim u detalje oko problema sa povratnim vrednostima funkcija i eksternim pozivanjem programa i uopšte na koji sam konkretno deo mislio (jer se bojim da bih se ponovo raspisao zašta definitivno nemam više vremena a vidim da sam ipak "zbaljezgao" ovde zbog brzine pa i nije baš razumljivo:)) reći ću jednostavno da je ovo sa "Press a key to continue" i vezano za vreme rada u samom Studiu-u. To mu i jeste mana! Problem nastaje kada u nekom delu aplikacije recimo dođe do pozivanja nekog programa (recimo konzolnog tipa koji isto tako može da bude rađen u C++-u). Kada se pozvani program završi uglavnom treba da vrati neku povratnu vrednost programu koji je izvršio pozivanje. Problem nastaje u trenutku kada aplikaciju treba "isprobati" a programer ustanovi da se njegova povratna vrednost "zaglavila" na glupoj "Press a key to continue" poruci :)

Primera radi DevC++ to radi odlično jer radi upravo "tačno šta mu se kaže":) pa ponekad dođem u situaciju da njega preporučim početnicima "iznad" MS-a :) Nažalost, MS ima MFC koji je za početnike ipak MUST :)

Toliko za sada jer već počinjem polako da vidim duplo a nažalost nije od alkohola :)

Pozdrav :ciao:

holodoc
12.8.2006, 4:11
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16

Odakle si sada dobio ovu poruku:confused: Nadam se samo da je nisi dobio u "Hello world" programu :)

Jesi li to probao da kompajliraš neki poveći gotov source?

ma pricajte sta hocete, al VB6 konza

:) Jel to hoćeš opet da "flejmuješ" temu :)

EclipsE
12.8.2006, 4:44
Odakle si sada dobio ovu poruku Nadam se samo da je nisi dobio u "Hello world" programu

jesam

sad nece nista, skinuo sam neke sorseve sa www.planet-source-code.com i nece :confused:

Jel to hoćeš opet da "flejmuješ" temu
ne, ali kad ce taj 3d engine?? bar napisi neki tutorial :a_bleh:

Marko_L
12.8.2006, 9:02
Hehehe, ja izgleda bolje da se ne javljam na temi :) Dakle, i bez mene ste uspeli da dokažete da C++ možda i nije najbolje rešenje za jednog početnika. Ako je toliki problem napraviti "Hello World" programče, kako li će tek dalje. Inače, ovo je genijalno... nateraste dečka da uzme C++, a onda ste počeli da mu pričate o problemima sa kompajlerom i veličinom fajla :)
Uzgred, "Hello World" program u VB-u izgleda ovako
Msgbox "Hello World"
i kompajliran fajl zauzima 16KB, što je mnogo bolje nego pomenutih 60KB, i radi bez ikakvih problema na svim Win platformama, dakle VB vaistinu konza :):):)

holodoc
12.8.2006, 12:53
Polako bre čoveče! Tako kako si ti počeo ne počinje nijedan ozbiljan početnik u bilo kom programskom jeziku! Pogledao sam sajt čiji si link dao i sve što je dato tamo je namenjeno isključivo naprednim i već pomalo iskusnim korisnicima. Pa ne misliš valjda da je prva stvar koja se radi u nekom programskom jeziku implementacija RSA algoritma ili embedovanje exe fajlova jedan u drugi? Znači ako si već krenuo da učiš po tutorijalima onda bar izaberi neki početnički. Pošto ja nikada nisam koristio tutorijale, osim u slučajevima nekih naprednijih tehnika, ovde ne mogu da ti pomognem. Treba da vodiš računa o još jednoj činjenici koju sam ja već par puta napomneuo u ovoj temi. Biraj dobro svoje tutorijale ;)

Preporuka. Ako već hoćeš da na ultra-mega-giga brz način naučiš da radiš u Visual C++ 6-ici onda nabavi negde SAMS-ovo izdanje "Teach yourself Visual C++ in 21 days" i realno za mesec dana ćeš biti sposoban da koristiš većinu stvari koje su ti kao početniku potrebne u Visual C++-u. Nažalost, ostaćeš uskraćen za najvažniji deo u celoj stvari, sam programski jezik, jer se ova knjiga orijentiše na primenu Visual komponente MS-ovog paketa. Bez obzira na zle jezike ovo je odlična knjiga za svakog početnika.

Što se tiče tvog problema grešku prijavljuje linker i to najčešće u situaciji kada pogrešno konfigurišeš tip aplikacije na početku rada. Ukoliko hoćeš da napraviš konzolnu aplikaciju onda ne smeš da koristiš MFC i slične biblioteke. Primera radi, ako aplikacija treba da se "odigrava" samo u konzolu onda napraviš nov workspace i u njemu ili dodaš čist C/C++ source fajl ili ideš na opciju "Win32 Console Aplication". Ako hoćeš da napraviš Windows-like aplikaciju onda izabereš "MFC App Wizzard" ili slično. To što ti sada ništa ne radi najverovatnije ima za razlog činjenicu da si jednostavno počeo da "pakuješ" sve te kodove u jedan workspace i da si napravio haos ili da si, kao što sam pomenuo, malo "čačnuo" podešavanja. Još jednom, pre nego što bilo ko ovde iznese svoja "zapažanja" u vezi nečega neka se bar potrudi da za početak odradi fundamentalne stvari kako treba a ovde bi za početak bilo dobro bar osnovno upoznavanje sa Visual C++-om:mad:
ne, ali kad ce taj 3d engine?? bar napisi neki tutorial
Možda uskoro ali trenutno baš nemam vremena za tako nešto tako da bih ti preporučio da se za sada baciš na nešto početničko umesto 3D-a engine-a:) Prođi za početak knjigu koju sam pomenuo i bićeš spreman da razgovaramo dalje.

I mala napomena. Nemoj da se igraš sa podešavanjima u "šestici" zato što ćeš samom sebi navući bespotrebne nevolje. Ovo tek možeš da radiš kad shvatiš šta koja opcija radi. Ako baš voliš da se "igraš" onda instaliraj neku .NET verziju pa udri do mile volje jer one imaju malo bolju kontrolu "egzibicija korinsika" ;)

:ciao:

Andross
12.8.2006, 14:06
Evo recimo ja sam donedavno koristio Dev-C++ i MSVC++ 6.0 uporedo.To je zbog MS-ovih pomenutih bagova sa konzolama(ti linkerski problemi) i jos par nekih enginea koje sam testirao.Sa druge strane mrzelo me je da Qt "konvertujem" na Dev-C++ pa mi treba MSVC++ 6.0.:kreza: I holococ za sta dajes 3D tutor?DirectX ili OpenGL?

priest (of_the_moon)
12.8.2006, 16:12
I u čemu bi bila ta "naša" greška ovde:confused:
Nemam pojma, ali se meni nije javljala, a koristio sam "using namespace std".

Uzmi u obzir da je u onih DevC++-ovih 20KB smešteno sve od stvarnih funkcija koje su potrebne za rad programa. Pretpostavljam da je ista stvar minimalno smeštena i u MS verziju jer sigurno DevC++ kompajler ne proizvodi toliko drugačije instrukcije od onih koje proizvodi MS kompajler kada je u pitanju isti posao :)
Ne bih se složio da je MS compiler toliko rasipan u odnosu na MingW32-a (DevC++).
Dok sam učio na njemu, uspeo sam da smestim hello world u 608 bajta (bez asemblera i hex editora; verovatno je nekome uspelo i manje). Sačuvao sam bin i okačio, a kada se pogleda Hex editorom, nešto tu baš i nema mesta za seriale windowsa i vsa... No opet ne treba biti previše siguran da ne postoje, jer Micro soft je to :).
U svakom slučaju, ta veličina mi sada u MingW32 ne polazi za rukom.

... reći ću jednostavno da je ovo sa "Press a key to continue" i vezano za vreme rada u samom Studiu-u. To mu i jeste mana!
Meni se baš više sviđao MS-ov način. Recimo kada trebam na brzaka da isprobam neku funkciju u konzoli i da vidim šta će da ispiše, ne moram da se smaram da zaustavljanje dodajem sam. Kada sam prešao na DevC++ to me je baš nerviralo u početku. Ukusi su različiti...

Dakle, i bez mene ste uspeli da dokažete da C++ možda i nije najbolje rešenje za jednog početnika.
Pa, s obzirom na njegovo godište, najverovatnije će moći da se snađe i sa c-om (uz malo lupanja glavom na početku).

dakle VB vaistinu konza :):):)
Naravno, uzevši u obzir naziv teme...

Polako bre čoveče! Tako kako si ti počeo ne počinje nijedan ozbiljan početnik u bilo kom programskom jeziku! Pogledao sam sajt čiji si link dao i sve što je dato tamo je namenjeno isključivo naprednim i već pomalo iskusnim korisnicima.
Bili su namenjeni isključivo tebi :).

M.Silenus
12.8.2006, 16:30
Zar VB ne traži nekakav vb-runtime ( cca 1MB, basic ) , da bi mogao da pokrećeš programe pisane u njemu?

U vezi lova na slona, pa reč je o sledećem: C je prilagođeniji mašini, dok je C++ prilagođeniji ljudskom načinu razmišljanja. U C++ su je mnogo lakše izvesti neke stvari.
Npr:-C++ : klasa Matrica sa definisanim operatorom * omogućava da imaš 2 objekta tipa Matrica i da sledeći izraz ima smisla : C=A*B ( A i B su Matrice )
-C : prvo praviš objekat tipa <tip>** ( tip je recimo double ), pa imaš funkciju <tip>** mnozenje(<tip>** A,<tip>** B), pa množiš na sledeći način
C=mnozenje(A,B);

Ovo je najprostiji primer.

Marko_L
12.8.2006, 16:56
Zar VB ne traži nekakav vb-runtime ( cca 1MB, basic ) , da bi mogao da pokrećeš programe pisane u njemu?
Windows XP ima VB6 Runtime fajlove po defaultu, a za 98-icu treba (ako neko još uvek koristi to čudo :)).

holodoc
12.8.2006, 19:27
I holococ za sta dajes 3D tutor?DirectX ili OpenGL?

Ljudi stvarno ste se napalili na te tutorijale :D Ne sećam se da sam negde pomenuo ni da ih spremam :)

Rekao sam već da trenutno nemam ni trunkice slobodnog vremena (dramatičnosti radi spavam u vrh glave dva-tri sata dnevno:a_whistli ) pa je normalno da nemam više vremena ni za bilo kakvo piskaranje.

Kada budem imao vremena (a kada će to biti nezna se) postaviću nekih par jednostavnih engine-a rađenih u C++-u od nule koji su stvarno obimno komentovani pa neće biti teško ni početnicima da se snađu. Naravno u trenutnom stanju fali još dodavanje nekih važnih komentara koji meni nisu bili potrebni dok su pisani ali bi bilo lepo da postoje u krajnjoj varijanti :)

U svakom slučaju koga god mrzi da čeka mene (možda i pametnija solucija :)) slobodno neka pročešlja http://www.gamedev.net na kome ima fantastičnih tutorijala o svemu i svačemu. Plus na forumu možete postaviti ama baš svakakvo pitanje i dobićete brz, jednostavan i kvalitetan odgovor. Sajt se prvenstveno osnodi na on ekoji koriste C++ ali ima nekih stvarčica i za Delphi.

Ako si možda mislio da me pitaš čemu sam više naklonjen DirectX-u ili OpenGL-u moram da kažem da kod igara više volim da koristim DirectX. Da ovo opet ne bi preraslo u raspravu DirectX vs. OpenGL ponovo podvlačim da meni više leži i da je neke stvari moguće mnogo lakše realizovati nego u OpenGL-u. Bar što se tiče igara.

E sada, koga ne mrzi da skida ceo SDK sa Microsoft-ovog sajta :)

holodoc
12.8.2006, 19:35
@priest (of_the_moon)

Nisam mislio na linkove koje si ti dao za optimizaciju aplikacija nego ovaj sajt što je Eclipse pomenuo odakle skida source-ove :) http://www.planet-source-code.com/

EclipsE
12.8.2006, 20:49
Sto ne? Ja sam VB6 ucio iz raznih sourceva
Skines, proucis, naucis :D

Crusader88
12.8.2006, 21:00
Sta sada?
skinem dev c++, 4.9.9.2. i pocnem sa onom tvojom svetom knjigom
C++ Practical Programming by Example i stignem cak do helo world
i pocinju problemi

// a small C++ program
#include <iostream>

int main()
{
std::cout << "Hello, world!" << std::endl;
return 0;
}

uradim to i nista... kopmajlujem pa pokrenem i pokaze dos prozor i odma ga zatvori
i onda cackam malo dev i idem na neki njegov primer heloo svete i od izbaci

#include <iostream>

using namespace std;

int main (int argc, char *argv[])
{
cout << "Hello World!" << endl;
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}

i to se razlikuje sa onim iz knjige ali RADI.
STA DALJE?

voodoo_
12.8.2006, 21:15
// a small C++ program
#include <iostream>

int main()
{
std::cout << "Hello, world!" << std::endl;
return 0;
}

uradim to i nista... kopmajlujem pa pokrenem i pokaze dos prozor i odma ga zatvori
Bitno je da shvatiš što se odmah zatvorio prozor. Program je odradio ono što si mu rekao (ispisao "Hello world") u konzoli koju mu je Windows dodelio, i javio da je izvršenje gotovo. Windows je, uvidevši da je konzola sada iskorišćena i posao završen, istu uništio i zdravo. Znači, ako hoćeš da program sačeka da ti nešto pritisneš kako bi mogao da vidiš šta je pre toga bilo, treba da ubaciš naredbu za unos bilo kog znaka sa tastature, kao u drugom primeru.

holodoc
12.8.2006, 21:17
O tome sve vreme i pričamo ovih par postova :)

Da skratim. Oba koda funkcionišu perfektno i rade ono što treba da urade. Glavna razlika između prvog i drugog source-a leži u onom "cin.get();". Osnovna namena ove komande jeste da kada ti na ekranu ispiše "Hello world" program sačeka da "čukneš" neki taster pre nego li se prozor u kome je tekst ispisan zatvori.Druga verzija je pisana sa očiglednom namerom da radi bez problema i u DevC++-u.

Pošto tvoja prva verzija nema ovaj deo, kod se jednostavno izvrši i prozor se zatvori veoma brzo tako da ti imaš osećaj kao da je samo "trepnuo" :) Prvi kod bi realno bio jedino "vidljiv" (tj. prozor bi ostao otvoren po deafultu sve dok ne pritisneš Enter) u MS Visual C++-u pošto isti ubacuje već pominaju rečenicu "Press a key to continue". U svakom slučaju ako budeš nameravao da koristiš DevC++ stavljanje "std::cin.get()" ispred "return 0" je preporučljivo ako je program konzolnog tipa ili treba samo da prikaže neke obrađene informacije ali tako da korisnik stigne da pročita šta mu je sve program "servirao".

Nemoj da te ovakva sitnica ili bolje rečeno glupost obeshrabri i nastavi sa sledećim primerima ali vodi računa o svemu šta je ovde već rečeno. To znači da pošto vidim da nameravaš da koristiš DevC++ možeš slobodno da koristiš "using namespace std;" a da na svim mestima gde ti se pojavi "std::" u kodu (ako postoji) jednostavno izbaciš ovaj deo kao nepotreban. Mada ako ga ostaviš kompajler se neće buniti ;)

edit: sad videh da je voodoo_nbg već "bacio magiju" :) ali nije bilo loše ako si pročitao i ovaj post.

M.Silenus
12.8.2006, 21:34
Dodaj sledeće linije:

...
#include <stdlib.h>
...
int main(int argc,char** argv)
{
...
system("PAUSE");
return 0;
}

I neće odmah zatvoriti prozor , tj. pojaviće ti se poruka "Press any key to continue..."

holodoc
12.8.2006, 22:51
A pa kolega bez ljutnje ali ovo malkice više naginje na C stranu :) nego na "hard-core" C++ :alealeee:

Ne zaboravi da većina početnika koji prate ovu temu koriste literaturu vezanu za C++ a ne za C pa neko može da se zapita recimo šta su kog đavola "stdlib.h" itd. Naime, iako bi ovaj kod radio ne bih ga preporučio C++ polaznicima iz par razloga. Prvi je korišćenje C headera kao što je "stdlib.h" i to u ovom slučaju čisto da bi se pozvala "system" funkcija. Pošto se program već koristi za ispis teksta to znači da mora biti "include-ovano" još minimalno i "stdio.h" zaglavlje. Malo preterano korišćenje resursa a i ne preterano svrsishodno :) kada je u C++ varijanti (koji se ovde i uči) potrebno koristiti samo jedno zaglavlje koje obavlja isti posao.

Umesto C headera stvarno preporučujem navikavanje na C++ alternativu "iostream" koja u sebi sadrži sve što je potrebno za rad sa ulazom i izlazom. Iako realno gledano "std::cin.get()" radi nešto potpuno drugačije od "system"-a krajnji efekat po korisnika je isti jer program čeka na intervenciju korisnika. Prednost korišćenja C++ pristupa bi u ovom slučaju bila i ta što bi korisnik koji radi aplikaciju recimo na srpskom mogao da "servira" svoj tekst tipa "Utcukajte si taster da nastavite..." :) a ne standardni "Press any key to continue".

Druga stavka je i korišćenje samog "system-a" iz zaglavlja "stdlib.h". Lično mrzim da sistemu jednostavno prosledim neku jednostavnu komandu a da na njemu bude kako će komandu (u ovom slučaju status "PAUSE") da interpretira. Zašto koristiti ovako "pojednostavljivanje" kada aplikacija može sasvim lepo i kraće da se napiše a da bude apsolutno poznato šta se u datom trenutku dešava? I to opet korišćenjem samo "iostream-a" :) Doduše i sam DevC++ pri kreiranju generičke konzolne aplikacije voli da koristi dodatni "cstdlib" da bi pozvao isti taj "system" ali opet kao što kažem po meni porpilično nepotrebno.

Još jedna stvar. Početnici će takođe sigurno da se zbune šta znači ono "int argc,char** argv" :) jer toga nema nigde ni u jednom "HelloWorld" programu koji se uči u C++ kursu. Kad sam već ovde napomenuću da ove promenljive sadrže podatke o tome šta ste još dodali kao argumente u komandnoj konzoli kada ste pozivali program. Znači ako na primer upišete u konzoli komandu "helloworld.exe -talk -curse -voice" vaš program sada odmah po pozivanju sadrži dve promenjljive "argc" i "argv". Prva promenjljiva je ceo broj i sadrži broj prosleđenih argumenata prilikom pozivanja komande a to bi ovde bilo 3 (talk,curse,voice). "Argv" je nešto što se zove polje pokazivača na pokazivače ili jednostavnije rečeno može se porediti sa nizom koji sadrži adrese gde se nalaze svi oni argumenti koje ste ukucali pri pozivanju programa. Ovo je malo napredniji deo C-a i C++-a tako da je sve ovo trebalo da bude samo informacije radi ;)

Odužih ali u suštini za HelloWorld program ovaj deo uopšte nije potreban :)

holodoc
12.8.2006, 22:54
E sad da ne bi bilo više zabuna oko toga kako kog đavola treba da izgleda jednostavan "HelloWorld" program koji će da radi na svim sistemima i svim kompajlerima evo jednog jednostavnog "malo dorađenog" "C++ standard full-proof" "HelloWorld" :) programa! Ovaj kod uzima u obzir i MSVC++ kikseve sa namespace deklaracijama.

#include <iostream> // otvaranje standardnog zaglavlja

int main ()
{
std::cout << "Hello World!" << std::endl; // ispis teksta
std::cout << "Utcukajte si taster da nastavite..." << std::endl; //ispis teksta
std::cin.get(); // program ceka da se pritisne neki taster
return 0; // povratak vrednosti "0" operativnom sistemu sto znaci da je sve OK
}

Posle ovoga vreme je da se pređe na nešto kompleksnije. A kome ovaj kod ne radi ne treba da krivi kompajler već samog sebe jer ima neispravan ili "podešavan" kompajler ili linker i treba prvo da reši taj problem pa onda tek da se baci na učenje:dedica:

Andross
12.8.2006, 23:15
Ozbilnije npr.
#include <iostream>
int main()
{
int varijabla1; // varijabla povratnog tipa int(celobrojni broj)
int varijabla2;
std::cout << "Unesite prvi broj: " << std::endl;
std::cin >> varijabla1;
std::cout << "Unesite drugi broj: " << std::endl;
std::cin >> varijabla2;
std::cout << "Zbir brojeva je: " << varijabla1 + varijabla2 << std::endl;
return 0;
}

A moze i da se uradi:
int varijabla3 = varijabla1 + varijabla2;
Pa da se ispise varijabla3.To je nesto malko komplikovanije;)

holodoc
12.8.2006, 23:30
Odličan "napredniji" primer:)

Dodao bih samo da kada je potrebno definisati više od jedne promenljive istog tipa na jednom mestu moguće ih je odvojiti zarezom.

Primera radi umesto definicije tri promenjljive zasebno:
double kolicina;
double cena;
double ukupno;

moguće je njihovo definisanje izvršiti sledećim redom
double kolicina, cena, ukupno;
Naravno "double" ovde predstavlja tip promenjljive koja sadrži broj u pokretnom zarezu dvostruke preciznosti koji je moguće kasnije recimo doraditi na dve decimale.

Moram da priznam da ova tema počinje da mi se sviđa jer se sve više ljudi uključuje u nju sa nekim predlozima i informacijama ili što bi se reklo konačno sa nečim konkretnim i opipljivim :) Samo bih možda preporučio da svaki ponuđeni kod bude malo prokomentarisan ili da bar sadrži komentar u okviru koda kako bi bio razumljiv. :)

Andross
12.8.2006, 23:41
Evo nesto slicno samo sa unosom teksta:
#include <iostream>
int main()
{
char ime[21]; // niz od 20 karaktera - 21 = null terminator
std::cout << "Kako se zoves? " << std::endl;
std::cin.get(ime, 21); // uzima niz karaktera do n
std::cout << "Tvoje ime je: " << ime << std::endl;
return 0;
}

I meni pocinje da se svidja tema.Mozemo svi nesto da naucimo.

holodoc
13.8.2006, 0:59
Mali komentar o ovom poslednjem kodu. ANDROSS nećeš zameriti ali ovde smo da učimo zar ne ;)

Definicijachar ime[21]; rezerviše niz od 21 elemenata u koji se smešta tzv. "char" tip podataka. Char tip podataka nije ništa drugo nego obično slovo. Znači, ukoliko se u niz smesti recimo ime "Misa" onda bi element ime[0] sadržao slovo "M", element ime[1] bi sadržao slovo "i" i tako dalje. Ovde ide jedna veoma važna napomena a to je da su u C-u i C++-u nizovi tzv. "zero-based" tipa odnosno brojanje elemenata počinje od 0 a ne od 1. To znači da se prvi element niza "odaziva" na “ime[0]” a poslednji na “ime[20]” a ne “ime[21]” što bi kompajler prijavio kao grešku.

Ovde sledi i objašnjenje toga šta je to "null terminator" :)

ANDROSS-ov program u suštini radi jednu veoma jednostavnu stvar. Pita korisnika za ime koje korisnik unosi nakon čega ispisuje uneto ime. Kako se to radi. Jednostavno. Pratimo ANDROSS-ov kod.

Prva linija programa
char ime[21]; rezerviše već pomenuti niz od 21 elemenata za skladištenje imena.
Drugi red std::cout << "Kako se zoves? " << std::endl; ispisuje na ekranu poruku "Kako se zoves?".
Deo koda std::cin.get(ime, 21); očekuje da korisnik unese ime i pri tome se ignoriše sve duže od 21 karaktera nakon čega treba pritisnuti ENTER.

Deo koda std::cout << "Tvoje ime je: " << ime << std::endl; ispisuje uneto ime.

Ovde na scenu stupa problem sa tzv. "null terminatorom". Naime, u C-u i C++-u svi string-ovi na kraju moraju da imaju tzv. "null-terminator" koji označava kraj stringa. On se označava sa "\0". Kako se često stringovi unose preko tastature a poslednji taster pri unosu je ENTER treba ispred tog terminatora dodati još jedno mesto za "novi red" koji se označava sa "\n". Znači ako ovde ukucate recimo ime "Misa" vaš string za upis će imati dužinu od 6 a ne 4 karaktera! O ovome treba voditi računa a posebno u složenijim slučajevima.
Da ovde ne bi bilo zabune "\n" ima dužinu od jednog karaktera jer pripada grupi specijalnih karaktera koji se označavaju sa početnim "\" u imenu. Postoji puno specijalnih karaktera kao što su: "\a" - beep (aktivira beeper računar i čuje se zvuk, veoma interesantno ;)), "\b" - backspace, "\t" - vertikalni tabulator, "\v" - horizontalni tabulator, "\"" (ide obrnuta kosa crta pa navodnik) - navodnik itd.

Enter na kraju za posledicu u ovom slučaju ima jednu gadnu manu a to je da automatski (pošto je “ENTER” poslednji bufferovan sa tastature pa zbog brzine izvršenja programa par tih buffer-ovanih ENTER-a "iscuri") okida bilo kakav "std::cin.get();" koji bi se našao eventualno na kraju koda ispred “return” komande. Opet govorim o onima koji ne koriste MSVC++ :) Dakle za one koji koriste full C++ kompatibilne kompajlere treba primeniti malo izmenjen kod.

holodoc
13.8.2006, 1:01
U ovom slučaju iskoristiću M.Silenus-ovo rešenje ali u full C++-varijanti. To znači da ćemo umesto C headera „stdlib.h“ koristiti C++-ov ekvivalent „cstdlib“ da bi smo pozvali "system" funkciju koja će da ukoči program kad treba. Kada korisnik pritisne ENTER program izvršava liniju „return EXIT_SUCCESS;“. O čemu se ovde radi uopšte? Standardna zaglavlja neretko sadrže u sebi deklarisane konstante (ne promenljive) kojima su dodeljene vrednosti koje ne mogu da se menjaju. U konkretnom slučaju <cstdlib> sadrži u sebi konstantu „EXIT_SUCCESS“ kojoj je dodeljena vrednost „0“ tako da je ovde „return EXIT_SUCCES;“ ekvivalentno sa „return 0;“.

Dakle verzija ANDROSS-ovog programa koja bi lepo funkcionisala na svim platformama bi izgledala ovako:

#include <cstdlib> // zaglavlje potrebno za poziv "system" funkcije
#include <iostream> // standardno zaglavlje ulaza i izlaza

int main()
{
char ime[21]; // deklaracija niza koji sadrzi karaktere duzine 21
std::cout << "Kako se zoves? " << std::endl; // unos imena
std::cin.get(ime,21); //unos imena; maksimalna duzina 21 karakter
std::cout << "Tvoje ime je: " << ime << std::endl; // ispis unetog imena
system("PAUSE"); // pauziranje aplikacije
return EXIT_SUCCESS; // vracanje informacije o uspesnom izvrsenju
}

Marko_L
13.8.2006, 22:32
Da, ovo je odlična tema i treba imati što više ovakvih, kojima će početnici moći da uplove u programerske vode. Neću komentarisati C++ kodove, iako ih razumem, jer ipak prvenstveno radim u VB-u, a ovde ima dosta boljih poznavaoca C++ od mene, već ću samo pokazati kako bi dati kodovi otprilike izgledati u VB-u , bez ikakvog poziva na flejm, nego čisto da malo uporedimo sintaksu i određena rešenja, što nekome može biti korisno... Nadam se da vam to ne smeta. Elem, da vidimo...
#include <iostream> // otvaranje standardnog zaglavlja

int main ()
{
std::cout << "Hello World!" << std::endl; // ispis teksta
std::cout << "Utcukajte si taster da nastavite..." << std::endl; //ispis teksta
std::cin.get(); // program ceka da se pritisne neki taster
return 0; // povratak vrednosti "0" operativnom sistemu sto znaci da je sve OK
}
u VB-u može da izgleda ovako
Msgbox "Hello World" 'ispisuje tekst u navodnicima u prozoru
I kada se klikne na OK program nastavlja sa radom.

Što se tiče koda koji sabira dva broja
#include <iostream>
int main()
{
int varijabla1; // varijabla povratnog tipa int(celobrojni broj)
int varijabla2;
std::cout << "Unesite prvi broj: " << std::endl;
std::cin >> varijabla1;
std::cout << "Unesite drugi broj: " << std::endl;
std::cin >> varijabla2;
std::cout << "Zbir brojeva je: " << varijabla1 + varijabla2 << std::endl;
return 0;
}
U VB-u može da se odradi ovako
Dim varijabla1 'deklaracija prve varijable
Dim varijabla2 'deklaracija druge varijable
varijabla1 = InputBox("Unesite prvi broj", "Unos podataka", "0") 'prompt za unos prvog broja
varijabla2 = InputBox("Unesite drugi broj", "Unos podataka", "0") 'prompt za unos drugog broja
MsgBox "Zbir unetih brojeva je " & Val(varijabla1) + Val(varijabla2) 'prikazujemo zbir brojeva, a funkcija val omogucava da ukoliko je korisnik uneo neki tekst varijabli dodeli vrednost nula

holodoc
13.8.2006, 22:43
Takođe bez pozivanja na flejm :) mala napomena da bi navedeni kodovi u C++-u bili mnogo čitljiviji i pregledniji kada zbog problemima sa starijim MS-ovim kompajlerima (verzija 6 i starije) ne bi stalno moralo da se navodi onaj deo "std::".

Naravno svi koji koriste novija programska okruženja MS-a mogu bez problema da koriste "using namespace std;" čime kod postaje mnogo pregledniji :) Nisam tačno siguran koja verzija .NET-a je ovo ispravila ali znam da u verziji VisualStudio .NET 2005 ovog problema nema :D

@Marko_L
E sad ovo je nešto što me stvarno interesuje i ne spada ni u kakav deo rasprave koju smo konačno završili :aplauz:
Ono što mene interesuje u VisualBasic-u a stvarno za sve vreme rada sa VB-om mi nije ni palo na pamet da probam:) , je šta je potrebno da se u VB-u napravi "HelloWorld" program koji će da vrši ispis u konzoli? Mislim, da ne koristiš jednostavni "MsgBox" koji će da ispiše tekst u dijalog prozoru nego da recimo ispiše taj isti tekst u konzoli. Da li je ovo uopšte moguće:confused:

EclipsE
13.8.2006, 22:59
@holodoc

Sto se tice konzole, moze. Gledao sam nekada davno neke tutorijale koji objasnjavaju kako da se pristupi konzoli preko vb-a, al sam zaboravio gde sam to pronasao...

e, da, zaboravih da napomenem da se koriste neke API funkcije

Crusader88
13.8.2006, 23:47
A zasto niko ne prica o programiranju u JAVI, citao sam da sada treba da izadje neki dobri mmorpg pravljen u javi, sta treba sve za to jel je lako?(lakse od c++0, i tako
2. da li se u svakom programu java,c++,c... moze napraviti isto , mislim naravno da je postupak drugaciji ali da li se moze napraviti neki isti proizvog program, neka igra..
3. da li moze irrlicht u javi i td..

voodoo_
14.8.2006, 0:02
2. Ne. Java je stvorena sa ciljem da može podjednako da se izvršava na raznim kompjuterima i operativnim sistemima, pa ne generiše mašinski kod već međukod koji se interpretira od strane virtuelne mašine, softvera koji se instalira na određenom operativnom sistemu i služi za "puštanje" Java programa. Kako Java nema pristup hardveru na niskom nivou, pomoću nje ne možeš napraviti DirectX/OpenGL igre i slično. Na jezicima koji izbacuju mašinski kod (C, C++, Delphi itd.) možeš.

holodoc
14.8.2006, 0:10
Izgleda da nam se neko već predomislio :)

To što kažu da je Java lakša za programiranje potiče više sa tehničke strane a ne programerske. Java ima recimo podršku za automatski menadžment memorijom dok recimo u C++-u to ne postoji u obliku koji postoji u Javi.

Doduše ako bi prešao na Javu (a još ni C++ nisi zagrebao) suočio bi se sa jednom "mnogo gadnom" činjenicom a to je da Java vuče sintaksu svog jezika iz C++-a :D

Crusader88
14.8.2006, 0:50
LOL ipak se ja drzim c++ a, izgleda da je onaj sams nesto pobrljavio ili neznam sta uradim isto sto pise a c++ kaze SOURCE FILE NOT COMPILED a ja sam iskucao preslikano kao u knjizi:
// listing 2.2 using cout

#include <iostream.h>
int main()
{
cout << "Hello there.\n";
cout << "Here is 5: " << 5 << "\n";
cout << "The manipulator endl writes a new line to the screen." <<
Aendl;
cout << "Here is a very big number:\t" << 70000 << endl;
cout << "Here is the sum of 8 and 5:\t" << 8+5 << endl;
cout << "Here's a fraction:\t\t" << (float) 5/8 << endl;
cout << "And a very very big number:\t" << (double) 7000 * 7000 <<
Aendl;
cout << "Don't forget to replace Jesse Librety with your name...\n";
cout << "Milan Djordjevic is a c++ programer!\n;
return 0;
}
sta dalje?

holodoc
14.8.2006, 0:57
Uf dođe mi da opsujem onako masno :dzavo:

Šta ti intuicija kaže šta treba da uradiš? Jesi li uopšte pročitao prethodne postove. Ili ispred svakog "cout-a" "endl-a" i "cin-a" dodaj "std::" ili ispod "include <iostream>" dodaj red "using namespace std;".

Verzija sa dodavnajem "using namespace std-om" napominjem da neće da radi na MSVC++ 6 i starijim. Gde vam je bre instuicija? :) Pa čak i da je nema o ovome smo pisali poslednjih par postova. Udubite se:dedica:

I dodaj "std::cin.get()" ispred "return 0" ako koristiš MS da ti se ekran ne bi zatvorio "prebrzo". Ovo važi za sve primere ubuduće u toj SAMS-ovoj knjizi.

I odakle ti to "#include<iostream.h>" ??? To ne postoji! Treba da piše "include<iostream>". Mora da si nabavio neku prastaru verziju SAMS-ove knjige. Nađi neko novije izdanje jer izgleda da je to tvoje prastaro a iskreno se ne sećam da ijedna SAMS-ova knjiga ima toliko grešaka.

I u četvrtom redu imaš grešku u kucanju. Imaš na kraju jedno "A" ispred "endl".

ACHTUNG
14.8.2006, 1:03
Gde vam je bre instuicija? :) Pa čak i da je nema o ovome smo pisali poslednjih par postova.


Hmmm,let me think...:kreza:

holodoc
14.8.2006, 1:08
Pošto si izgrešio na još nekim mestima evo ti ispravan kod a ti ćeš za kaznu :dzavo: da uporediš gde si pogrešio i da pročitaš ovu temu od trenutka kada smo počeli da pričamo o C++-u i da vidiš šta je sve napisano da se ne bi ovakve trivijalne greške ponavljale. Usput, nemoj nikada da lomiš liniju (ENTER) na sred komande. Znači ako imaš "cout << "Neki tekst" << endl;" ne smeš da pritisneš ENTER billo gde dok kucaš tu liniju osim na samom kraju posle ";". Ako kod ne može da stane u jednu liniju program će sam prebaciti u drugi ;)

Evo ti ispravan kod za tvoj DevC++ ;)

// listing 2.2 using cout

#include <iostream>
using namespace std;

int main()
{
cout << "Hello there.\n";
cout << "Here is 5: " << 5 << "\n";
cout << "The manipulator endl writes a new line to the screen." << endl;
cout << "Here is a very big number:\t" << 70000 << endl;
cout << "Here is the sum of 8 and 5:\t" << 8+5 << endl;
cout << "Here's a fraction:\t\t" << (float) 5/8 << endl;
cout << "And a very very big number:\t" << (double) 7000 * 7000 << endl;
cout << "Don't forget to replace Jesse Librety with your name...\n";
cout << "Milan Djordjevic is a c++ programer yet to be ;)!\n";
cin.get();
return 0;
}

Crusader88
14.8.2006, 1:27
citat:
"I u četvrtom redu imaš grešku u kucanju. Imaš na kraju jedno "A" ispred "endl".
tako pise u knjizi a knjiga je
Sams Teach Yourself C++ in 21 Days Second Edition

holodoc
14.8.2006, 3:12
Jeste problem u verziji jer i ja imam isto izdanje i kod je identičan ovom tvom bagovitom. Problem je u tome što je to html konverzija knjige i ona ima ovih bisera koje su napravili ljudi koji su je prevodili. Probaj negde da nađeš .pdf varijantu koja nema greške u kodu nastale ljudskim faktorom :)

Ustvari evo bacio sam pogled malo na sledećih par poglavlja i ne vidim da se greška ponavlja. Nastavi dalje a ako naiđeš na problem postuj ga ovde :)

Obećavam unapred da neću da te psujem ;)

Andross
14.8.2006, 18:29
Heh Crusader88 zagnjuri u temu Arrrrrrgh.Tu su resenja bagova iz doticne knjige odakle sa i ja ucio;)

Andross
14.8.2006, 20:21
E da i na Markov VB MsgBox mozemo odgovoriti ovako:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow)
{
MessageBox(NULL, "Hello World!", "Message", MB_OK);
return 0;
}
Sad prvi parametar(NULL) oznacava prozor kome pripada(u ovom slucaju ni jednom), drugi je poruka, treci je naziv(caption), a zadnji su dugmad(i ikone).

voodoo_
14.8.2006, 21:09
Kao prvi parametar možeš da namestiš i handle desktopa, dobija se sa GetDesktopWindow(), mada je isti efekat.

holodoc
14.8.2006, 21:56
Heh ljudi polako :) Stigli smo tek do konzole i jednostavne obrade podataka. Mada ovo je dobra stimulacija početnicima da nastave sa učenjem ;)

Inače, ovako kompajliran kod u DevC++-u je 17KB :) Mada nisam probao sa nivoima optimizacije :)

priest (of_the_moon)
14.8.2006, 22:02
E da i na Markov VB MsgBox mozemo odgovoriti ovako:

Ili malo jednostavnije:

#include <windows.h>
void main() {
MessageBox(0, "Hahaha... to sam ja... radim!!!", "Malisa", 0);
}

holodoc
14.8.2006, 22:21
@priest (of_the_moon)

Verovao ili ne upravo pišem isti kod kao tvoj da bih demonstrirao kako se može uprostiti ANDROSS-ov primer :rofl:

Jedna mala napomena kod tvog koda. Nije dobra praksa da funkcija "main" vraća "void" tip podataka, tj. ne vraća nikakvu vrednost, a pojedini kompajleri (recimo onaj koji većina ovde koristi, DevC++) ne dozvoljava "void" kao povratnu vrednost već isključivo "int".

Zato u prethodnom kodu samo prepravite kod da liči na:

#include <windows.h>
int main()
{
MessageBox(0, "Hahaha... to sam ja... radim!!!", "Malisa", 0);
}

Inače, ovaj kod je dugačak negde oko 15,9KB :D Idemo dalje :alealeee:

voodoo_
14.8.2006, 23:15
Ili malo jednostavnije:

#include <windows.h>
void main() {
MessageBox(0, "Hahaha... to sam ja... radim!!!", "Malisa", 0);
}

Ovo je za konzolne programe. Grafički program (znači onaj gde ne tražiš od Windowsa da ti napravi konzolu za ulaz/izlaz) MORA kao entry point da ima WinMain.

Marko_L
15.8.2006, 0:01
Ono što mene interesuje u VisualBasic-u a stvarno za sve vreme rada sa VB-om mi nije ni palo na pamet da probam , je šta je potrebno da se u VB-u napravi "HelloWorld" program koji će da vrši ispis u konzoli? Mislim, da ne koristiš jednostavni "MsgBox" koji će da ispiše tekst u dijalog prozoru nego da recimo ispiše taj isti tekst u konzoli. Da li je ovo uopšte moguće
Ne znam, iskreno, nikad nisam razmišljao o tome. Verovatno da može nešto da se zbudži sa SendMessage i SendKeys, ali ne vidim čemu to. VB je namenjen pravljenju Win aplikacija, a ako ti treba nešto u konzoli, uvek se može iskoristiti QBasic.

holodoc
15.8.2006, 0:25
Ovo je za konzolne programe. Grafički program (znači onaj gde ne tražiš od Windowsa da ti napravi konzolu za ulaz/izlaz) MORA kao entry point da ima WinMain.

Da to je tačno ali i u ovom slučaju ide jedna MS specijalka :) DevC++ i bilo koji drugi C++ kompajler se neće "truditi" da bez ikakve potrebe otvara MS-DOS prozor i ovaj kod će se apsolutno isto ponašati kao VB varijanta. Problem opet nastaje kod MSVC++-a koji otvara pomenuti MS-DOS prozor:confused:

Dakle, za sve "neMS" kompajlere važi da bi teoretski mogle da se koriste win funkcije iz "windows.h" zaglavlja i to njihovim jednostavnim pozivanjem. Naravno iskusnijim programerima to uopšte ne treba da bude praksa jer je to veoma loš način pristupu Windows programiranja :)

Zato ovo rečeno za WinMain kao polaznu (glavnu) funkciju (entry point) važi kao preporuka i pod OBAVEZNO ;)

holodoc
15.8.2006, 2:11
Ajde da budem ponovo malo od koristi :)

Sa ove adrese možete da skinete najčešće postavljena pitanja u vezi knjige "Teach yourself C++ in 21 days" koju izdaje SAMS.

http://www.libertyassociates.com/pages/faqbook_edit.htm

Na sledećoj adresi možete da pronađete spisak grešaka za pomenutu knjigu. Ova lista grešaka važi za prvo i drugo izdanje koja su najviše rasprostranjena kod nas.

http://www.libertyassociates.com/pages/e21book_edit.htm

priest (of_the_moon)
15.8.2006, 11:45
Jedna mala napomena kod tvog koda. Nije dobra praksa da funkcija "main" vraća "void" tip podataka, tj. ne vraća nikakvu vrednost, a pojedini kompajleri (recimo onaj koji većina ovde koristi, DevC++) ne dozvoljava "void" kao povratnu vrednost već isključivo "int".
Navika, a nisam ga ni isprobao.

priest (of_the_moon)
15.8.2006, 11:54
Pišem ovo od justros, i ne izgleda loše, barem je bolje od glupih rasprava...
Osnovne stvari, korak po korak.

Andross
15.8.2006, 12:36
Da to za winMain sam i ja video.Btw. ako kompajlirate pomocu Dev-C++-a a nemate projekat za Win32 GUI tj. samo source kompajlirate pojavljivace se konzola(uvek ali uvek).Konacno predjoh prvi tutor za OpenGL sa nehe.gamedev.net .Damn it's hard!
Evo neki mali program za pocetnike:
#include <iostream>
int main()
{
int temperatura; // varijabla cuva vrednost temperature jela
std::cout << "Kolika je temperatura jela?" << std::endl;
std::cin >> temperatura;
if(temperatura < 50) // ako je temperatura manja od 50
{
std::cout << "Kuvaj jos malo." << std::endl;
}
else
{
std::cout << "Jelo je spremljeno." << std::endl;
}
system("pause");
return 0;
}
Evo koda sa if/else iskazom.Ove viticaste zagrade u ovom slucaju ne moraju al' sam ih dodao zbog preglednosti i citljivosti.
Note #1: Ako u if/else iskazu imate veci kod(ne samo jedan izraz), viticaste zagrade su neophodne.
Note #2: U slucaju vecih ugnjezdenih if/else iskaza koristite switch
Note #3: system("pause") meni da Dev-C++ radi odlicno bez dodatnih headera.

EclipsE
15.8.2006, 13:08
Vidim samo c++, c++ i c++... Znaci moracu da otvorim novu temu i da pokazujem drugima kako je VB laksi... :D

Andross
15.8.2006, 18:21
I kako je za igre slabiji od C++-a ;)

holodoc
16.8.2006, 1:28
Ajde da ja ponovo umešam prste malo pošto vidim da se niko ne žali na probleme u učenju :)

Prvo mali komentar na tutorijal (Lekcija1) od priest_of_the_moon-a. Čoveče promeni ime ubih se pokušavajući da ga „ubodem“ :D

Odmah na početku jedan mali komentar po pitanju pisanja komentara :) Iako je u ovom konkretnom slučaju priest_of_the_moon bogato komentarisao sam kod, što je ajde da kažemo u ovoj situaciji sasvim ok, u praksi nikada ne treba baš ovoliko koristiti komentare. Komentari treba da budu kratki i precizni i da daju sasvim jasne informacije o tome šta konkretni deo programa radi.

Odmah na početku ne bi bilo zgoreg pokazati kako treba da izgleda jedno profesionalno zaglavlje na koje ćete naleteti u skoro svim ozbiljnijim projektima. Pisanje ovog zaglavlja treba da postane navika još od samog početka jer će često to zaglavlje pomoći autoru koda da se bolje orijentiše šta je u konkretnom primeru rađeno.

Primer jednog standardnog zaglavlja (naravno u engleskoj verziji) dato je u sledećem kodu.

/************************************************** **********

Program: Naziv programa (recimo “Hello world”)

File: Naziv fajla (recimo “HelloWorld.cpp”)

Function: Ukoliko je reč o fajlu koji se koristi kao header u glavnom C++ fajlu onda se ovde daje pun naziv headera i funkcija koje su u njemu sadržane.

Description: Kratak opis toga šta konkretni program treba da uradi. Recimo „Ispis reči Hello World na ekranu“.

Author: Ovde ide naziv autora punim imenom i prezimenom.

Environment: Ova stavka se koristi da bi se okarakterisalo okruženje (hardversko i softversko) na kome je kod razvijan.
Primera radi: “Microsoft Visual C++ ver. 6, Windows XP Professional, AMD Athlon 64 3000+, 2GB RAM)

Notes: Beleške autora o kodu.

Revisions: Ovde se upisuje spisak svih verzija i njenih revizija. Obično se navede tačan naziv verzije i revizije, na šta se doda datum objave, ime autora i par reči o vrsti ispravke.
Primera radi:
“1.00 10/1/94 (jl) First release”
“1.01 10/2/94 (jl) Capitalized "World"”

************************************************** **********/

holodoc
16.8.2006, 1:30
Sada sledi jedna napomena u vezi pomenutog korišćenja „if...else if....else ... end if“ i „switch“ komande za kontrolu toka programa.

Treba zapamtiti da „switch“ (o kome će biti više reči u jednom malom tutorijalu koji spremam za sutra pa se zato spremite za malu interesantnu avanturu :)) ne može u nekim slučajevima da zameni „if“ a razlog je taj da „switch“ može da ispituje samo jedan uslov na svom početku nakon čega izvršava deo koda koji ispunjava dati slučaj. Zbog toga je „switch“ recimo korisno iskoristiti u slučajevima kada je potrebno na osnovu nekog povratnog rezultata funkcije izvršiti određeni deo koda. Recimo, imate neku funkciju „ispisi_warp_brzinu“ (mali uvod u sutrašnji program ;)) koja vraća celobrojni broj funkciji koja ga je pozvala (pričali smo o tome kada smo spominjali „return“ na kraju funkcije. Ta povratna vrednost se vraća funkciji koja je pozvala „ispisi_warp_brzinu“, u konkretnom slučaju recimo sama „main“ funkcija, pa bi recimo „switch“ mogao da se iskoristi da bi se odredilo kako da glavni program reaguje na osnovu različitih povratnih rezultata funkcije. U tom slučaju bi „switch“ bio idealan.

Međutim, ponekad „switch“ nije dovoljan jer je potrebno usput proveriti još neki uslov. Tada se koristi „if... else if ...else...end if“ kontrola toka.

Znam da sve ovo što sam naveo možda trenutno deluje konfuzno ali nije mi ni bio krajnji cilj da zalazim dublje u temu već čisto informativno da se razgraniči da „switch“ nije svemoćan. O svemu ovome se priča prilikom obrade poglavlja „Kontrola toka“ u bilo kojoj C++-knjizi.

Još jedna stvarčica koju bih želeo da napomenem je vezana za tzv. „entry point“ koji je pomenut. Naime, treba shvatiti šta „entry point“ u stvari znači. Dakle, svaki kompajler će prilikom kompajliranja koda prvo potražiti funkciju koja se zove „main“ (zbog toga jedna jedina funkcija kojoj morati dati ime koje zahteva kompajler je „main“ i ona mora postojati u vašem kodu). Znači, bez obzira da li se ispred (bliže vrhu) nalazilo još dvadeset funkcija, izvršavanje krajnjeg programa uvek počinje od funkcije „main“. Evo primera:

#include <iostream>

void ispisi_warp_brzinu(){
...

}

boolean brod_u_warpu(){
...
return true;
}

int main(){
.....
}

Napomena: nemojte da probate da kompajlirate ovaj kod jer neće da radi sigurno ;)

U ovom konkretnom slučaju izvršavanje će početi od funkcije main bez obzira što se „ispred“ nje nalazi par funkcija. Pomenute funkcije se pozivaju iz same „main“ (ili uopšte neke druge) funkcije. No, kako su funkcije takođe malo naprednija tema neću o njima sada.

Mislim da je za večeras bilo dosta a nadam se da ću sutra stići da pripremim nešto malo interesantnije ;)

Andross
16.8.2006, 20:00
Ajmo sada kratak uvod u funkcije:

#include <iostream>

int izracunajPovrsinu(int, duz, int sir) // nasa funkcija prima dva parametra
{
return (duz * sir);
}

int main()
{
int povr, duzi, siri;
std::cout << "Unesite duzinu: ";
std::cin >> duzi;
std::cout << "\nUnesite sirinu: ";
std::cin >> siri;
povr = izracunajPovrsinu(duzi, siri);
std::cout << "Povrsina je: " << povr << std::endl;
system("pause");
return 0;
}
Evo ovde imamo funckiju povratnog tipa int.Njeg zadatak je da izracuna povrsinu(jednostavno vrati duzinu * sirinu).Sada funkcija je pre main jer ako bi je stavili posle ona ne bi znala gde da je nadje.U tom slucaju pravimo prototip(tj. deklarisemo)funcije.Kako se to radi?Lepo samo napisemo pre main:
int izracunajPovrsinu(int, int);
Sada ovde sam izostavio nazive parametara.To nije bitno mozete dodeliti naziv a i nemorate(ali u implementaciji mora!!!).Sada red:
povr = izracunajPovrsinu(duzi, siri);
oznacava pozivanje nase funcije.Sada zasto povr = ?Pa da smo samo pozvali funciju vratila bi vrednost u prazno i nista ne bismo uradili.Ovako je dodeljuje varijabli.Nadam se da sam bio dovoljno jasan!Ako nesto nije jasno pitajte ovde ili me cimnite na shadowfilip@hotmail.com .U sledecem tutorijalu krecemo sa petljama!Pozz.

bobi
16.8.2006, 20:06
I na kraju shvatis - ipak je najbolje prodavati semenke pokraj stadiona.
(Androsse, ipak ima i treci nacin :) )

Andross
16.8.2006, 20:10
Da, da.:) Ako mislis na funciju moze ona i ovako:
int izracunajPovrsinu(int duz, int sir) // ne, ne jedemo sir :)
{
int povrsina = duz * sir;
return povrsina;
}Ovde samo deklarisemo lokalnu promenljivu kojoj dodeljujemo vrednost duz * sir pa je vracamo.Uostalom povrsina se gubi cim se funcija zavrsi.

bobi
16.8.2006, 20:19
Da, da.:) Ako mislis na funciju moze ona i ovako:
int izracunajPovrsinu(int duz, int sir) // ne, ne jedemo sir :)
{
int povrsina = duz * sir;
return povrsina;
}Ovde samo deklarisemo lokalnu promenljivu kojoj dodeljujemo vrednost duz * sir pa je vracamo.Uostalom povrsina se gubi cim se funcija zavrsi.
Da, samo si pogresno ime dao promenljivama.
treba dodati...
integer povrsina = tepsija
int duz = semenka
int sir = so
Tako da dolazimo do formule:
if tepsija < semenka and so then tepsija * 2

salim se naravo (ovo je neka kombinacija komodoreovog basica i c++a, hihihihihi ...)

Vidis, i ja nesto naucih. :)

holodoc
16.8.2006, 20:26
ANDROSS-e imaš jednu veliku logičku grešku u tvom programu koja je više praktične prirode :)

Tvoja funkcija za izračunavanje površine prima celobrojne vrednosti kao argumente i isto tako vraća celobrojne vrednosti kao rezultat što je veoma redak slučaj ;)

U gotovo svim vrstama izračunavanja (a posebno u game dev-u) koristiće se „double“ tip podataka. Znači logičnije bi bilo da umesto celobrojnih vrednosti (int) kao argumente i povratne vrednosti koristiš brojeve u pokretnom zarezu dvostruke preciznosti (double).

A i mislim da je za funkcije još uvek prerano. Pa još niko nije dotakao ozbiljnije delove o kontroli toka, operatorima i sl. Ako stignem večeras postovaću par primera ;)

holodoc
17.8.2006, 0:36
Pošto vidim da ste se malo bacili na „neozbiljan“ pristup programiranju i da je tu već počelo čašćavanje gibanicom i kiselim mlekom ajde da vam ovog puta malo zadam nešto interesantnije što će vas nadam se malo uozbiljiti ;)

Kao prvo evo koda koji treba da demonstrira neke veoma interesantne (i pre svega korisne) stvari u C++-programima. Zarad ozbiljnosti ovo je primer kako bi jedan pravi pravcati kod trebao da izgleda. Kod sadrži jedno zaglavlje u skraćenoj varijanti jer ovo je ipak školski primer koji treba samo da služi za demonstraciju.

/*********************************************
Ovo je skarceni oblik zaglavlja :)

Naziv: WarpBrzina

File: WarpBrzina.cpp

Author: holodoc

Date: 16.08.2006.

Opis: Porgram sluzi za demonstraciju nekih jako korisnih stvari u C++-u. Program
ispisuje vrednost odgovarajuceg warp faktora i odnos brzine date warp faktorom i
brzine svetlosti.

************************************************/
#include <iostream> // otvaranje standardnog "stream" ulaza-izlaza
#include <cmath> // ovo nam treba za pow() funkciju
#define BROJ_LINIJA 20 //definisanje broja linija za ispis po ekranu

using namespace std; // ovaj put zbog preglednosti koda koristim ovu deklaraciju

int main()
{
double warp,korak; // deklaracija promenjljivih warp i korak
int brojac_linija; // deklaracija promenjljive brojac_linija
brojac_linija = 0;
//sledi ispis zaglavlja koji pocinje ovde
cout << "************************************************** **" << endl;
cout << "**** Star Trek Warp factor comparator v0.1alpha ****" << endl;
cout << "************************************************** **\n" << endl;
// a zavrsava se ovde
cout << "Lt. LaForge: \"Koji korak ispisa zelite kapetane?:\"\n"; // korak?
cout << "Capt. Picard: \"Neka korak bude ";
cin >> korak; //unos koraka
cout << "\n\nWarp faktor\tBrzina svetlosti\n"; //prikaz malog zaglavlja
for(warp = 0.0;warp < (10 - korak);warp+=korak){ //ovde pocinje kompletan posao
cout << warp << "\t ->\t" << pow(warp,3.333333) << "x\n"; //ispis warp faktora
brojac_linija++; //inkrementiranje brojaca
if(brojac_linija == BROJ_LINIJA){ //ukoliko je ispisan granicni broj linija
cout << "Lt. LaForge: \"Kapetane dajte komandu za nastavak ispisa...\""; //ispisi tekst
fflush(stdin); //obrisi bufferovane ENTER-e
cin.get(); //cekaj ENTER za nastavak
cout << "Capt. Picard: \"Make it so!\"\n\n";
brojac_linija = 0; //resetuj brojac linija
}
}
cout << "Lt. Comm. Data: \"Zalim ali warp faktor 10 nije moguce dostici kapetane!\"\n";
cout << "Capt. Picard: \"Pa naravno da sam znao za to :)\"\n\n";
cout << "Lt. Comm. \"Data: Pritisnite ENTER kapetane!\"";
fflush(stdin); //obrisi bufferovane ENTER-e
cin.get(); //cekaj ENTER za izlazak iz programa
return 0;
}

holodoc
17.8.2006, 0:37
Generalno o čemu se radi u ovom programu. Svi koji su upoznati sa Star Trek-om znaju da se za merenje brzine kretanja objekata koji koriste FTL (Faster Than Light) tehnologiju koristi jedinica „warp“. U principu FTL tehnologija znači da se objekti kreću brzinama većim od brzine svetlosti a da ne bi zalazili u dubinu toga da li je ovo izvodljivo ili ne (zahvaljujući Ajnštajnu :D) ograničićemo se za sada na pretpostavku da je to moguće. Program jednostavno ispisuje odgovarajuću vrednost warp faktora i za tu vrednost prikazuje koliko je taj warp faktor „brži“ od brzine svetlosti. Recimo, warp faktor 1 je ekvivalentan brzini svetlosti 3*10 E+08 metara u sekundiili u prevodu 300 000 000 m/s. No sve ovo nije bitno već je važno da se napomene da se relacija između udela brzine svetlosti i warp faktora iskazuje veoma jednostavnom formulom koja glasi:

Udeo brzine svetlosti = warp faktor ^ 3.333333......

U suštini prava formula glasi „warp faktor na treći koren iz deset“.

Još jedna napomena a to je da ova empirijska formula ne važi na brzinama približnim warp faktoru 10 jer je ovaj faktor teorijski nemoguće dostići zbog tzv. „relativističkog cepanja vremena“, bla, bla, bla,..... Koga ovo više interesuje neka sam potraži „Faster Than Light“ na internetu ili neka me cimne na private da mu pošaljem neke interesantne tekstove i knjige na ovu temu. Za sada je ovo bilo dovoljno za upoznavanje sa time šta program treba da uradi.

Krećemo sa analizom koda.

Prvih par linija:

#include <iostream> // otvaranje standardnog "stream" ulaza-izlaza
#include <cmath> // ovo nam treba za pow() funkciju
#define BROJ_LINIJA 20 //definisanje broja linija za ispis po ekranu

ne bi trebalo da predstavljaju neki problem osim ove poslednje linije. O čemu se ovde uopšte radi. „#define“ se zove pretprocesorska direktiva i služi za direktno prosleđivanje podataka kompajleru u toku prve faze prolaska kroz kod. Naime, pre nego što počne sa tumačenjem koda kompajler pravi tzv. „prvi prolaz“ pri čemu vrši rezervisanje memorije za promenjljive, nizove, sortiranje tabele podataka itd. Pored svega toga kompajler proverava da li postoje pretprocesorske direktive i ako da (u ovom slučaju „#define“) u tom slučaju ih izvršava. Konkretno „#define“ služi da se kompajleru kaže da „promenjljiva“ koja se naziva „BROJ_LINIJA“ sadrži vrednost 20. Zašto sam stavio reč „promenjljiva“ pod navodnike? Iz jednostavnog razloga što vrednosti definisane „#define“ pretprocesorskom direktivom nije baš moguće svrstati pod kategoriju konstanti zbog nekih svojih specifičnosti.

holodoc
17.8.2006, 0:38
Postavlja se naravno i pitanje zašto nismo jednostavno negde na početku koda deklarisali jednu promenjljivu tipa int i definisali njenu vrednost na 20. E pa „#define“ ima za cilj da programeru omogući da veoma lako i jednostavno odmah na početku koda ima pristup nekim od najvažnijih vrednosti u programu. Ovakav način rada je veoma brz i efikasan pa bi trebao da postane praksa prilikom pisanja koda. Inače, sve promenjljive definisane „#define-om “ se po dogovoru pišu velikim slovom i bez prekida. Osim „#define“ direktive postoji još mnogo njih ali za sada je ovo dovoljno.

Inače, zaglavlje „#include<cmath>“ sadrži neke od veoma važnih matematičkih funkcija u C++-u pa pošto ćemo ovde koristiti funckiju pow() potrebno je „include-ovati“ ovo zaglavlje.

Oko „using namespace std;“ se nećemo više raspravljati jer je stvarno bilo priče o ovome mnogo puta u okviru ove teme.

Sledi deo u kome definišemo neke važne promenjljive.

double warp,korak; // deklaracija promenjljivih warp i korak
int brojac_linija; // deklaracija promenjljive brojac_linija
brojac_linija = 0;

Prva promenjljiva „warp“ treba da sadrži trenutnu vrednost warp faktora koji se obrađuje, „korak“ sadrži vrednost na osnovu koje će se warp povećavati (inkrementirati) u svakom koraku dok „brojac_linija“ služi kao brojač ispisanih linija na ekranu na osnovu koga se zaustavlja ispis teksta kada ova promenljiva dostigne određenu vrednost. Ovde treba voditi računa o jednoj jako bitnoj stvarčici a to je da je sve vrednosti promenljivih posle njihove deklaracije potrebno i definisati, odnosno postaviti na njihove početne vrednosti. Razlog za to leži u tome što ako je neko primetio stalno u ovoj priči pominjem reči „deklaracija“ i „definicija“. Te dve stvari treba obavezno razlikovati! Dok „defincija“ promenjljive samo znači da se „objavljuje“ njeno postojanje kompajleru, „definicija“ znači da joj se dodeljuje memorijski prostor i usput možda i početna vrednost. Definicija bi u gornjem slučaju bio red „int brojac_linija;“ dok bi deklaracija sa inicijalizacijom (postavljanjem početne vrednosti) bio red „brojac_linija = 0“. Neko bi pitao zašto je sada toliko važno da se početna vrednost neke promenjljive postavi na početnu vrednost pre upotrebe. Iz jednostavnog razloga što ako se promenjljiva samo „definiše“ interno joj se dodeljuje vrednost sadržaja neke memorijske lokacije tako da je prilikom definicije promenjljive „brojac_linija“ ova najverovatnije dobila neku vrednost tipa „154515343584“ itd. Jasno je zašto bi ovo bilo pogubno prilikom upotrebe brojača u for-next petlji. Eksplicitnu dodela vrednosti ostalim dvema promenljivama „warp“ i „korak“ nije neophodna jer se prva inicijalizuje na početku for-next petlje a druga se odmah na početku programa zamenjuje unosom korisnika. Znači, pod obavezno staviti da se sve „definisane“ promenljive moraju eksplicitno „deklarisati“ odnosno postaviti na početnu vrednost ;)

holodoc
17.8.2006, 0:40
Sledi ispis nekog standardnog zaglavlja da ne bi bilo ono „iz neba pa u rebra“ jer korisnik često ne može da vidi sve one male korisne komentare koje vidi programer.

cout << "************************************************** **" << endl;
cout << "**** Star Trek Warp factor comparator v0.1alpha ****" << endl;
cout << "************************************************** **\n" << endl;

Ovde treba obratiti pažnju na „endl;“ kao alternativni način da se prosledi ekranu novi red. Takođe, u trećem redu se vidi da se mogu koristiti i specijalni znaci („\n“) u kombinaciji sa „endl;“. Ovde bi bilo važno da se shvati šta je konkretno taj „stream“ za čiju se kontrolu prevashodno koristi zaglavlje „iostream“ i još nekoliko dodatnih, za sada manje važnih.

„Stream“ treba shvatiti kao kanal kroz koji prolaze podaci. Postoji dva tipa: ulazni (stdin) i izlazni(stdout) i razlika je samo što se „stdin“ koristi za primanje podataka a stdout za njihovo ispisivanje (najčešće na ekran). Znači, kada se stream jednom „otvori“ (komandom „cout“) on prihvata redno svaki podatak koji mu se prosledi. Oni podaci koji se iskoriste u toku obrade „izlaze“ iz „stream-a“ dok oni koji ne prođu obradu ostaju „bufferovani“ u memoriji. Upravo u tome je problem kada sam pričao o „prebrzom“ ENTER-u kod unosa podataka. O tome kasnije.

Sledeći deo bi takođe trebao da bude jasan. Čisto teatralnosti radi uklopio sam sve u scenu iz Star Trek-a :)
cout << "Lt. LaForge: \"Koji korak ispisa zelite kapetane?:\"\n"; // korak?
cout << "Capt. Picard: \"Neka korak bude ";
cin >> korak; //unos koraka
cout << "\n\nWarp faktor\tBrzina svetlosti\n"; //prikaz malog zaglavlja

Ovde se vidi primena „\n“ na početku ispisa „streama“. Treba se malo zadržati na isporbavanju različitih kombinacija postavljanja specijalnih karaktera pri ispisu.

Sad tek počinje zabava :)

for(warp = 0.0;warp < 10;warp+=korak){ //ovde pocinje kompletan posao
cout << warp << "\t ->\t" << pow(warp,3.333333) << "x\n"; //ispis warp faktora
brojac_linija++; //inkrementiranje brojaca
if(brojac_linija == BROJ_LINIJA){ //ukoliko je ispisan granicni broj linija
cout << "Lt. LaForge: \"Kapetane dajte komandu za nastavak ispisa...\""; //ispisi tekst
fflush(stdin); //obrisi bufferovane ENTER-e
cin.get(); //cekaj ENTER za nastavak
cout << "Capt. Picard: \"Make it so!\"\n\n";
brojac_linija = 0; //resetuj brojac linija
}
}

holodoc
17.8.2006, 0:41
Ovde se demostrira upotreba for-next petlje u ulozi brojača. For-next petlja u zagradama sadrži tri podatka odvojena sa „;“ pri čemu je samo srednji obavezno navesti dok su druga dva opciona. U okviru ove konkretne petlje prva stavka „warp=0.0“ služi za postavljanje početne vrednosti brojanja. Mala napomena. Za potrebe brojanja ovde nam je potrebna promenjljiva koja može da smešta brojeve sa zarezom. To je promenjljiva „warp“. Dobra je praksa da se prilikom postavljanja početne vrednosti promenjljive tipa „double“ umesto vrednosti „0“ stavi vrednost „0.0“ da bi se znalo da se broji decimalnim brojem. Postaviti „0“ na početku nije greška ali je preporučeni način korišćenje vrednosti „0.0“.
Središnji deo for petlje predstavlja uslov koji treba biti izvršen da bi se izašlo iz nje. U ovom konkretnom slučaju uslov je da promenjljiva „warp“ treba da dostigne vrednost jednaku ili veću od broja „10“. U svim ostalim slučajevima nastavlja se sa brojanjem. Treći deo služi za definisanje vrste obrade nad samom promenjljivom koja se posmatra kao uslov u drugom delu. Najčešće se ovde vrši inkrementiranje ili dekrementiranje. U konkretnom slučaju iskorišćen je izraz „warp+=korak“. Ovo treba čitati kao „warp=warp+korak“. Znači, svakim izvršavanjem for-next petlje vrši se inkrementacija promenjljive „warp“ za vrednost „korak-a“.

Sledeći red služi za konkretnu obradu podataka. Ispisuje se vrednost koju sadrži promenjljiva „warp“ i obrađena vrednost warpa predstavljenog brzinom svetlosti. Za „dizanje na stepen“ se koristi funkcija „pow() „koja je sastavni deo zaglavlja „cmath“. U isto vreme se inkrementira vrednost brojača linije jer je upravo ispisan jedan red.

cout << warp << "\t ->\t" << pow(warp,3.333333) << "x\n"; //ispis warp faktora
brojac_linija++; //inkrementiranje brojaca
Sledećih par linija sadrže još par interesantnih koncepata. Naime, u okviru for-next petlje postavlja se jedan „if“ čiji je zadatak da ispita da li je promenljiva „brojac_linija“ dostigao vrednost koju sadrži „BROJ_LINIJA „ koji je definisan na početku programa. Kao što se videlo u prethodnom delu koda promenjljiva „brojac_linija“ se poveća za jedan svaki put kada se ispiše linija teksta u okviru for-next petlje. Na ovom konkretnom mestu „if“ proverava već pomenuti uslov i ako da u tom slučaju treba da na trenutak pauzira izvršavanje programa sve dok „kapetan“ ne pritisne taster ENTER za nastavak ispisa. Naravno da je ovo od izuzetne važnosti ako korisnik unese korak od recimo „0.01“ pa će biti negde oko 1000 linija za ispis.

holodoc
17.8.2006, 0:42
Kao što je već naglašeno, ovde nastaje jedan problem a to je da smo već unosli vrednost preko tastature i da smo na kraju unosa koristili pritisak na ENTER. Posledica toga je da zbog brzine programa par ENTER-a sigurno „procurelo“ u već pomenuti ulazni „stream“ pa će program pri prvih par nailazaka na ovaj deo koda jednostavno iskoristiti te buffer-ovane ENTER-e a korisnik će ostati „kratak“ za par desetina linija ispisa. U par prethodnih primera koristili smo poziv funkcije „system“ koja je pauzirala izvršenje sve do novog pritiska ENTER-a. Ovde to baš i ne bi bilo elegantno rešenje jer bi smo stalno vukli onaj tekst „Press a key to continue....“ a s obzirom da smo ovde napravili jednu malu „scenu“ bilo bi lepo da možemo da napišemo nešto srpski. E za tu potrebu koristimo funkciju „fflush“ :)

if(brojac_linija == BROJ_LINIJA){ //ukoliko je ispisan granicni broj linija
cout << "Lt. LaForge: \"Kapetane dajte komandu za nastavak ispisa...\""; //ispisi tekst
fflush(stdin); //obrisi bufferovane ENTER-e
cin.get(); //cekaj ENTER za nastavak
cout << "Capt. Picard: \"Make it so!\"\n\n";
brojac_linija = 0; //resetuj brojac linija
}


Praktično deo koji odrađuje celu „hold&wait“ operaciju smešten je u sledećih par redova.

cout << "Lt. LaForge: \"Kapetane dajte komandu za nastavak ispisa...\""; //ispisi tekst
fflush(stdin); //obrisi bufferovane ENTER-e
cin.get(); //cekaj ENTER za nastavak

Prvi red jednostavnu ispisuje srpsku verziju „Press a key to continue....“. Drugi red poziva funkciju „fflush()“ koja ima zadatak da obriše sve buffer-ovane podatke (višak onih ENTER-a) iz odgovarajućeg „stream-a“. U konkretnom slučaju treba nam „stdin“ pošto on sadrži sve unete podatke sa tastature. Posle ove komande jednostavno nema više buffer-ovanih podataka i komanda „cin.get();“ neće biti preskočena par puta. Veoma jednostavno i elegantno ;)

holodoc
17.8.2006, 0:43
Ostatak koda je poprilično jasan osim možda zašto je sledeći kod ostavljen van for-next petlje.

cout << "Lt. Comm. Data: \"Zalim ali warp faktor 10 nije moguce dostici kapetane!\"\n";

Već je rečeno da warp faktor 10 nije moguće koristiti u kombinaciji sa formulom koja je navedena pa je shodno uslovu for-next petlje na kraju obrade svih vrednosti jednostavno ispisano da taj faktor nije moguće izračunati.

I pre nego što završim još jedno mlo uputstvo stilske prirode. Uvek kada pišete kod gledajte da celine u obradi odvojite odnosno da recimo odvojite jednim redom deo koji se koristi za unos informacija i deo koji se koristi za njihovu obradu. Takođe, svaki put kada započnete novi blok koristite tabulator da bi ste uvukli taj deo. Ovo UŽASNO poboljšava čitjivost teksta.

I sad na kraju samo treba reći da je ovaj primer relativno lak iako itgleda poprilično drugačije od svega navedenog do sada. Ovim kodom sam u stvari hteo da demonstriram par izuzetno korisnih stvari koje će pomoći svakom početniku da eventualno određene delove improvizuje ili bar eleiminiše greške koje se javljaju u radu.

Toliko za sada ;)
:ciao:

holodoc
17.8.2006, 19:53
Ima li uopšte nekoga da prati ovu temu ili ja to onako čisto bezveze punim sadržajem :) Ima li bar nekoga da čita ovo moje čudo?

bobi
17.8.2006, 19:55
Ima li uopšte nekoga da prati ovu temu ili ja to onako čisto bezveze punim sadržajem :) Ima li bar nekoga da čita ovo moje čudo?
Ne. :)

3dM@niak
17.8.2006, 21:14
a citam i uzivam :) puni dalje :D :D

Nemesis
17.8.2006, 23:33
Pratimo, pratimo. :D

Nego, ne znam koliko je pregledno praviti tutorijale preko foruma. Da sam na mestu nekog pocetnika ne znam koliko bi mi ovaj pristup odgovarao ali respect za ono sto radis. :dedica:

Ja sam davno radio tutorijale (za pascal dok se jos ucio na fakultetu) pa ako ti treba pomoc (ne u smislu da si nesposoban vec za fizikaliju) mozes da me cimnes.

holodoc
17.8.2006, 23:48
Pa meni je u suštini to možda nekih sat vremena za tastaturom a onima koji ovde počinju može da bude par dana manje lupanja glave. Ovo nije ni namenjeno za neko detaljisanje. To ne bi tek moglo da se izvede :)

Osnovna ideja mi je da svi koji već koriste neku knjigu iz C++-a imaju mesto gde će moći da pogledaju par "insider" trikova koji mogu da im olakšaju učenje. A pošto sam ovde najčešće korišćenu knjigu "Teach yourself C++ in 21 days" (bar sudeći po privatnim porukama koje dobijam) "prežvakao" bar jedno 20 puta, tačno znam na kojim mestima bi bilo dobro pojasniti neke stvari.

@Nemesis
Što se tiče pomoći imaću te u vidu ako nešto zatreba. Naravno pod uslovom da si sa Pascal-a prešao na C++ :D ili bar C.

Nemesis
17.8.2006, 23:56
...Naravno pod uslovom da si sa Pascal-a prešao na C++ :D ili bar C.

Hmmm. Pa znam po neku naredbu. :cool:

Andross
18.8.2006, 1:53
Aaa pratimo mi.Samo ti pisi.:) Sto se tice greske u povratnom tipu to se desilo jer sam bio taj dan smoren zbog OpenGL-a pa nisam obracao paznju:D Inace dobro sto si primetio;)

holodoc
18.8.2006, 3:01
Dobro. Ako je tako ovo ima bar i malo smisla. Ako mene ne mrzi da pišem što vas da mrzi da čitate :) Okej, dosta small-talka!

Pre nego li započnem celu priču naravno ide kod.

/*********************************************
Naziv: Tablica mnozenja

File: TablicaMnozenja.cpp

Author: holodoc

Date: 18.08.2006.

Opis: Demonstracija upotrebe ugnjezdenih for-next petlji na primeru ispisa tablice
mnozenja.
************************************************/
#include <iostream> // ovo vec i vrapci znaju cemu sluzi
using namespace std; // a tek ovo :)

int main(){
int broj_redova, broj_kolona, red, kolona; // deklarisanje promenjljivih
broj_redova = broj_kolona = 10; // postavljanje pocetnih vrednosti

for(red = 1; red < broj_redova; red++){
cout << "------------------------------------------------------------------" << endl;
for (kolona = 1; kolona < broj_kolona; kolona++){
cout << kolona * red << "\t";
}
cout << "\n";
}
fflush(stdin); // ovo smo naucili sta znaci prosli put
cout << "ENTER za izlaz iz programa...." << endl;
cin.get();
return EXIT_SUCCESS; // vracanje povratne vrednosti o uspesno izvrsenom programu
}

holodoc
18.8.2006, 3:03
Sledi priča o nečemu što se stvarno često koristi u programiranju a naziva se “ugnježdavanje” petlji. Znam da zvuči kao neki pojam koji bi možda više odgovarao Frojdu ili nekom iz njegove branše ali nije tako. Ugnježdavanje podrazumeva postavljanje bloka kontrole toka istog tipa jedan u okviru drugog. Znam da ovo zvuči malo konfuzno ali bi objašnjenje otprilike glasilo da ugnježdavanje podrazumeva da recimo neki “for” blok u sebi sadrži “for” blok. Primera radi u C-u i C++-u bi to bio ovakav raspored za recimo par “for” petlji mada se ugnježdavanje često radi i sa “if” i ostalim blokovima za kontrolu toka.

for(..;..;..){
for(...;....;...){
......
}
}
Neko bi se sada logično zapitao čemu sve ovo. E pa postoji razlog i to debeo a on leži u činjenici da se „ugnježdavanje“ veoma često koristi u game-devu prilikom takozvanog matričnog računa. O tome šta su matrice (u najosnovnijem mogućem obliku) i matrične transformacije najverovatnije u sledećoj „lekciji“ :) Za sada treba samo zapamtiti da se „ugnježdavanje“ koristi izuzetno često kod matrica gde svaka dodatna „ugnježdena“ petlja predstavlja jednu dodatnu dimenziju. Ako ste mislili da je po toj logici onda za 3D engine potrebno napraviti trostruko „ugnježdenu“ petlju onda ste se prevarili jer je za pravu 3D transformaciju potrebno četiri dimenzije :) Izgleda smešno ali tako je. O tome kada na to dođe red. Nadam se :)

Da se vratim na ugnježdene petlje. Krenimo redom.

Prvih par redova stvarno ne bi trebalo više uopšte da objašnjavam tako da ću ovaj put da ih preskočim.

Sledeći kod služi za definisanje par potrebnih promenjljivih.
int broj_redova, broj_kolona, red, kolona; // deklarisanje promenjljivih
broj_redova = broj_kolona = 10; // postavljanje pocetnih vrednosti
Ovde namerno nisam iskoristio „#define“ pretprocesorsku direktivu za definisanje vrednosti broja redova i kolona iako bi to u ovakvom programu bilo malo logičnije. To nisam uradio iz jednog banalnog razloga a to je da bih demostrirao još jednu „specijalku“ C-a i C++-a. To je tzv. višestruka dodela vrednosti u okviru jednog izraza.

holodoc
18.8.2006, 3:04
Naime sigurno vam je zapao za oko sledeći red.
broj_redova = broj_kolona = 10;
O čemu se ovde uopšte radi i kako to uopšte funkcioniše. C++ ima tu osobinu da se dodeljivanje vrednosti promenjljivama u okviru izraza dodeljivanja (ovo je u stvari naziv za jednako operaciju „=“) vrši sa desne na levu stranu. Znači, kada kompajler krene sa interpretacijom ovog reda gore on ga posmatra ovako: „aha, 10 je jednako promenjljivoj ’broj_kolona’ a sve to je jednako promenljivoj ’broj_redova’“. To opet treba da znači da bi ovaj izraz bio identičan kao izraz: broj_redova = (broj_kolona = 10). Ko poznaje bar malo matematiku zna šta znače ove zagrade a ko ne saznaće upravo sada. Zagrada treba da označi da se „ograđeni“ deo treba posmatrati kao celina prilikom izračunavanja. U ovom konkretnom slučaju nije teško prozreti šta je namera izraza ali se u slučajevima kada su izrazi kompleksniji zagrade obavezno treba koristiti bez obzira što vam neki mladi matematičar Pitagora u blizini možda pričao kako ih nije potrebno koristiti u datom slučaju. Osnovni razlog za to je što nemaju sve operacije isti prioritet pa je potrebno voditi računa o tome koja operacija je prioritetnija u slučaju da se zagrade ne koriste. Ovo posebno važi za one koji i dalje misle da je „144 / 12 + 5 * 3 = 27“ ;)

Zato ja kažem, koristite zagrade uvek jer će vam olakšati život.

Sledećih par redova odrađuju lavovski deo posla u ovom primeru.
for(red = 1; red < broj_redova; red++){
cout << "------------------------------------------------------------------" << endl;
for (kolona = 1; kolona < broj_kolona; kolona++){
cout << kolona * red << "\t";
}
cout << "\n";
}
Naime, u ovom konkretnom primeru promenjljive „broj_redova“ i „broj_kolona“ sadrže vrednosti broja redova odnosno kolona do kojih će se vršiti ispis tablice množenja. U ovom konkretnom primeru treba obratiti pažnju da se proizvod množenja dva činioca dobija u preseku odgovarajuće kolone i reda, osim broja jedan koji je ostavljen zasebno kao broj koji množi samog sebe. Promenjljive „red“ i „kolona“ sadrže trenutnu vrednost reda i kolone u tablici množenja odnosno pozicije koja se trenutno izračunava i ispisuje.

holodoc
18.8.2006, 3:05
Kako ovo sve uopšte radi? Prva „for“ petlja se koristi da bi vršila brojanje od 1 sve do trenutka kada promenjljiva „red“ dostigne vrednost „10“. Znači u suštini ovaj deo bi se izvršio tačno 9 puta jer „deseti“ već ne bi ispunjavao uslov „<10“. E sada caka je u tome šta se dešava kada u okviru te prve „for“ petlje program naiđe na još jednu „for“ petlju. U tom slučaju ta druga petlja će se „vrteti“ sve dok ne ispuni svoj uslov odnosno broj kolona ne bude jednak broju „10“. U tom slučaju se druga „for“ petlja završava i kreće odbrojavanje reda prve for petlje i tako u krug sve dok se ne izbroji ukupno „red*kolona“ vrednosti. Znači, sadržaj promenljivih „red“ i „kolona“ u toku izvršavanja je seldeći:
1,1
1,2
1,3
...
1,9
2,1
2,2
...
2,9
3,1
....
9,8
9,9.

A zašto bi nam ovako nešto uopšte trebalo? Pa iz jednostavnog razloga što smo već rekli u postavci zadatka da se rezultat množenja za određen red i kolonu dobija množenjem trenutnog reda i trenutne kolone. Pa to znači da je proizvod prvog reda i devete kolone 9 odnosno proizvod trećeg reda i sedme kolone 27. Upravo deo
cout << kolona * red << "\t";
je zadužen da ispiše vrednost množenja trenutnog reda i kolone.

Sve ostalo u zadatku je samo šminka koja je postavljena na pravo mesto da bi se dočarali neki elementi.

Recimo deo koda
cout << "------------------------------------------------------------------" << endl;
je zadužen da kada se završi ispisivanje u okviru reda uradi ispis po jedne ovakve linije koja će odvajati redove.

Ostatak od ovog ostataka je opisan juče. Konkretno mislim na deo sa „fflush-om“.

Nadam se da nisam bio preterano konfuzan u vezi ovih petlji ali treba shvatiti da je ovo jedan veoma važan deo u C++-u. Ako ima pitanja slobodno ih postavite.

Toliko za sada.

Poz.:ciao:

Andross
18.8.2006, 23:46
Eh taman ja hteo da blebecem o petljama :) Sad posto si pokrio jednu petlju pa cu ja da o svima kazem ponesto.Znaci imamo tri petlje(imamo i cetvrtu al' se ona skoro nikad ne koristi):
1:
while(uslov)
{
iskazi;
}

2:
do
{
iskazi;
}while(uslovi);

3:
for(broj; inkrement broja; uslov)
{
iskazi;
}

Sada prva petlja while radi nesto sve dok je uslov ispunjen.Na primer:
int i = 0;
while(i < 10)
{
std::cout << "Zdravo!\n";
i++;
}Znaci ova petlja ce ispisivati zdravo sve dok je i manje od deset.Ono i++ moramo dodati jer ce u suprotnom petlja biti vecna tj. i ce uvek biti 0.Eh uvek postoji stari dobri while(true) (u duhu C++-a) tj. while(1) (u duhu C-a).To su beskonacne petlje.Njih mozemo prekinuti samo sa break.(i verovatno sa jos necim sto ja nisam izvalio:D ).
Ajmo sad na drugi tip.do...while je prakticno isto sr***e ko i while samo sto ce se uvek ali uvek jednom izvrsiti.Znaci ako je i 10 a uslov je i < 10 petlja se opet jednom izvrsava.
Treci tip je pomenuo holodoc.To je for petlja.Posto je holodoc vec objasnjavao o toj petlji necu da vas smaram sa njom.Samo da pomenem da postoji for(;; ) sto je isto ko i while(true).Vi mozete bilo koji deo petlje for izostaviti(i napisati ; )!
Cetvrti i najvise ukleti je goto.O njemu necu da pricam jer je toliko uklet i uopste nije dobar da nije vredan paznje.:D Ta petlja je prokletsto za programere(moje licno misljenje), kao i makroi(bolje kosristiti sablone tj. template i opet moje licno misljenje).Eto to je sve od mene.Ako nesto nije jasno samo me cimnite.

/edit od brzine nisam pravilno formulisao deo o do...while :) Znaci gde kaze: "uvek ali uvek jednom izvrsiti" treba bar jednom izvrsiti.Znaci do...while ce se bar jednom izvrsiti.

voodoo_
19.8.2006, 0:16
Sada prva petlja while radi nesto sve dok je uslov ispunjen.Na primer:
int i = 0;
while(i < 10)
{
std::cout << "Zdravo!\n";
i++;
}
A ovo se kraće može napisati i kao
int i=0;
while ((i++) < 10) std::cout << "Zdravo!\n";
blagodareći C-ovskoj mogućnosti da izraz ima i bočne efekte :)

Andross
19.8.2006, 16:21
E da da malo pojasnim inkrement.Inkrement uvecava datu varijablu za jedan.Oznaka je varijabla++.Sada imamo da tipa inkrementa.Prefiks-inkrement i postfiks-inkrement.
Prvi je sa prefiksom znaci ++varijabla.Ovo je veoma vazno!Pre inkrement prvo uveca vrednost varijable pa je onda dodeljuje.Primer:
int var1 = 0;
int var2 = 0;
var2 = ++var1;
Sada var1 i var2 ce posle inkrementa imati vrednost 1(var2 smo dodelili inkrementiranu var1).Nadam se da je to bilo jasno.
Drugi tip je sa postfiksom.Znaci vec pomenuti var1++.Ovo je drugacije od prvog.Postfiks inkrement prvo vraca vrednost varijable pa je onda inkrementira!Sta to znaci.Na primer:
int var1 = 0;
int var2 = 0;
var2 = ++var1;
var2 = var1++;
Znaci prvo su varijable postavljene na 0.Posle prvog(prefiks)inkrementa imaju vrednost 1.Posle drugog(postfiks) var1 ima vrednost 2 a var2 ima vrednost 1.To je zato sto(kao sto sam vec rekao) postfiks inkrement prvo vraca vrednost pa je tek onda inkrementira.Ako nekome nesto nije jasno neka me cimne.
Pozz. :ciao:

voodoo_
19.8.2006, 17:18
Zapravo, to je ono što se zove "bočni efekat", s tim što se u slučaju A++, prvo iskoristi vrednost promenljive A u izrazu u kome se nalazi pa se tek onda poveća, dok se kod ++A, prvo poveća pa onda iskoristi. Znači u onom gore slučaju, ((i++) < 10) prvo pita da li je trenutna vrednost "i" manja od 10 pa je onda poveća.

holodoc
21.8.2006, 0:32
Ovoga puta sledi nešto što je malo opipljivije i bliže svetu igara. U pitanju je simulator Loto-a koji vam omogućava da simulirate izvlačenje loto kuglica pri čemu imate kontrolu nad brojem kuglica koje sačinjavaju jednu kombinaciju. Program takođe prikazuje neke od osnovnih koncepata programiranja u okviru Windows okruženja kao što je „Mađarska notacija“. Takođe, demonstriran je na praktičnom primeru jedan od najčešće korišćenih algoritama za sortiranje jednodimenzionih nizova koji se bazira na tzv. „Nassi-Schneidermann” (Nasi-Šnajderman) algoritmu i njihovim dijagramima.

Pošto je kod malo podugačak možete ga skinuti kompletno u obliku .zip arhive koja se nalazi prikačena za ovaj post koja pored glavnom fajla “Loto.cpp” sadrži i DevC++-ov workspace za isti.

Pre samog početka jedna mala korisna napomena. Naučite se da koristite pravilne i precizne nazive onoga što koristite. Znači, kako napredujete sa učenjem C++-a pokušajte da se potrudite da ne mešate izraze kao što su „deklaracija“ i „definicija“, „pretprocesorksa direktiva“ i „konstanta“ ili još gore „promenjljiva“ itd. Veoma je bitno da naučite kako se šta zove u bilo kom programskom jeziku a kamoli C++-u koji obiluje terminima. Sada to još uvek ne mora da predstavlja neki preterani problem ali kada u celu priču uđu termini kao što su „klase“, „konstruktori“, „destruktori“ i slični može da dođe do velike zbrke. Takođe ne bi bilo loše ovde pomenuti da će vam ovo bitno pomoći u slučajevima kada budete radili sa ljudima u timu jer u takvom slučaju sigurno neće biti vremena da vam kolege objašnjavaju razliku između „definicije“ i „deklaracije“ ;)

Pa da krenemo.
#include <iostream> // ovo nam je vec poznato
#include <ctime> // ovo zaglavlje treba za postavljanje semena srand funckije
#define UKUPNO_BROJEVA 39 // ukupan broj kuglica (brojeva u igri)
Ovaj deo koda bi trebao da bude već “čitljiv” i početnicima ili bar onima koji su pratili ovaj kurs. Jedino bih trebao da naglasim da je od standardnih zaglavlja uključeno i zaglavlje “ctime” koje sadrži funkciju “time()” a koja će se u programu koristiti za postavljanje tzv. “semena” generatora slučajnih brojeva.
Pretprocesorska direktiva “#define” definiše “konstantu” “UKUPNO_BROJEVA” koja sadrži ukupan broj kuglica iz kojih se izvlači kombinacija. Pošto mislim da naš “Loto” koristi kombinaciju “7 od 39” ovde je u pitanju taj sistem. Možda grešim jer odavno nisam igrao loto ali u svakom slučaju oba parametra možete menjati u kodu tako da ne bi trebalo da bude problema.

holodoc
21.8.2006, 0:33
Pre nego što pređem na preostali deo koda sledi upoznavanje sa jednim od najvažnijih pravila prilikom programiranja u C++-u u Windows-u. Naime, u jednoj firmi koja zapošljava hiljade radnika, kao što je Microsoft veoma brzo se javio problem objedinjavanja projekata u jednu celinu na kojima radi ogroman broj ljudi. Shvativši da nešto mora da se uradi povodom tog problema čelnici Microsoft-a daju kao zadatak jednom od svojih radnika Charles-u Simonyi-u (Čarls Simonji) da napravi skup pravila i konvencija o obeležavanju svih važnijih delova koda i načinu njihovog pisanja. Pošto je Simonji bio mađar otuda i naziv “mađarska notacija”. Napominjem na ovom mestu da ne treba mešati mađarsku i poljsku notaciju pošto prva predstavlja konvenciju o pisanju koda u Windows-u dok druga služi za predstavljanje matematičkih operacija.

Mađarska notacija inače definiše načine na koje se obeležavaju promenjljive, funkcije, tipovi, konstante, klase i parametri. Neka od najvažnijih pravila je da se tip promenjljive obeležava malim slovom (ili grupom slova) i to recimo za cele brojeve se koristi “n”,”i”, za stringove “s” ili “str”, za bool promenjljive “b” itd. Znači, u sledećem kodu
int iKombinacija[7]; // niz sa celim brojevima koji ce da sadrzi kombinaciju izvlacenja
int iBrojKuglica = 7; // pocetni broj kuglica u igri
promenjljiva “iKombinacija” predstavlja integer odnosno preciznije niz od 7 elemenata koji sadrži integere. Što se tiče funkcija važi jedno veoma važno pravilo a to je da se prilikom imenovanja ne smeju koristiti “donje” crte “_” i da ne smeju da postoje space-ovi između reči. Svaka reč koja sačinjava naziv funkcije mora da počinje velikim slovom. Primera radi sledeći naziv je po mađarskoj notaciji
void SortiranjeNiza();
dok sledeći nije
void sortiranje_niza();
Kada smo već kod ovih promenjljivih važno je napomenuti još jednu stavku na kojoj smo bitno zasnivali kod u ovom programu. U pitanju su tzv. globalne promenljive. Naime, sve promenjljive koje se deklarišu u okviru neke funkcije se nazivaju privatnim tj. postoje samo u okviru date funkcije. Primera radi, iako se u skoro svakoj funkciji koda pojavljuje promenjljiva “iBrojac” one međusobno nemaju apsolutno nikakve veze jer svaka postoji u okviru svoje funkcije. Ovo je jedna veoma bitna stavka. Pa opet, ovde smo iskoristili tzv. globalne promenljive koje su vidljive celom programu tj. svim funkcijama. To su promenljive koje su pomenute gore. Znači, da bi promenljiva bila vidljiva svim funkcijama u programu mora se definisati van funkcija (čak i main-a).

holodoc
21.8.2006, 0:34
Iako je u ovom programu korišćenje globalnih promenjljivih dobro došlo njih ipak treba zaobilaziti kad god je to moguće jer se u većim projektima veoma često može desiti da slučajno dođe do zamene neke promenjljive koja je definisana kao globalna i to čak ako se njena promena vrši u nekoj funkciji u kojoj je deklarisana lokalana promenljiva. Zato je u običnom C-u ponekada malo teže zaobići korišćenje globalnih promenjljivih dok je u C++-u potreba za ovako nečim potpuno eliminisana uvođenjem par klasa. Ali to je već malo naprednija priča.

Sledeći kod definiše tzv. prototipove.

// deklarianje prototipova funkcija
void PromenaNrKuglica();
void Izvlacenje();
void SortiranjeNiza();
void IspisKombinacije();

Na njima se neću dugo zadržavati ali ću samo napomenuti da su prototipovi više namenjeni pronalaženju grešaka u kodu nego bilo čemu drugom. Drugim rečima, može se reći da su prototipovi “deklaracije funkcija” koje imaju za cilj da ne dozvole kasnije greške prilikom prosleđivanja argumenata. Ono što je važno za prototipove je to da ako funkcija sadrži argumente u prototipu te funkcije nije neophodno navesti nazive argumenata već samo njihov tip. Primera radi kod tipa
Void PromenaNrKuglica (int, int);
je sasvim OK.

Sledi par funkcija koje će kasnije biti pozivane iz “main” funkcije. Naravno i kratak opis svake.

holodoc
21.8.2006, 0:36
void PromenaNrKuglica(){
//sipisivanje uvodnog teksta
cout << "\nTrenutni broj aktivnih kuglica je " << iBrojKuglica << ".\n";
cout << "Unesite nov broj kuglica pri izvlacenju: ";
cin >> iBrojKuglica; //unos novog broja kuglica
cout << "Sva sledeca izvlacenja sadrzace " << iBrojKuglica << " kuglica!\n";
cout << "\nENTER za povratak u glavni meni....\n\n";
fflush(stdin); //brisanje buffer-a stdin-a
cin.get(); //ajd neka neko cukne nesto na tastaturi

}
Služi za promenu broja kuglica koje se koriste prilikom izvlačenja. Pošto je promenjljiva globalna jedino što treba da uradimo je da upitamo korisnika koliko kuglica želi tokom izvlačenja i da se njegova unešena vrednost snimi u promenjljivu “iBrojKuglica”.

Sledeća funkcija služi za simulaciju "izvlačenja" brojeva.
void Izvlacenje(){
int iBrojac, iTragac; // deklarisanje promenjljivih za brojanje u for petljama
bool bNovBroj; //sluzi za indikaciju da li je izvuceni broj jedinstven u kombinaciji
srand((unsigned)time(NULL)); // postavljanje semena generatora slucajnih brojeva

for(iBrojac = 0; iBrojac < iBrojKuglica; iBrojac++){ //glavna petlja izvlacenja
do{
iKombinacija[iBrojac] = rand() % UKUPNO_BROJEVA + 1;
bNovBroj = true; // resetovanje promenjljive unikatnosti :)
for (iTragac = 0; iTragac < iBrojac; iTragac++){
// provera da li je izvucen broj vec u kombinaciji
if(iKombinacija[iBrojac] == iKombinacija[iTragac]){
bNovBroj = false; //ukoliko je izvuceni broj duplikat bNovBroj obija vrednost false
}
}
} while (!bNovBroj); //petlja se vrti sve dok izvuceni broj nije jedinstven
}
}
Ovde postoji par interesantnih stvari. Prvo je korišćenje funkcije “srand()” koja služi za tzv. postavljanje “semena” (seed) generatora slučajnih brojeva. Drugim rečima ova funkcija ima za cilj da pripremi generator (šta je to u konkretnom slučaju nije važno) da generiše slučajne brojeve tako što će da definiše njegovu početnu vrednost. Najčešće korišćeno seme za “srand()” je trenutno vreme a implementacija tako nečega vidi se iz gornjeg koda.
Od ostalih stvari veoma je važno zapamtiti deo koda koji je u okviru “for” petlje (zajedno sa njom). Treba upamtiti da je ovo jedan od najpoznatijih algoritama za generisanje brojeva u slučaju da mora biti ispunjen uslov da ne sme da se pojave duplikati u kombinaciji. Treba ga zapamtiti. Čisto onako vežbe radi pokušajte da provalite kako funkcioniše. A da, izrazi tipa “!bNovBroj” su sasvim normalni u C++-u jer svaka vredbost izraza u zagradi kod while-a koja je različita od broja “0” ili ima vrednost “true” automatski se smatra kao ispunjen uslov. Primera radi petlja “while(1){};“ vrtela bi se beskonačno.

holodoc
21.8.2006, 0:37
Sledeća funkcija služi za sortiranje niza da bi preglednost „ispljunutih“ brojeva bila veća.
// Funkcija koja sortira izvucenu kombinaciju
void SortiranjeNiza(){
int iNajmanjiIndeks; // pormenjljiva sadr\i vrednost trenutno najmanjeg indeksa
for(int i = 0; i < (iBrojKuglica - 1); i++){ //pocetak petlje sortiranja
int iNajmanjiIndeks = i; //dodela vrednosti brojacu i kao najmanjem indeksu
for(int j = i + 1; j < iBrojKuglica; j++){ //uporedjivanje vrednosti sa njemu desnim
if (iKombinacija[j] < iKombinacija[iNajmanjiIndeks]){
iNajmanjiIndeks = j; //definisanje nove najmanje vrednosti ako je broj manji
}
}
if (iNajmanjiIndeks > i)
{
// zamena mesta u nizu jednostavnim koriscenjem pomocne promenjljive
int iTemp; //deklarisanje pomocne promenjljive
iTemp = iKombinacija[i]; // [1] -> iTemp
iKombinacija[i] = iKombinacija[iNajmanjiIndeks]; //[1] -> [2]
iKombinacija[iNajmanjiIndeks] = iTemp;
}
}
}

Ovo je takođe jedan poznat algoritam i naziva se „Nassi-Schneidermann (Nasi-Šnajderman) algoritam sortiranja sa inkrementiranjem“. Osnovni princip funkcionisanja ovog algoritma je da se porede vrednosti dva susedna polja u nizu. Ukoliko je „desni“ veći vrši se rotacija odnosno zamena mesta ta dva člana i tako sve do kraja niza ukoliko je ispunjen uslov da je „levi“ član veći od „desnog“. U suštini ne treba biti mnogo glavu oko ovoga jer i u samom C++-u postoji funkcija „qsort()“ za sortiranje nizova ali nije na odmet pogledati kako bi se to radilo peške.

Sledeća funkcija jednostavno ispisuje datu kombinaciju.
void IspisKombinacije(){
int iBrojac; //jednostavan brojac
cout << "\nDobitna kombinacija glasi:\n\n";
for(iBrojac = 0; iBrojac < iBrojKuglica; iBrojac++){
cout << "[" << iKombinacija[iBrojac] << "]";
}
cout << "\n\nCestitamo (ne)srecnim dobitnicima :)\n\n";
cout << "ENTER za povratak u glavni meni....\n";
fflush(stdin);
cin.get();
}

Ništa specijalno kod ovoga.

holodoc
21.8.2006, 0:38
E sada ide glavni deo koda.

Prvo se deklarišu neke važne promenjljive koje će se koristiti u kodu:
int iBrojac = 0;
int iRed, iKolona;
char cKomanda;
int nStatus;
Na ovom mestu jedna važna napomena u vezi promenjljive „cKomanda“. Ona se koristi u programu kada je potrebno učitati od korisnika određenu opciju iz menija, odnosno kada korisnik treba da izabere opciju u glavnom meniju. Iako su ovde u pitanju brojevi (0,1,2) da smo iskoristili „int“ umesto „char“ imali bi smo ozbiljan problem sa programom. Naime, glupostima korisnika programa nikad kraja pa programer uvek treba da se postavi u poziciju krajnjeg korisnika kada testira svoj program. Da smo ovde iskoristili „int“ tip podataka za skladištenje unetog broja imali bi smo problem ako bi korisnik recimo uneo neko slovo ili znak. U tom slučaju bi posledice bile nepredvidive i pored činjenice da je kasnije u „switch“ petlji ostavljeno mesta za „provokaciju“ programa. Zato se pri unosu opcije u glavnom meniju uvek koristi tip podataka „char“.
do {
//Glavna petlja Glavnog menija
//Ispis izgleda glavnog menija
for(iRed = 1 ;iRed <= 3;iRed++){
for(iKolona = 1 ;iKolona <= 40; iKolona++){
if((iRed == 2) && (iKolona == 1)){
cout << "****** KOSTOLACKA NARODNA LUTRIJA ******";
iKolona += 39;
continue;
} else {
cout << "*";
}
}
cout << endl;
}
cout << "\nIzaberite opciju:\n" << endl;
cout << "\t1. Promena broja kuglica\n";
cout << "\t2. Izvlacenje!!\n";
cout << "\t0. Necu vise da se igram :)\n\n";
cout << "\tVas izbor (0-3): ";
cin >> cKomanda; // unos komande
//switch petlja koja kontolise granjanje glavnog programa
switch (cKomanda){
case '0':
// opcija za izlazak iz programa
nStatus = 0;
break;
case '1':
// promena broja kuglica
PromenaNrKuglica();
break;
case '2':
//izvlacenje
Izvlacenje();
SortiranjeNiza();
IspisKombinacije();
break;
default:
// opcija koja se izvrsava po defaultu
cout << "\nPrestanite da se izmotavate i unesite broj od 0 do 2!!!\n\n";
cout << "ENTER za nastavak....!\n";
fflush(stdin);
cin.get();
}
} while (nStatus);

holodoc
21.8.2006, 0:39
Dalje treba napomenuti da se kompletan program nalazi u jednoj „do...while“ petlji koja stalno proverava šta je korisnik uneo od komandi. U slučaju da je u pitanju nula program preko pomoćne promenjljive „nStatus“ završava program.

Sledi najvažniji deo glavne petlje koji demonstrira gde se koristi „switch“ komanda. Naime, switch se ovde koristi da bi u zavisnosti od izbora korisnika program krenuo određenim redosledom izvršavanja i pozivanja funkcija. Ovo je najčešća primena petlje switch u C++ programima i zbog toga je važno zapamtiti je na ovom mestu.
Inače, da bi se zaštitili od raznih unosa koji nisu u meniju postoji deo „switch“ komande koji se zove „default“ koji se po automatizmu izvršava ako nije ispunjen nijedan od prethodnih uslova. Svi programi koji su nekada pisani za DOS koristili su ovaj način kontrole.

Ostatak koda bi trebao da bude jasan. Znam da je ovaj primer malo poduži ali mislim da ne sadrži ništa što do sada nije obrađeno u ovim tutorijalima. Naravno da sam imao muke da se suzdržim od korišćenja klasa i ostalih C++ specijalki ali sam hteo da demonstriram kako je moguće napisati jedan program od same nule i pri tome imati apsolutnu kontrolu nad njegovim radom.

holodoc
21.8.2006, 2:30
Malo sam preturao po arhivi i naleteo na jedan interesantan program koji sam napisao pre mnogo, mnogo vremena. Program nije direktno vezan za game-dev i nije čak ni pisan u C++-u već u C-u ali mi se učinio kao jako interesantan pa sam rešio da ga podelim sa vama. Naravno da neću moći da objašnjavam sve delove koda jer sadrži dosta stvari koje još nisu ni pomenute na ovom mestu kao što su fajl pokazivači, operatori veličine tipa podatka itd.

Naime, ovaj program je nastao kao šala koju sam par puta upotrebio na svojim prijateljima kada su pokušali da se naprave pametni nekom svojom smicalicom ;) Sećam se slučajeva kada su ljudi čupali kablove iz računara kako bi ga isključili da ovo malo programče ne bi nastavilo sa radom :rofl: Čak se sećam kako mi se jedan prijatelj kleo kako mu je program izbrisao ceo hard disk sa preko 80GB-a muzike :)

Šta ovaj program uopšte radi?

U suštini proširuje ideju o „simulaciji“ formatiranja hard diska :) Znamo da je veoma lako napraviti program koji će da napiše nešto u fazonu „Ej bato saću da ti formatiram disk“ i na ekranu da odbrojava do 100% ali ovaj program je pored originalnog format „interface-a“ dobio i jedan mali facelift. Naime, većina korisnika može odmah da provali da se običan „format“ program samo šali kada počne da ispisuje one procente na ekranu jer fali jedan bitan faktor u celoj simulaciji da bi fora bila kompletna, rad hard diska odnosno njegove lampice ;) Lično sam dobijao tone ovakvih kvaziformat programa ali odmah je bilo lako zaključiti da se radi o fake-u jer lampica zasija samo jednom a na ekranu se i dalje ispisuje nešto u fazonu „Seljo formatiram ti hard disk i stigao sam do 23% and counting“ :) Tu na scenu stupa jedan mali trik koji ovaj program koristi a to je da u toku rada lampica zaista radi sve vreme tako da žrtvu veoma brzo prođe duhovitost kada shvati da je vrag odneo šalu :)

Ovaj program na hard disku kreira dva fajla pod nazivom „dummy“ i „dummy2“ koji naizmenično razmenjuju svoj sadržaj odnosno „presipaju“ sadržaj iz jednog fajla u drugi. Znači, kompletnu ideju treba zamisliti kao dve identične čaše pri čemu se sve vreme vrši presipanje tečnosti iz jedne u drugu. Pošto su fajlovi veoma veliki to poprilično zapošljava IDE magistrale pa se lampica skoro nikada neće ugasiti :) Ceo proces prestaje po isteku onih pomenutih 100% kada se pojavljuje deo „Enter volume name:“. Inače, kod sadrži i jedan deo koji po defaultu nije sadržan u krajnjem izvršnom fajlu a koji je bio inspirisan jednim tekstom iz Sveta Kompjutera od pre par godina. Tekst je išao nešto u fazonu:
"Hm,... ";
"Tip bi da cacka po kompijuteru,... "
"Okej! "
"Prvo sto bi trebalo da uradi je naravno da, FORMATIRA SVOJ DISK!!!"
„Sa druge strane formatirati disk je veoma ozbiljna stvar pa je tip najverovatnije veoma siguran u to sto radi."
Ako se neko od autora u SK-u seti da je ovako nešto napisao bilo bi lepo da se javi :)

holodoc
21.8.2006, 2:31
Pre isprobavanja ovog koda par VEOMA VAŽNIH napomena!!!

Vodite računa ukoliko budete eksperimentisali šta menjate u kodu. Potreban prostor na hard disku zavisi od vrednosti koje imaju #define „CIKLUS“ i #define „PORUKA“. CIKLUS je ovde postavljen na 3 000 000 što bi otprilike trebalo da odgovara „potrebama“ hard diska na 7200 [o/min]. Za neki Raptor na 10 000 [o/min] bi možda vrednost mogla da se poveća na 4 000 000 ali ne preporučujem takvu rabotu. Kao što rekoh veličina izlaznog fajla zavisi i od „PORUKA“ #define-a i dobija se kada se pomnoži dužina „stringa“ „PORUKA“ u bajtovima i broja „CIKLUS“. U prevodu, ako je „PORUKA“ duga 25 bajtova a ciklus postavljen na 3 000 000 u tom slučaju će veličina jednog fajla biti oko 75MB! Pošto postoji dva fajla za ispravno funkcionisanje ovog programa je potrebno 150MB-a!!!
Inače, program je namenjen da radi u verziji u kojoj je jedan deo namerno izostavljen tako da bi „format“ komanda bila uverljivija. To je onaj deo sa komentarima na početku. U stvari, taj tekst je postojao od samog početka u kodu ali sam ga ja „komentovao“ da se ne bi našao u .exe varijanti :) Za one koji žele da vide program onako kako je prvi put kompajliran neka otkomentuju mesta u kodu na kojima je to naznačeno da treba da se uradi. Potražite komentare označene sa tačkom „A“ i tačkom „B“.

Inače, možete i da proverite sadržaj nastalog fajla ali nemojte da ga otvarate Word-om već najbolje WordPad-om ili sličnim ;)

Od dodatnih korisnih stvari pomenuo bih ovde jednu veoma korisnu promenjljivu sadržanu u okviru standardnih zaglavlja a to je „CLOCKS_PER_SEC“. Ona sadrži broj clock ciklusa procesora koje je potrebno izbrojati da bi na datom sistemu prošao vremenski ciklus od jedne sekunde. Korišćenje ove promenjljive je veoma važno ako se žele pisati programi koji ne trebaju da se razlikuju po brzini izvršavanja na različitim platformama.

Toliko od mene za danas.

holodoc
22.8.2006, 23:03
Izgleda da će sledeći kod da izgleda ovako:

#include<ijaostream>

int main(){
while(holodoc_kucka){
cout << "Raja posustaje";
}
return THE_END;
}

;)

Crusader88
23.8.2006, 13:03
@ holodoc
ovaj dev c++
zamara jer nije sve tako lako, a i ovaj bagoviti sams isto zamara
jel ima neki drugi c++, za koji nista ne mora da se prepravlja, da mi lepo stoji u prozoru ZDRAVO ZILE li tako nesto, a ne da cim on to izvrsi odma zatvori prozor, i to psihicki degradira, i obeshrabruje(kao da nesto nisam uradio lepo).
pozz:ciao: , i jos imas svoje verne ucenike.

voodoo_
23.8.2006, 13:39
Brate mili, ako ti problem pravi to što ti Windows zatvori prozor a ti ne vidiš šta je u njemu, onda batali programiranje sad odma. To zadržavanje programa da ti vidiš šta je ispisano, iako je program gotov, je podilaženje početnicima i ne pomaže da shvatiš osnovne stvari.
Zamisli šta su radili programeri u vreme DOS-a i flopi diskova, kad ti je na jednoj disketi bio DOS a na drugoj "razvojno okruženje". Ili mučenici za vreme Commodorea 64, kad si morao 2 puta da razmisliš pre nego što bilo šta otkucaš. Danas može da programira svaka baba.

holodoc
23.8.2006, 16:01
Pošto je postojala realna opasnost da na ovom mestu objavim tekst pod imenom "Mali Mukica - Revenge of the Compiler" odlučio sam da to ne uradim nego da pređem odmah na stvar.

@Crusader88
Već sam na samom početku ove teme rekao šta svako ko počinje sa programiranjem može da očekuje za vreme učenja. Brdo problema, brdo problema i još brdo problema. Da ironija bude veća ovo što si ti naveo nije čak ni problem. I da ironija bude još veća u ovoj temi imaš bar na jedno dvadesetak mesta rešenje problema za to zatvaranje prozora.

E sad ne želim nikoga da uvredim već samo da skrenem pažnju da programiranje spada u red umnih poslova. Znači, za isti je potreban mozak a ne snažna ruka koja će da vežba puko "copy-paste"-ovanje koda ili rutinsko prekucavanje. Trebate ljudi da počnete malo i da čitate tekst koji ide uz te kodove. Od čistog kopiranja nema ničega jer ćeš ako ništa bar morati na naučiš kako da uspešno kombinuješ te delove koje "copy-paste-uješ" ;)

U revodu, ako imaš nameru da se ozbiljnije baviš programiranjem moraćeš da se uozbiljiš i da "nabaviš" mnogo, mnogo volje i motivacije. S obzirom koliko ti je godina još uvek imaš vremena za to ;)

Pozdrav.

BobaL
24.8.2006, 8:05
JOJ, sams i knjige naucite sve za 21 dan za 24 casa itd. najgore knjige ikada,
Laslo Kraus: Programski jezik c++ sa resenim zadacima,
ali pre toga obavezno kupi
Laslo Kraus: Programski jezik c sa resenim zadacima, svi programi rade, a uvek mozes da ga pitas preko mail-a sta ti nije jasno oko koda i iz iskustva znam da ce ti on uvek odgovoriti inace Laslo Kraus ti je jedan od najboljih predavaca koje sam ja video na etf-u...

holodoc
25.8.2006, 1:49
@BobaL

Pre bih se složio sa konstatacijom da je Laslo Kraus postao veoma rado korišćeno sredstvo za "žvakanje" u prepirkama oko toga koji je autor knjiga o programiranju "naj,naj,naj" bez trunke zdrave argumentacije na tu temu. Lično ne poznajem Krausa niti sam imao priliku da budem na nekom od njegovih predavanja pa ću na ovom mestu reći samo da sudeći po njegovoj reputaciji predstavlja stručnjaka u svojoj oblasti i to ne želim da osporavam.

Ono što hoću ovde da osporim jeste činjenica da je kao autor pogodan za početnike pošto su oni ovde ciljna grupa. Naime, sam Kraus u svim predgovorima svojih knjiga vezanih za C++ tvrdi kako je za njihovo korišćenje potrebno uspešno savladati C programski jezik. Da je to istina složiće se svako ko prođe par glava njegovih knjiga na temu C++-a. Ono što mi se posebno ne sviđa (sada kao već slobodno mogu da kažem iskusnijem C i C++ programeru) jeste način na koji pristupa objašnjenju klasa i onome što one u suštini treba da predstavljaju. Jednostavno, principijelno gledano previše se vezuje za C i zanemaruje da na praktičnom primeru demonstrira koje su njegove najbitnije prednosti. Ovo za posledicu ima "iz neba pa u rebra" pristup učenju koji definitivno nije za početnike.

Sledeća stvar koja nije vezana samo za njegove naslove već uopšte za sve knjige koje su prevedene na srpski jeste problem oko određenih naziva. Pomenuću samo najbanalniji primer kao što su "prevodioci" itd. Zato sam uvek bio za opciju da svako ko zna engleski jezik počne odmah sa učenjem iz originalnih stranih izdanja. Tačno je da su prva izdanja uvek puna grešaka (posebno u slučajevima kada je u pitanju kod kod koga je dovoljna jedna jedina greška da "ode mas' u propas'").

Što se tiče SAMS-a takođe nisi u pravo iz jednog veoma jednostavnog razloga što su sva SAMS-ova izdanja upravo namenjena početnicima i da je "Teach yourself in..." ubedljivo najprodavanija kolekcija knjiga u svetu za početnike.
Takođe, sve SAMS-ove knjige su precizne, "straight-to-the-point" orijentisane i što je veoma, veoma važno izuzetno vode računa o izboru primera na osnovu kojih se objašnjavaju najvažniji termini. Hoćemo li možda da uporedimo na par ljudi ko će pre da ukapira klase i to na primeru iz "Teach yourself C++ in 21 days" ili na onima koji se koriste u Krausovim knjigama. Prva knjiga se sada i posle petog izdanja drži starog dobrog "Meow()" primera dok je Kraus menjao primere.

Naravoučenije naravno treba da bude da za početak nikako ne treba koristiti Krausa već nešto iz SAMS-ove kolekcije a da kasnije, po želji, i Kraus može doći na red za seciranje ;)

Andross
28.8.2006, 18:57
Ako cemo ko je naj naj uzmimo Programing Language C++ od Bjarne Stroustrupa pa cepajmo.
/************************************************** ************************************************
* Naziv Aplikacije: Recnik *
* Verzija: 1.0.0.1 *
* Opis: Jednostavan Englesko - Srpski recnik *
* Autor: ANDROSS *
* Razvojno Okruzenje: Microsoft Windows XP SP2, Dev-C++ 4.9.9.2, Intel Celeron 2.0GHz, 768 MB RAM *
* Datum: 24/08/06 21:11 *
************************************************** ************************************************/
#include "Recnik.h"
int main() // Ovo definitivno znamo :)
{
NadjiRec(); // Pozivamo funkciju koja trazi rec
// Moja izvedba system("pause")
char x;
cout << "***** Pretisnite si bilo sta pa enter da bi ste izasli *****" << endl;
cin >> x;
return 0; // Sve je u redu pa ubise Milosa... ovaj Recnik :)
}To ide u Recnik.cpp

Andross
28.8.2006, 18:58
#include <iostream> // Ovo i vrapci znaju sta znaci :)
using namespace std; // Ovo takodje :)
const char* reci[70][2] = // Nasa baza reci - pointer na dvodimenzionalni niz.
{
{"dog", "pas"},
{"cat", "macka"},
{"sheep", "ovca"},
{"computer", "kompjuter"},
{"C++", "Najjaci OOP programski jezik!"},
{"basic", "osnova"},
{"dark", "mracno"},
{"brother", "brat"},
{"game", "igra"},
{"fear", "strah"},
{"ghost", "duh"},
{"shooter", "pucac"},
{"hell", "pakao"},
{"entertainment", "zabava"},
{"WoK", "SK"},
{"fat", "debeo"},
{"dragon", "zmaj"},
{"glass", "staklo"},
{"cow", "krava"},
{"war", "rat"},
{"i", "ja"},
{"you", "ti, vi"},
{"he", "on"},
{"she", "ona"},
{"it", "ono"},
{"sword", "mac"},
{"axe", "sekira"},
{"bow", "luk"},
{"crossbow", "samostrel"},
{"mace", "buzdovan"},
{"helm", "slem"},
{"cuirass", "oklop na gornjem delu tela"},
{"greaves", "oklop za noge"},
{"boots", "cizme"},
{"gloves", "rukavice"},
{"cube", "kocka"},
{"pyramid", "piramida"},
{"triangle", "trougao"},
{"square", "kvadrat"},
{"circle", "krug"},
{"chaos", "haos"},
{"craft", "vestina"},
{"star", "zvezda"},
{"red", "crveno"},
{"green", "zeleno"},
{"blue", "plavo"},
{"pig", "svinja"},
{"animal", "zivotinja"},
{"farm", "farma"},
{"goat", "koza"},
{"dead", "mrtav"},
{"dwarf", "kepec, patuljak"},
{"king", "kralj"},
{"queen", "kraljica"},
{"prince", "princ"},
{"princess", "princeza"},
{"devil", "djavo"},
{"angel", "andjeo"},
{"good", "dobro"},
{"bad", "lose"},
{"spirit", "dusa"},
{"splendid", "sjajan"},
{"evil", "zlo"},
{"alien", "vanzemaljac"},
{"spy", "spijun"},
{"worm", "crv"},
{"wizard", "carobnjak"},
{"zeal", "predanost"},
{"movie", "film"},
{"flesh", "meso"}
};

Andross
28.8.2006, 18:59
void NadjiRec() // Nasa funkcija koja sluzi za trazenje reci.
{
bool rad = true; // Promenljiva tipa bool oznacava rad aplikacije.
char rec[30]; // Niz karaktera koji oznacava rec koju korisnik trazi.
bool nadjeno; // Oznacava da li je rec nadjena.
cout << "***** Dobrodosli u ANDROSS-ov Recnik *****" << endl << endl;
while(rad) // Glavna while petlja.Ako je rad true onda se aplikacija izvrsava.
{
nadjeno = false; // Rec nije nadjena(pa na pocetku smo :P)
cout << "Unesite rec na engleskom: ";
cin >> rec;
for(int i = 0; i < 70; i++) // Sporedna for petlja.Pomocu nje proveravamo bazu reci.
{
if(!strcmp(rec, reci[i][0])) // Ako reci ima u bazi...
{
cout << "Trazena rec je: " << reci[i][1] << endl; // ...odstampaj rec na srpskom
nadjeno = true; // Nasli smo rec.
break; // Iskacemo iz petlje(da bi smo optimizovali proces)
}
else if(!strcmp(rec, "kraj")) // Ako je rec kraj...
{
rad = false; // Odosmo iz aplikacije :)
nadjeno = true; // Cisto da ne dobijemo poruku da nema te reci :)
cout << "Hej rec je na srpskom!Aaa oces da izadjes :)" << endl;
break; // Odeeeee :)
}
else
{
nadjeno = false; // Nismo nasli rec :( Smrc, smrc.
}
}
if(!nadjeno)
{
cout << "Reci nema u bazi, pokusajte ponovo." << endl;
}
}
}Ova zadnja dva u Recnik.h pa cepajte.Kome nije jasno e pa boli me uvo :D

voodoo_
29.8.2006, 21:49
Sad kad si solidno savladao C/C++, preporučujem ti da se bačiš na igre... imaš na sajtu SDL-a (http://www.libsdl.org/index.php) detaljne tutoriale koje svako može savladati.

holodoc
30.8.2006, 3:27
Sad kad si solidno savladao C/C++, preporučujem ti da se bačiš na igre... imaš na sajtu SDL-a (http://www.libsdl.org/index.php) detaljne tutoriale koje svako može savladati.

Pa ne bih baš rekao da je ovo dovoljno za bacanje na SDL :) Jeste da je generalno namenjen korišćenju uz C ali je dosta stvari demonstrirano na primeru C++-a. A da bi posle ovog rečnika moglo da se pređe na igre mora definitivno da nauči šta su klase (posebno njihovi konstruktori i destruktori) jer se 99% funkcija koje pristupaju grafičkim bibliotekama oslanja na metode klasa. Posebno mora da obrati pažnju na pravilno korišćenje konstruktora i destruktora!!! Pa onda mora da "svari" reference, malo rada sa pokazivačima, polimorfizme koji se često koriste pri pozivanju grafičkih rutina itd.

Može da proba sa tutorijalima SDL-a ali mislim da neće još uvek ništa da razume šta tamo piše. Moja preporuka je da se još malo zadrži na C++-u i da proba sa nekim ozbiljnijim primerom rečnika. Recimo verziju rečnika koja bi koristila klase i reference umesto dvodimenzionalnih nizova. Takođe, ovaj program može da se unapredi da klasa sadrži pokazivače na stringove kao svoje privatne članove što bi omogućilo veoma lako da postoji recimo više engleskih i srpskih reči koje odgovaraju jedna drugoj u okviru jednog objekta.

Program je takođe moguće nadograditi upisom u fajl odnosno ispisom iz njega. Naravno fajl bi u stvari sadržao reči i isti bi mogao da bude dopunjavan. Naravno koristio bi se binarni upis.

Znači za sada bi moja preporuka bila da još jednom ako nije do sada obrne SAMS-ovu knjigu iz C++-a i vidi šta nije razumeo do tada. Videće koliko će mu onda biti lak prelaz na rad sa naprednijim programima kakvi su tutorijali o SDL-u ili oni dati na GameDevNet-u.

Pozdrav :ciao:

voodoo_
30.8.2006, 10:13
Evo primera jednostavnog SDL programa (http://sol.gfxile.net/gp/):

#include <stdlib.h>
#if defined(_MSC_VER)
#include "SDL.h"
#else
#include "SDL/SDL.h"
#endif

SDL_Surface *screen;

void render()
{
// Lock surface if needed
if (SDL_MUSTLOCK(screen))
if (SDL_LockSurface(screen) < 0)
return;

// Ask SDL for the time in milliseconds
int tick = SDL_GetTicks();

// Declare a couple of variables
int i, j, yofs, ofs;

// Draw to screen
yofs = 0;
for (i = 0; i < 480; i++)
{
for (j = 0, ofs = yofs; j < 640; j++, ofs++)
{
((unsigned int*)screen->pixels)[ofs] = i * i + j * j + tick;
}
yofs += screen->pitch / 4;
}

// Unlock if needed
if (SDL_MUSTLOCK(screen))
SDL_UnlockSurface(screen);

// Tell SDL to update the whole screen
SDL_UpdateRect(screen, 0, 0, 640, 480);
}


// Entry point
int main(int argc, char *argv[])
{
// Initialize SDL's subsystems - in this case, only video.
if ( SDL_Init(SDL_INIT_VIDEO) < 0 )
{
fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError());
exit(1);
}

// Register SDL_Quit to be called at exit; makes sure things are
// cleaned up when we quit.
atexit(SDL_Quit);

// Attempt to create a 640x480 window with 32bit pixels.
screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);

// If we fail, return error.
if ( screen == NULL )
{
fprintf(stderr, "Unable to set 640x480 video: %s\n", SDL_GetError());
exit(1);
}

// Main loop: loop forever.
while (1)
{
// Render stuff
render();

// Poll for events, and handle the ones we care about.
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_KEYDOWN:
break;
case SDL_KEYUP:
// If escape is pressed, return (and thus, quit)
if (event.key.keysym.sym == SDLK_ESCAPE)
return 0;
break;
case SDL_QUIT:
return(0);
}
}
}
return 0;
}

holodoc
1.9.2006, 3:00
Slabo :)

Dečica kreću polako u školu pa ih programski jezici više ne interesuju :D

BTW, ANDROSS dobar ti je taj primer "mutant" iz Straustropove knjige :) Što ga brate toliko unakazi :)

Andross
2.9.2006, 20:00
Joj ako mislis na recnik sam sam ga pravio!Stroustrupovu knjigu nisam ni pipnuo a da mi posaljes ono bre!BTW. nisu oni nista naucili sve dok ih mi ne ispitamo!!!!Samo holodoc salji ono hitno mi!

voodoo_
4.9.2006, 18:07
Naleteo sam na sledeći programčić u knjizi "Operating System Concepts" pa sam ga prebacio u funkciju jer cenim da nekom može zatrebati (meni je recimo davno trebalo al nisam znao kako da izvedem).

Dakle, znate da kad iz vašeg programa startujete drugi program, on se upali a vaš nastavlja s radom. E, u pojedinim situacijama može zatrebati da startujete drugi program ali da vaš ne nastavlja s radom dok se taj drugi ne završi (recimo kad pravite instaler koji startuje nešto i čeka da se to završi kako bi nastavio dalje). Tada taj drugi program pozovite pomoću ove funkcije:

(treba inkludovati windows.h, a i stdio.h/iostream ako koristite printf/cout)

void RunAndWait(char *lpszFileName) {
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

if (!CreateProcess(
NULL,
lpszFileName,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi)
)
{
printf("CreateProcess failed.\n");
return;
}

WaitForSingleObject(pi.hProcess, INFINITE);
printf("Child completed.\n");

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}

Za detalje oko startovanja programa (položaj prozora i ostalo) konsultujte objašnjenje funkcije CreateProcess preko MSDN-a ili u nekom helpu.

laserjat
5.9.2006, 22:10
Evo ga moj PRVI program:aplauz:
ali nije c++ vec samo c.

#include <stdio.h>

main()
{
int i=1;
int broj;

printf("\n************************************************ **********\n");
printf("Pocnite sa unosom brojeva!\n");
printf("Ako budete uneli broj 0 program ce prestati sa radom!\n");

do
{
printf("Unesite %d . broj i pritisnite <ENTER> !\n", i);
scanf("%d", &broj);
printf("Uneli ste broj %d\n", broj);
i++ ;
int j;
int suma=0;
for(j=1; j<=broj; j++)
{
suma+=j ;
}
printf("Suma svih brojeva izmedju vaseg broja i nule je %d\n", suma);
printf("************************************************** *********\n");
}
while (broj>0);
printf("Kraj programa jer ste uneli nulu");
}

Andross
11.9.2006, 10:06
Ajmo sada klase.Evo objasnjenja koje ce svi razumeti.Klasa je na primer pas.Klasa pas obuhvata promenljive koliko pas ima godina, dal je musko ili zensko itd.,metodi za hodanje, spavanje da treba da jede itd.Svaki pojedini pas je instanca klase pas tj. objekat.Recimo mi smo svi instance klase coveka(uporedjivanje sa realnim zivotom mi najlakse za objasnjivanje:) ).Znaci klasa je npr. pas a kucovi koji nas nerviraju po ulici su reprezentativni primerci te klase.Evo jednostavne deklaracije klase:
class Dog
{
public:
Dog();
~Dog();
void Bark();
int GetAge(){ return itsAge;}
private:
int itsAge;
};Linija po linija.Kljucna rec class oznacava da deklarisemo klasu(il' definisemo uvek me za*ebavaju ta dva pojma).Rec posle nje je ime klase.Sledi viticasta zagrada.Sledeca kljucna rec je public posle koje ide dvotacka.public znaci da svako moze pristupiti metodima i clanicama koje su javne.Sada verovatno se pitate sta je Dog() i ~Dog().To su konstruktor i destruktor koji se pozivaju pri pravnjenu odnosno unistavanju objekta.Bark je cuveni metod Meow za klasu Cat.Videce te sta radi.GetAge vraca broj godina(tj. itsAge).Njegova implementacija metoda je inline(u fazonu #define).Sledeci deo je private.To znaci da ne mozemo pristupiti tim metodima i clanicama.Pitate se verovatno sto.To je da drugi objekti ne mogu brljati po delovima nekog objekta.Za to postoje pristupni metodi(kao sto je nas GetAge).Oni nam omogucuju pristup.Ovo stavite u dog.h Sada implementacija metoda:
#include <iostream>
using namespace std;
#include "dog.h"

Dog::Dog
{
cout << "Dog constructor" << endl;
itsAge = 4;
}

Dog::~Dog();
{
cout << "Dog destructor" << endl;
}

void Dog::Bark()
{
cout << "Bau vau" << endl;
}

int main()
{
cout << "Welcome!" << endl << endl;
Dog doggie;
cout << "Doggie's age is: " << doggie.GetAge() << endl;
return 0;
}
Vecinu koda znate al' da objasnim sta ne znate.Implementacija metoda ide: povratni_tip ime_klase::metod_klase Posto kontruktor i destruktor nemaju tip deo povratni_tip je prazan.Mozete izostaviti konstruktor i destruktor i tada se pozivaju podrazumevani.I metodima i clanicama objekata neke klase se pristupa:
1.U slucaju "obicnog" ime_objekta.ime_metoda
2.U slucaju pointer objekta ime_objekta->ime_metoda
Sto ne bude jasno pitajte na shadowfilip@hotmail.com

voodoo_
11.9.2006, 10:31
Bolja je praksa primerke klase alocirati u dinamičkoj zoni memorije a ne steku.
Dakle
int main()
{
cout << "Welcome!" << endl << endl;
Dog *doggie = new Dog();
cout << "Doggie's age is: " << doggie.GetAge() << endl;
delete doggie;
return 0;
}

Andross
11.9.2006, 12:52
I onda ne pozoves:
doggie.GetAge()
vec:
doggie->GetAge()
;)

voodoo_
11.9.2006, 16:34
Eto vidiš kako znaš :)
A da ne ispadne da ja ne znam, doggie->GetAge() je isto što i (*doggie).GetAge() :D

Andross
12.9.2006, 10:36
Znam.Al' nisi stavio (*doggie).Mada dosta o nasem kucovu imam jedno programersko pitanje za vas.Odgovor doduse znam ali zelim cuti vase misljenje.
Pitanje: Imate varijablu broj sa vrednoscu 1 ili 2.Ako je broj 1 promeniti ga u 2, ako je 2 promeniti ga u 1.Ajd sad.Zelim da vidim efikasne kodove.Kada zavrsimo recicu vam moj odgovor.

P.S. Pricam to jer mladjani programeri(po iskustvu) verovatno ne znaju sta su pointeri.

sucur_87
12.9.2006, 19:13
Znam.Al' nisi stavio (*doggie).Mada dosta o nasem kucovu imam jedno programersko pitanje za vas.Odgovor doduse znam ali zelim cuti vase misljenje.
Pitanje: Imate varijablu broj sa vrednoscu 1 ili 2.Ako je broj 1 promeniti ga u 2, ako je 2 promeniti ga u 1.Ajd sad.Zelim da vidim efikasne kodove.Kada zavrsimo recicu vam moj odgovor.

P.S. Pricam to jer mladjani programeri(po iskustvu) verovatno ne znaju sta su pointeri.
if(broj == 2 ? broj = 1 : broj = 2);
;)

holodoc
12.9.2006, 20:21
if(broj == 2 ? broj = 1 : broj = 2);
Ovo je delimično prebukiran izraz :) Ternarni operator bi u slučaju da je ANDROSS mislio da se provera vrši samo jednom bio sasvim okej ali prethodni problem mora biti predstavljen ovako:

#include<iostream>
using namespace std;

main(){
int broj = 1;
(broj = (broj == 2)) ? broj = 1:broj = 2;
cout << broj;
fflush(stdin);
cin.get();
}


Znači, rezultat ternarnog operatera MORA biti prosleđen promenjljivoj a if petlja je u datom primeru totalno nepotrebna i ne služi ničemu osim zauzimanju procesorskog vremena :)

Andross
14.9.2006, 10:25
Moj je kod nabrzi, najmanji, najprakticniji i uopste nije skup!!!!
broj = 3 - broj;
Ko bi se ovoga setio a?:D :D :D

MG-RAY
14.9.2006, 14:58
Moj je kod nabrzi, najmanji, najprakticniji i uopste nije skup!!!!
broj = 3 - broj;
Ko bi se ovoga setio a?:D :D :D

gde mi ode onaj smiley...a, evo ga... :boodala: :boodala: :boodala:

u pravu si...ko bi se setio... :)

holodoc
21.9.2006, 0:59
Nije da vas kritikujem ali ljudi pogledajte još jednom naziv teme :) Tema se zove „objašnjenje početniku“ sa naglaskom na reč početniku :) Malo je verovatno da će neko ko se nikada ranije nije susreo sa C++-om ukapirati o čemu se ovde radi ako objašnjenja „gaze“ preko nekih komplikovanih naziva i tehnika. Ova tema bi pre svega trebala da pruži objašnjenja i primere koje može da svari svako ko je bar malo pratio temu ili ima bar neko početno znanje iz bilo kog programskog jezika mada bi trebala da bude pojmljiva čak i apsolutnom početniku.

Zbog toga sam na ovom mestu hteo da pružim jedan opširniji tutorijal vezan za definiciju i korišćenje najmoćnijeg oružija koje C++ poseduje a to su naravno klase. Tekst koji sledi će usput demonstrirati i primenu još nekih tehnika koje su često u upotrebi kao i načine programiranja tako da ovako na početku jedino mogu da dam garanciju da će tekst biti izuzetno koristan svakome ko želi da nauči C++ „kako se valja“. Da pređemo odmah na stvar.

Kao što sam već nekoliko puta do sada rekao klase i njihove osobine predstavljaju stub onoga što C++ čini jednim od najmoćnijih, ako ne i najmoćnijim programskim jezikom uopšte. Pod ovim prevashodno podrazumevam brzinu kojom je moguće „naterati“ neki kod da se izvršava odnosno njegovu optimizovanost za određenu vrstu zadatka. Klase vode poreklo iz teorije objekto-orijentisanog programiranja i pojavile su se mnogo ranije u nekim starijim programskim jezicima kao što je npr. „Simula“. Osnovna ideja prilikom njihovog uvođenja u C++ je bila da se moćna sintaksa (način programiranja) C programskog jezika kombinuje sa logičnijim pristupom rešavanja problem koje nude klase. Treba odmah na početku shvatiti da bez poznavanja načina na koji klase funkcionišu i moćnih mogućnosti koje nude (osobina višestrukog nasleđivanja itd.) C++ je ništa drugo do najobičniji C programski jezik. Dokaz za ovo je i činjenica da je Bjarne Stroustrup (tvorac C++-a) prilikom prvog krštenja jezika iskoristio naziv “C sa klasama”. Da razgraničimo jednu stvar, daleko od toga da je C slab (u to nas uverava bezbroj projekata koji se izrađuju uz njegovu pomoć) ali jednostavno C u nekim slučajevima nije dorastao ogromnim projketima ili u slučajevima kada na nekom projektu radi ogroman broj ljudi. U oba slučaja najveći problem predstavlja kako omogućiti dobru integraciju celog tima odnosno kako obezbediti da više ljudi može nesmetano da odrađuje svoj deo projekta a da među njima ne dođe do problema prilikom povezivanja svih tih delova u jednu celinu. Klase upravo obezbeđuju da vi kao programer recimo ne morate da znate kako je tamo neki vaš kolega odradio klasu koju nameravate da koristite u svom delu programa. Bitno je da je kolega vama pružio opis date klase tj. članice promenjljive te klase a ponekad je sasvim dovoljno poznavati samo njene metode. O svim ovim terminima naravno malo kasnije a sada se samo pominju ilustracije radi.