Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje > Pravljenje igara

Pravljenje igara Programski jezici, tehnike, alatke u službi pravljenja igara...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 21.9.2006, 1:19   #261
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Rešenje ovog problema je pronađeno u vidu uvođenja tzv. „inline“ definicije funkcije odnosno metode. Inline definiciju treba shvatiti veoma slično kao pretprocesorsku direktivu „#define“ koja umesto jedne reči, koliko može da zameni „#define“ u kodu, zamenjuje celu funkciju. Drugim rečima, kada pozovete neku „inline“ funkciju (ili metodu) neće dolaziti do skoka na tu pozvanu funkciju već će njen kod jednostavno biti samo kopiran na mesto gde se vrši poziv. Mućka? Ako jeste onda je u pitanju jedna jako korisna jer kao što je već rečeno izbegava se nekoliko koraka pri svakom pozivanju funkcije što može da ušpara stvarno mnogo vremena prilikom izvršavanja.

Kada je bolje definisati funkcije kao „inline“ a kada na klasičan način? U suštini „inline“ metod se koristi u slučajevima kada je metoda koja treba da se izvrši veoma kratka. U prethodnom primeru metoda „Starost_Ocitavanje()“ treba samo da vrati vrednost promenjljive „starost“ u okviru klase. Isti slučaj je i sa metodom „Starost_Postavljanje()“ koja jednino treba da njoj prosleđeni parametar „godina“ upiše u promenjljivu „starost“. U ovim primerima upotreba inline funkcija je ok.

Međutim, da su metode sadržale veći broj programskih linija ili da uz to da je broj njihovih pozivanja u jedinici vremena veliki „inline“ metod ne bi bio prihvatljivo rešenje jer bi se ogromna količina resursa koristila za „prepisivanje“ sadržaja „inline“ funkcije na mestu gde se poziva. Znači, kratki obični accessori i „inline“ funkcije da, dugačke definicije „access-ora“ i „inline“ funkcije nikako!

Možda se neko od vas do sada zapitao da li je prilikom kreiranja objekta na osnovu neke klase moguće tom objektu odmah na početku zadati početne vrednosti nekih ili čak svih članica promenjljivih. Na kraju krajeva u trenutku kada vas vaš komšija pita za „Šerpine“ godine „Šerpa“ već postoji tj. neće mu se dodeliti vrednost godina tek posle komšijinog pitanja. Isto važi i za vašu sposobnost da odgovorite komšiji za broj godina jer i vi odnekud morate da znate „Šerpin“ broj godina. Apsolutno isto važi i za boju dlake. Da bi ste mogli da odgovorite na to pitanje „Šerpa“ već mora da ima definisanu boju dlake.

Postavljanje početnih vrednosti nekog objekta iz određene klase se vrši pomoću tzv. „konstruktora“. Konstruktori su delovi klase koji preuzimaju na sebe odgovornost da prilikom definisanje nekog objekta na osnovu njima prosleđenih podataka postave početne vrednosti objekata koji se kreiraju. U suštini, konstruktori i destruktori se uopšte ni ne moraju definisati jer će ih kompajler po sopstvenom nahođenju sam pridodati izvršnom kodu. Naravno ovakvi metodi bi bili potpuno prazni i ne bi služili ničemo. Filozofija oko toga zašto su konstruktori i destruktori must za svaku klasu je malo komplikovanija ali se svodi na to da je logično da prilikom nastajanja svakog objekta taj isti objekat ima trenutak svog nastajanja u kome se definše kakav je i šta može.
holodoc je offline   Odgovor sa citatom ove poruke
Stara 21.9.2006, 1:20   #262
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Primera radi, kada deklarišete i definišete neku promenjljivu vi ćete recimo da napišete:
Kod:
int chicken_muerto = 5;
Ovo je naravno poznato od ranije i znači da smo deklarisali, definisali i inicijalizovali (postavili na početnu vrednost) celobrojnu promenjljivu „chicken_muerto“. Kako se to radi sa klasama kada bi smo recimo hteli da odmah zadamo da „Ubica“ ima 77 godina i da ima „zagasito crvenu“ dlaku a da „Šerpa“ ima 43 godine i da mu je dlaka „šerpa plavo“ boje. „Šerpa plava“ boja postoji i to je famozna štamparska „četerestrojka“

Da bi smo mogli tako nešto da uradimo iz glavnog programa potrebno je prvo definisati kontruktore. Konstruktori se definišu u okviru svake klase isto kao i bilo koji metod uz dva mala ograničenja. Naziv metoda klase mora da bude isti kao i naziv klase i ta metoda (konstruktor) ne sme da vraća vrednost. Prosleđivanje početnih vrednosti objektu se vrši njihovim navođenjem u zagradi identično kao da je u pitanju pozivanje funkcije. Primera radi, definisanje „Ubice“ iz prethodnog rpimera može da se uradi na sledeći način:
Kod:
Civava Ubica(77, „zagasito crvena“);
Pored „konstruktora“ svaka klasa bi trebala da ima i svoj „destruktor“ odnosno metodu koja se poziva prilikom završetka programa, brisanja objekta koji je predstavljen datom klasom i sl. „Destruktori“ se obležavaju na apsolutno isti način kao i „konstruktori“ samo im se ispred imena dodaje znak „tilda“ (~). Inače i „konstruktori“ i „destruktori“ mogu da se definišu na „inline“ način ali će zbog kompleksnosti koda koji će sad biti predstavljen konstrzktor i destruktor biti predstavljeni u obliku zasebnih definicija. Sledi kod i posle njega detaljno objašnjenje.
holodoc je offline   Odgovor sa citatom ove poruke
Stara 21.9.2006, 1:21   #263
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Kod:
#include<iostream>
#include<string>
using namespace std;
typedef unsigned short int USHORT;

void CekajEnter(); //prototip funkcije

void CekajEnter(){
    cout << "\nPritisnite ENTER za izlazak iz programa...";
    fflush(stdin);
    cin.get();    
}

class Civava { //deklarisanje klase "civava"
    public: 
        Civava(USHORT argGodine, string argBoja_dlake, string argFalinka); // deklaracija konstruktora klase
        ~Civava(); //deklaracija destruktora klase
        
        // accessori za promenjljivu starost
        USHORT Starost_Ocitavanje() const {return starost;} // deklaracija i definicija accessora ocitavanja
        void Starost_Postavljanje(USHORT godina){starost = godina;} //deklaracija i definicija accessora upisa
        
        //accessori za promenjljivu boja_dlake
        string BDlake_Ocitavanje() const {return boja_dlake;}
        void BDlake_Postavljanje(string B_dlake){boja_dlake = B_dlake;}
    
    private:
        USHORT starost;
        string boja_dlake; 
    protected:
        string falinka;
};

//definicija konstruktora za klasu Civava
Civava::Civava(USHORT argGodine, string argBoja_dlake, string argFalinka){
    //postavljanje pocetne vrednosti za objekte definisane klasom Civava
    starost = 7 * argGodine;
    boja_dlake = argBoja_dlake;
    falinka = argFalinka;
}   

//definicija destruktora za klasu Civava
Civava::~Civava(){
}
int main(){
    //kreiranj objekta "Ubica" 
    Civava Ubica(11, "zagasito crvena", "ne ume da prica"); 

    //ispis podataka za "Ubicu" definisanih pozivom "konstruktora"
    cout << "***** Podaci postavljeni prilikom kreiranja objekta *****\n";
    cout << "Komsijin \"Ubica\" je star tacno " << Ubica.Starost_Ocitavanje();
    cout << " godina boja dlake mu je \"" << Ubica.BDlake_Ocitavanje() << "\"!\n\n" << endl;
    
    //postavljanje novih vrednosti
    
    Ubica.Starost_Postavljanje(4);
    Ubica.BDlake_Postavljanje("mentol plava");
    
    // ispis podataka po ponovnom postavljanju
    cout << "***** Podaci postavljeni prilikom kreiranja objekta *****\n";
    cout << "Komsijin \"Ubica\" je star tacno " << Ubica.Starost_Ocitavanje();
    cout << " godina boja dlake mu je \"" << Ubica.BDlake_Ocitavanje() << "\"!\n" << endl;

    CekajEnter();
    return EXIT_SUCCESS;
}
holodoc je offline   Odgovor sa citatom ove poruke
Stara 21.9.2006, 1:23   #264
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Da krenemo. Na početku koda ne postoji apsolutno ništa specijalno što do sada nije ovde obrađeno. Klasično otvaranje standardnih zaglavlja, definisanje prototipa funkcije kao i same funkcije „CekajEnter“ koja treba prilikom poziva da čeka na pritisak nekog tastera od strane korisnika i to je to.

Izgled naše klase „Civava“ smo malo redizajnirali kao što smo rekli i to tako što smo izbacili sve one dodatne metode koje smo do sada imali i ostavili samo accessore. Deklaracija klase „Civava“ sada izgleda ovako:
Kod:
class Civava { //deklarisanje klase "civava"
    public: 
        Civava(USHORT argGodine, string argBoja_dlake, string argFalinka); // deklaracija konstruktora klase
        ~Civava(); //deklaracija destruktora klase
        
        // accessori za promenjljivu starost
        USHORT Starost_Ocitavanje() const {return starost;} // deklaracija i definicija accessora ocitavanja
        void Starost_Postavljanje(USHORT godina){starost = godina;} //deklaracija i definicija accessora upisa
        
        //accessori za promenjljivu boja_dlake
        string BDlake_Ocitavanje() const {return boja_dlake;}
        void BDlake_Postavljanje(string B_dlake){boja_dlake = B_dlake;}
    
    private:
        USHORT starost;
        string boja_dlake; 
    protected:
        string falinka;
};
Prva linija u sekciji „public“ je linija deklaracije konstruktora za klasu „Civava“.

Civava(USHORT argGodine, string argBoja_dlake, string argFalinka); // deklaracija konstruktora klase
Kao što može da se vidi, podaci koji se prosleđuju konstruktoru kasnije u kodu su starost (argument „argGodine“), boja dlake (argument „argBoja_dlake) i falinka (argument „argFalinka“). Ovi podaci se naravno prosleđuju prilikom kreiranja objekta u kodu i to bi za objekat „Ubica“ bila konkretno sledeća linija:
Kod:
Civava Ubica(11, "zagasito crvena", "ne ume da prica");
Kada kompajler naiđe na ovu liniju u kodu automatski (po zagradama i tipu objekta koji je ovde klasa „Civava“) prepoznaje da se radi o liniju u kojoj se prosleđuju podaci konstruktoru klase koji treba da postavi te prosleđene vrednosti kao početne. U konkretnom slučaju, broj 11 se prosleđuje kao starost itd. Kada konstruktor primi sva tri podatka u ovom slučaju, u definiciji konstruktora možete raditi šta hoćete sa njima. U konkretnom slučaju postavljaju se vrednosti za početnu starost, boju dlake i na kraju falinku. Treba primetiti da je u konstruktoru odmah urađena konverzija broja godina vezanih za čoveka u ekvivalentnu vrednost za pse. Tu važi pravilo da jedna obična ljudska godina traje 7 „pasijih godina“. Znači ako prilikom pozivanja konstruktora prosledite recimo 2 za broj godina početna vrednost starosti za takav objekat bi bio 14 godina. Potpuno ista priča važi i za preostale dve vrednosti koje „prima“ konstruktor i u ovom slučaju obe promenjljive su tipa „string“.
holodoc je offline   Odgovor sa citatom ove poruke
Stara 21.9.2006, 1:32   #265
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Na trenutak bih na ovom mestu zastao i pokušao da objasnim o kakvom se tipu podataka radi u slučaju „string-a“. Naime, poznato je da C programski jezik pristupa problemu rešavanja smeštanja stringova (niza karaktera koji najčešće mogu da se posmatraju kao reči) tako što je pre toga potrebno rezervisati niz tipa „char“ određene dužine u okviru koga će u svakoj ćeliji tog niza biti smešten po jedan karakter datog stringa. Primera radi, recimo da želimo da u C programskom jeziku smestimo neki string morali bi smo to da uradimo na sledeći način:
Kod:
char Ime[15] = “Raduljko”;
U ovom slučaju kompajleru kažemo da rezerviše u memoriji mesto za smeštanje niza od 15 karaktera. U konkretnom slučaju, ovim redom smo izvršili deklaraciju promenjljive „Ime“ (rekli smo kompajleru da je u pitanju niz tipa char), njegovu definiciju (zauzeli tačno 15 bajta memorije) i inicijalizovali je (postavili na početnu vrednost „Raduljko“). Ovde treba voditi računa o tome da promenjljiva „Ime“ sada zauzima 9 bajtova u memoriji zato što se u C-u svi stringovi predstavljaju kao niz karaktera koji se završava tzv. „null terminatorom“ (\0) koji ima zadatak da pokaže gde je kraj datog niza karaktera.

Ovaj pristup u suštini nije loš ali ima jednu veliku manu da je veoma lako negde u kodu napraviti grešku i „ode mas’ u propas’“. Primera radi, može se desiti da u svom kodu vršite upis u ćeliju niza van granica definicije. To se veoma lako može videti u sledećem kodu koji je u bilo kom kompajleru apsolutno sintaksički ispravan.
Kod:
char Ime[10];
Ime[11] = ’X’;
Svaki C kompajler će ove linije „progutati“ bez problema iako je ovaj kod upravo izvršio upis u memorijsku lokaciju koja nije sastavni deo niza „Ime“ zbog čega se veoma lako može desiti katastrofa. Sa druge strane kompajler bi odmah prepoznao prekoračenje prilikom inicijalizacije niza odnosno prilikom pokušaja čitanja nepostojeće ćelije u nizu. Zbog toga su sledeći kodovi „sa felerom“.
Kod:
char Ime[10] = “Sharevantes”; // **greska! Rezervisano samo 10 bajta a zahteva se 11.
Kod:
char Ime[10] = “Raduljko”;
cout << Ime[11]; // **greska! Ispis nepostojece celije.
Zbog toga C++ sadrži standardno zaglavlje „string“ koje opet sa druge strane sadrži definiciju klase „string“. Uz pomoć nje je moguće bilo koju promenjljivu proglasiti objektom tipa „string“ i zaboraviti na sve peripetije vezane za predstavljanje stringova putem nizova karaktera. Za ovakve rabote naravno moramo da uključimo standardno zaglavlje „string“ koje sadrži neke veoma interesantne metode vezane za stringove.
holodoc je offline   Odgovor sa citatom ove poruke
Stara 21.9.2006, 1:35   #266
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Ovaj kod koristi isključivo stringove kao potpuno objektno-orijentisan pristup rešavanja problema. Ovakav pristup naravno ima svojih prednosti ali ima i mana. Osnovne prednosti koje bi svako po prelasku na ovakav način programiranja primetio jesu da nema više potrebe da se koristi recimo funkcija „strcpy“ za kopiranje sadržaja jednog niza karaktera u drugi (čitaj: jednog stringa u drugi). Primera radi, ako bi ste negde u kodu imali niz karaktera koji treba da sadrži neko ime jedini način da izvršite pridruživanje onoga što dati niz sadrži nekom drugom nizu jeste kopiranje iz prvog niza u drugi. Primera radi sledi kod.
Kod:
char Ime[15] = "Raduljko"; // prvi niz
char Backup[15]; //drugi niz
strcpy(Backup, Ime); //pridruzivanje (kopiranje) jednog niza drugom
cout << Ime; // ispisuje se „Raduljko“.
U C++-u je dovoljno napisati sledeće.
Kod:
string Ime; //deklaracija prvog stringa
string Backup; //deklaracija drugog stringa
Backup = Ime; //dodeljivanje
cout << Backup; //ispis
Kao što se može videti iz priloženog drugi način je mnogo jednostavniji i ne pruža mnogo mesta za konfuziju. Vidi se da je veoma lako jedan niz dodeliti drugom osnosno vršiti razne manipulacije sa istim. Još jedna velika prednost je što ne morate voditi računa o dužini vašeg stringa kao u slučaju da se koriste nizovi.

Mana ovakvog pristupa je brzina jer je prilikom zahtevnijih zadataka ponekad primetan nedostatak u pogledu brzine ovog i pristupa direktnog rada sa karakterima u nizu. Bez obzira na sve preporučuje se korišćenje string klase kad god je to moguće.

Da se vratimo na naš program sa klasama. Izvršili smo deklaraciju i definiciju klase i njenih metoda i promenjljivih. No u okviru deklaracije metoda (tj. accessora) primećuje se pojava reči „const“.
Kod:
USHORT Starost_Ocitavanje() const {return starost;}
„Const“ se koristi kao dodatak u deklaracijama metoda kada treba da se spreči da dotična metoda može da vrši bilo kakvu promenu vrednosti članica promenjljivih u okviru klase. To znači da ovako definisane metode mogu samo da čitaju ali ne i upisuju podatke u objekat definisan datom klasom.

Sada je potrebno sve to primeniti iz glavnog programa mada je poprilično jasno šta se tu događa. Prvo se definiše objekat „Ubica“ sa određenim početnim vrednostima koje konstruktor klase „Civava“ čita i postavlja u odgovarajuće promenjljive.
Kod:
Civava Ubica(11, "zagasito crvena", "ne ume da prica");
Zatim se vrši ispis ovh podataka a onda se pozivaju accesori date klase i postavljaju nove vrednosti za starost i godine nakon čega sledi ispis. I u tome je cela mudrost.

Na kraju rezime. Klase predstavljaju izuzetno moćno oružije prilikom razvoja aplikacija. Imaju svojih prednosti ali i mana. Neke od prednosti sam uspeo ovde da pomenem ali se stvarna moć klasa može osetiti u radu tek prilikom upoznavanja ostatka njihovih osobina kao što su osobine nasleđivanja, korišćenje u kombinaciji sa referencama itd.
holodoc je offline   Odgovor sa citatom ove poruke
Stara 9.1.2007, 22:43   #267
Sale013
Kind Of A Big Deal
 
Avatar korisnika Sale013
 
Član od: 1.11.2005.
Lokacija: Levo od Pakla
Poruke: 2.214
Zahvalnice: 344
Zahvaljeno 450 puta na 265 poruka
Određen forumom Re: objasnjenja pocetniku

Haha! e ljudi citao sam ovaj topic par sati.. Ima ovde korisnih stvarcica, mogli bi da ga "pinujete".. Doduse moram reci da drzim stranu holodoc-a.. C++ je legenda, proslost, sadasnjost i buducnost.. Za programiranje pored upornosti vam treba masta i fleksibilnost.. Tako barem ja mislim
@Marko_L ima istine i u tvojim postovima, ali ne toliko.. A jos nisam ni zaboravio nasu raspravu o pirateriji
Sale013 je offline   Odgovor sa citatom ove poruke
Stara 10.1.2007, 1:22   #268
Marko_L
Mythbuster
 
Član od: 2.11.2005.
Lokacija: Beograd
Poruke: 2.205
Zahvalnice: 38
Zahvaljeno 370 puta na 147 poruka
Slanje poruke preko ICQ-a korisniku Marko_L Slanje poruke preko MSN-a korisniku Marko_L Slanje poruke preko Yahooa korisniku Marko_L Slanje poruke preko Skypea korisniku Marko_L
Određen forumom Re: objasnjenja pocetniku

Citat:
Haha! e ljudi citao sam ovaj topic par sati.. Ima ovde korisnih stvarcica, mogli bi da ga "pinujete"..
Pa pinovan je već nekoliko meseci
Citat:
@Marko_L ima istine i u tvojim postovima, ali ne toliko.. A jos nisam ni zaboravio nasu raspravu o pirateriji
Najlakše je reći "E brale nisi u pravu". Gde su argumenti ? Izvoli citiraj deo za koji misliš da nisam u pravu i obrazloži zašto tako misliš. Naravno da postoji mogućnost da grešim, svako greši, ali bih voleo da znam gde i zašto.
Marko_L je offline   Odgovor sa citatom ove poruke
Stara 29.1.2007, 0:20   #269
Mithrandir
Član
 
Član od: 3.12.2005.
Lokacija: Beograd
Poruke: 371
Zahvalnice: 113
Zahvaljeno 62 puta na 45 poruka
Slanje poruke preko MSN-a korisniku Mithrandir
Određen forumom Re: objasnjenja pocetniku

Svaka cast ljudi...topic je odlican (sem one zamorne rasprave na pocetku ) ali posle ste se lepo zagrejali
Bio sam potpuni pocetnik ali evo sada mogu cak i da napravim programic tipa :

Kod:
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    cout << "Koliko ste visoki?\t"  ; 
    double visina;
    cin >> visina;   
    cout << "\nJa sam visok " << visina << " m. Koliko je to milimetara?"<< endl ;
        
    
    cout << "To je: " << visina*1000 << " mm." << endl;
    
    
    
    
    system ("pause");
    return 0;
}

Ovo sa pauzom je mozda i najkorisnija stvar koju ste postavili jer je lepo kad mozes da vidis plod svog rada (citaj:morale boost).
Uzeo sam da citam (mislim da je Androssova preporuka, mrzi me da trazim :P) Accelerated C++ i za sada ide OK, ali ste mi mnogo olaksali.
Necu mnogo da pisem, nekoliko poslednjih stranica sam preskocio samo da bih se zahvalio (njih cu posle da proucavam pazljivije).

Sta da kazem: keep it up!



There we go Hvala za pm, holodoc.

Poslednja ispravka: Mithrandir (29.1.2007 u 14:53)
Mithrandir je offline   Odgovor sa citatom ove poruke
Stara 29.1.2007, 1:44   #270
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Citat:
Mithrandir kaže:
Kod: Kako ovo da stavim onako kao vi u Kod:?
Jel možeš da budeš malo precizniji šta si mislio pod ovime?
holodoc je offline   Odgovor sa citatom ove poruke
Stara 29.1.2007, 2:12   #271
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 279 puta na 196 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: objasnjenja pocetniku

On je napisao

Kod:
a kod stavio u citat

Zasto ne obratis paznju na dugme desno od citata...
EclipsE je offline   Odgovor sa citatom ove poruke
Stara 29.1.2007, 2:21   #272
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Sad sam tek ukapirao na šta misli

Kod koji ispišeš treba da selektuješ kompletan i da klikneš na ovu sliku tarabe (#) iznad editora.
holodoc je offline   Odgovor sa citatom ove poruke
Stara 29.1.2007, 20:26   #273
Mithrandir
Član
 
Član od: 3.12.2005.
Lokacija: Beograd
Poruke: 371
Zahvalnice: 113
Zahvaljeno 62 puta na 45 poruka
Slanje poruke preko MSN-a korisniku Mithrandir
Određen forumom Re: objasnjenja pocetniku

Citat:
ANDROSS kaže:
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).
Mozes malo da pojasnis?
Ukucao sam onaj kod koji je postavio holodoc, i kako sam razumeo ne bi trebalo da mi izlazi konzola ali izlazi, pa pretpostavljam da je problem ovo sto si ti naveo ali mi nije jasno sta da uradim da mi se ne bi otvarala konzola?

Kod:
#include <windows.h>
int main()
{
    MessageBox(0, "MOLIM?", "DA DA DA!!!", 0);
}
(Tako nesto npr, otvara mi i konzolu i window)
Mithrandir je offline   Odgovor sa citatom ove poruke
Stara 29.1.2007, 22:50   #274
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 279 puta na 196 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: objasnjenja pocetniku

Pretpostavljam da koristish VC++ 6... Skini DevC++ i nece da se pojavljuje!
EclipsE je offline   Odgovor sa citatom ove poruke
Stara 29.1.2007, 22:57   #275
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: objasnjenja pocetniku

Citat:
EclipsE kaže:
Pretpostavljam da koristish VC++ 6... Skini DevC++ i nece da se pojavljuje!
Nije ovo vezano za tip kompajlera već za činjenicu da umesto "main" entry-pointa treba da se koristi "WinMain" da bi se na neki način "objasnilo" kompajleru da radi sa "pravim" Windows okruženjem. Uprošćeno rečeno

Da bi se otvorila "punokrvna" Win32 aplikacija potrebno je malo izmeniti kod ali o tome kasnije kad nađem malo vremena mada je sve u vezi ove stvarčice objašnjeno u temi "objasnjenje pocetniku"
holodoc je offline   Odgovor sa citatom ove poruke
Stara 29.1.2007, 22:57   #276
Mithrandir
Član
 
Član od: 3.12.2005.
Lokacija: Beograd
Poruke: 371
Zahvalnice: 113
Zahvaljeno 62 puta na 45 poruka
Slanje poruke preko MSN-a korisniku Mithrandir
Određen forumom Re: objasnjenja pocetniku

Citat:
EclipsE kaže:
Pretpostavljam da koristish VC++ 6... Skini DevC++ i nece da se pojavljuje!
Nope DevC++ koristim.

lol holodoc je odgovorio u isto vreme
Mithrandir je offline   Odgovor sa citatom ove poruke
Stara 30.1.2007, 0:46   #277
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 279 puta na 196 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: objasnjenja pocetniku

meni se konzola u DevC++-u ne pojavljuje...
EclipsE je offline   Odgovor sa citatom ove poruke
Stara 30.1.2007, 0:54   #278
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 11.181
Zahvalnice: 2.096
Zahvaljeno 4.929 puta na 2.862 poruka
Određen forumom Re: objasnjenja pocetniku

Citat:
Mithrandir kaže:
Ovo sa pauzom je mozda i najkorisnija stvar koju ste postavili jer je lepo kad mozes da vidis plod svog rada (citaj:morale boost).
Uzeo sam da citam (mislim da je Androssova preporuka, mrzi me da trazim :P) Accelerated C++ i za sada ide OK, ali ste mi mnogo olaksali.
Necu mnogo da pisem, nekoliko poslednjih stranica sam preskocio samo da bih se zahvalio (njih cu posle da proucavam pazljivije).

Sta da kazem: keep it up!
Izbegavaj "system" pozive! Šta ćeš ako ovaj isti program pokušaš da izvedeš na Linuxu ili Macu, na čijem shellu ne postoji "pause" komanda?
Hvatanje entera si mogao da izvedeš i sa getchar();
Uvek gledaj da praviš maksimalno portabilne programe, naročito u ovako banalnim primerima.

Citat:
Mozes malo da pojasnis?
Ukucao sam onaj kod koji je postavio holodoc, i kako sam razumeo ne bi trebalo da mi izlazi konzola ali izlazi, pa pretpostavljam da je problem ovo sto si ti naveo ali mi nije jasno sta da uradim da mi se ne bi otvarala konzola?
Treba da napraviš novi Win32 Application projekat, a ne Win32 Console Application.
Za kompajliranje preko gcc-a (koga koristi Dev-C++) postoji određeni switch da nagovestiš kompajleru da je u pitanju GUI a ne konzolni program, ali sam zaboravio kako ide...
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 30.1.2007, 1:07   #279
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 279 puta na 196 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: objasnjenja pocetniku

Ali ja znam! Kad otvoris projekat, idesh na Project -> Project Options ili na kraci nacin, Alt+P, i dole desno vidis pise Type. Tu namestish Win32 GUI.
EclipsE je offline   Odgovor sa citatom ove poruke
Stara 30.1.2007, 17:21   #280
Mithrandir
Član
 
Član od: 3.12.2005.
Lokacija: Beograd
Poruke: 371
Zahvalnice: 113
Zahvaljeno 62 puta na 45 poruka
Slanje poruke preko MSN-a korisniku Mithrandir
Određen forumom Re: objasnjenja pocetniku

Citat:
voodoo_nbgd kaže:
Izbegavaj "system" pozive! Šta ćeš ako ovaj isti program pokušaš da izvedeš na Linuxu ili Macu, na čijem shellu ne postoji "pause" komanda?
Hvatanje entera si mogao da izvedeš i sa getchar();
Uvek gledaj da praviš maksimalno portabilne programe, naročito u ovako banalnim primerima.


Treba da napraviš novi Win32 Application projekat, a ne Win32 Console Application.
Za kompajliranje preko gcc-a (koga koristi Dev-C++) postoji određeni switch da nagovestiš kompajleru da je u pitanju GUI a ne konzolni program, ali sam zaboravio kako ide...
Hvala na savetima!
Samo, jos sam ja totalni pocetnik...
Mithrandir je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Tagovi
programiranje, tutoriali

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno



Sva vremena su po Griniču +2 h. Sada je 2:53.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com