GAME MAKER -->Dakle :

81

GAME MAKER -->Dakle :

offline
  • Pridružio: 15 Maj 2009
  • Poruke: 963

Napisano: 01 Feb 2010 20:52

Sto zmmaj mora da kaze Mr. Green

Stavi koloziju explorera sa odredjenim objektom i upisi sledeci kod:
question=show_question('Do you want to play again?'); if question=1 game_restart(); if question=0 game_end();

Dopuna: 01 Feb 2010 20:57

Inace, predlozio bi ti da iz eventa <no key> objekta explorer izbrises akciju "Move Fixed" koji sam ti greskom postavio kada sam ti popravljao igricu, ukoliko to vec nisi uradio. Potpuno je nepotrebno i samo moze da ti smeta.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 03 Okt 2009
  • Poruke: 246

Napisano: 01 Feb 2010 23:34

kole017 ::



Stavi koloziju explorera sa odredjenim objektom i upisi sledeci kod:
question=show_question('Do you want to play again?'); if question=1 game_restart(); if question=0 game_end();


El nije moglo na SRPSKOM???
Ako ces da pises nekim svetskim jezikom, napisi na Kineskom... Smile
On se i onako najvise koristi u svetu.. Smile

Dopuna: 02 Feb 2010 8:29

SKRIPTING-NASTAVAK





POgledajte gornji dijagram... Velika kocka predstavlja instancu nekog objekta u sobi... Ona , kao sto se da videti ima svoje EVENT-e ( dogadjaje) na osnovu kojih reaguje u odredjenom momentu i pod odredjenim uslovima...
Pisati kodove, kao do sada u samoj instanci, u npr CREATE EVENT-u, nije problem, sve dokle mozete pratiti ono sto ste napisali, odnosno, dokle god je vizualno smislen sadrzaj u istom eventu.
Problem nastaje kada se broj kodova poveca dovoljno, da skrolovanje kroz sami Editor koda da bi videli sve sto ste napisali , postaje smorno i naporno...

Kako resiti ovaj problem ?

M. Owermans je napravio folder u GM editoru pod nazivom "Scripts".
Cemu to sluzi ?

E, pa, unutra mozete staviti sve one kodove iz , eto npr tog Create event-a bez ikakvih problema, vizualno logicno, a da opet sve radi kako treba..
( na dijagramu su to one leve kocke.. Smile )

Npr...
U Create event imate grupu kodova koja sluzi za iniciranje nekih varijabila... recimo sledece:
a=0;b=0;c=15; //etc...

Kliknemo desni klik na folder " Scripts", i iz menija izaberemo opciju " Create Script".
Otvara se Skripting prozor, slican kao i GM editor kodova , ali ne i isti...
Skripting prozor, ima , primeticete i naslov.
Dakle, upisite na vrhu neki smisleni naslov, npr "scr_iniciranje"
a, ispod u samo prozoru prebacite sve globale iz CREATE EVENTA objekta.
( Pri imenovanju pridrzavajte se dosadasnje prakse imenovanja... )
Kada ste sve globale, i sve sto mislite da je potrebno prebacili u skriptu, sada sve te kodove mozete izbrisati iz samog CREATE EVENTa objekta, a umesto njih, jednostavno napisati samo naziv skripte odnosno "scr_iniciranje()"
Primetice te da osim naslova, u pozivu postoje i zagrade ()...
Da to je uslov za oznacavanje poziva skripte...
Ukoliko zaboravite ove zagrade GM ce vam prijaviti gresku...

Skripte mozete iskoristiti u razlicite namene...
Npr da u njima izracunate nesto....

npr, trebate izracunati "C=A+B" u skripti "scr_izracunaj"

iz neke instance objekta, npr "o_start", ali taj isti proracun koristi jos neka instanca, npr "o_junak".

Kako ovo odraditi...?

Skripte se mogu pozivati sa do 16 argumenata ( slicno kao i dll-ovi...)
pa tako u samoj skripti mozemo napisati sledece, i to u obe pomenute instance objekta, naravno tamo ge nam treba ta kalkulacija...

A= argument0; B=argument1;

C=A+B...
return C;

(Ovo isto je moglo i na sledeci nacin odraditi... Znaci CEO gornji kod je prikazan ispod...

C= argument0+argument1;
return C;

U ovom, donjem slucaju cak i nije potrebno definisati A i B vec se direktno radi sa argumentima...

Ovakva skripta se iz same instance objekta poziva kao i gore sto sam napisao, samo upisom naslova, a u zagradi se dodaju argumenti...
Argumenti mogu biti fixni ( neki broj , string, etc) ili promenljive, kada su iste predstavljene slovom...
Argumenti su u zagradi, razdvojeni zarezom...
U istoj zagradi se mogu nalaziti razlicite vrste argumenata, i sve je dozvoljeno... Argument moze biti slovo, broj, ili bilo sta drugo pod uslovom da ispunjava GM uslove imenovanja varijabili...

npr...
1: resenje=scr_izracunaj(5,10); // ovde su argumenti nepromenljivi.
2 resenje=scr_izracunaj(G,D);// gde su G i D neke promenljive ovisne o samoj aplikaciji

3: resenje=scr_izracunaj('ja sam' , ' genije');

U sva tri slucaja skripta vraca rezultat C, koji sama instanca objekta preimenuje u "resenje", samim pozivom...
Takvo "resenje" moze koristiti u daljim akcijama...

Istoj skripti, mozete na isti nacin pristupiti iz bilo kojeg objekta, instance objekta,bilo kojeg EVENT-a , ili skripte, i uvek na isti, gore opisani nacin...

Nadam se da sam bio jasan..... Sva pitanja u vezi skripti, izvolte pa pitajte...
Verujem da ste se i sretali u dosadasnjim primerima sa ovakvim pozivanjem skripti, a pri pozivu DLL-ova su vrlo vazne, narocito ako su DLL-ovi sa vecim brojem funkcija... Smile

E zato sam rekao da smo mozda ovo i preskocili i presli na rad sa DLL-ovima.. ali, neka,... NAdam se da je ovo barem malo rasvetlelo nejasnoce u radu sa samim DLL-ovima.. Smile
NA donjoj slici je praktican primer ovakvog nacina rada...
POgledajte poslednji red editora Skripte , u njemu stoji "vreme_upis()",
sto prakticno znaci, da sam iz ove skripte, " komanda" pozvao drugu skriptu "vreme_upis"... NAdam se da je jasno...




Osim do sada napisanih " KORISNIH" stvari od skripti, postoji jos nekoliko tako korisnih stvari...
Npr, ukoliko vise instanci koristi iste kodove , Zasto bi ste u svakoj instanci pisali to isto???
Jednostavno napravite skriptu, ubacite date kodove unutra, a u samim instancama, umesto kodova napisite samo ime skripte...Smile
Rezultat: krajnja aplikacija ce imati 'N" manji broj redova koda.. i bice " laksa" , gde je 'N' broj instanci koji bi inace imali u sebi iste kodove...
Ja sam npr, radio aplikacije u kojima se u 100-tinak instanci provlace 15tak istih redova koda...
1 skripta je smanjila broj ukupnih broja redova koda za 100*15 =1500...
a to je pisaaaanjeeee do bola... Pa vi vidite.. Smile

Dopuna: 02 Feb 2010 9:16

NESTO O RADU SAMOG GM...


U momentu kada ste krenuli sa skriptama, potrebno, cak neophodno je reci nesto o samom redosledu izvrsavanju komandi u GM...

Komande se u GM izvrsavaju odredjenim redosledom, po inverznom staresinstvu, i JEDNA PO JEDNA gore navedenim redosledom....
Staresinstvo je kada postavite grupu drugara razlicitih godina, i kazete im da se poredjaju po godinama, tj staresinstvu od najstarijeg do najmladjeg.
U GM, najstariji deo koda, je room0 odnosno prva soba koju ste napravili...
U GM se kod koji je najstariji, prvi izvrsava... Po staresinstvu.. Smile
Cak i u samoj sobi postoji skript deo gde mozete napisati komande koje ce se prve izvrsiti jos pri kreiranju sobe...
Dalje, po staresinstvu idu instance koje ste kreirali, i njihove komande.
Svaka instanca nekog objekta koja se kreira u sobi, ima svoj ID broj...
taj ID broj linearno raste sa brojem ukupnim brojem instanci u sobi...
taj ID broj odredjuje i staresinstvo medju instancama... ona sa najmanjim brojem se prva izvrsava ( zato je inverzno staresinstvo ... najmladja po vremenu kreiranja, a najstarija po vremenu izvrsavanju komandi);

Naravno pre svih ovih, pa i room komandi, postoji grupa komandi koje su apsolutno prve pri izvrsavanju...
To su komande vezane za podesavanje same aplikacije...
Ucitavanje zvukova, sprajtova, podesavanje rezolucije , prioriteta , i mali milion ostalih stvari koje se dese pre nego se room uopste i pokrene...

Cemu sve ovo???

Pa prosto, kada dodjete u situaciju da ste sve napisali kako treba, a aplikacija radi nepredvidjeno, razmislite da li vam se komande izvrsavaju po gore opisanom staresinstvu...
Meni se ne mali broj puta desio, da aplikacija radi nestabilno, upravo zato sto nisam vodio racuna o ovoj stvari, pa se desavalo da sam trazio rezultat od instance PRE nego je ista instanca uopste uspela da ga izracuna...

Da bi ste ovo izbegli, pribegnite triku, koji cesto i ja koristim, kada imam veliki broj instanci a vrlo je bitno kada se sta izbrsava, da instance NE poredjate u sobi u pocetku, vec da svaku sledecu instancu kreirate iz predhodne...

Npr... na kraju CREATE event-a instance objekta A napisen " instance_create(x,y,B);
iz instance B kreiram C etc etc etc... Smile

Mislim da je i ovo jasno... Smile



offline
  • Pridružio: 30 Avg 2009
  • Poruke: 144
  • Gde živiš: Serbia

Napisano: 02 Feb 2010 9:32

@kole017

shvatio sam. uspelo mi je Very Happy zmmaj treba da kaze zato sto on to najbolje objasni. Laughing

Dopuna: 02 Feb 2010 9:33

ali sad ne treba da kaze. kole017 je vec rekao LOL

offline
  • Pridružio: 03 Okt 2009
  • Poruke: 246

E sad bih zamolio dobrovoljca... da IZDVOJI sve ono sto sam ovde pisao o GM, i napravi neku vrstu uputstva...
Znaci, izdvoji, ispravi slovne i gramaticke greske, i da tako sredjeno, postavimo negde za download...

Ovde smo ugurali u 41 stranu... i kako idemo, necemo stati na 41...
Jako je tesko da se novi GMakerovci snadju u ovoj shumi, pitanja, odgovora, postova, objasnjenja etc... Pa ce pre odustati, nego pristati da citaju stranu po stranu...

Ovo sto imate do sada na ovom forumu je najsadrzajnije objasnjenje GM-a na Srpskom jeziku, igde objavljeno...
Treba sacuvati i za druge...
Ukoliko, a bice jos toga, bude trebalo dodati nova objasnjenja, i to ce mo raditi, dodavsi vec uradjenom ta nova objasnjenja...

Takodje ne bi bilo lose da date i neki svoj doprinos napravivsi open source tutorijale sa komentarima na nasem jeziku...
Oni bi isli uz uputstvo...

SUTRA nastavljamo... RAD sa WINDOWS registry bazom...

OKE?

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Samo jedno kratko pitanje. Zasto sad rad sa win. reg. bazom? Ne kazem da to znanje nece nekom pomoci, ali bi vise pomoglo kad bi recimo napisao kompletan workflow za pravljenje jednostavne igre.

offline
  • Pridružio: 03 Okt 2009
  • Poruke: 246

Prost odgovor... Toliko se toga tamo moze sacuvati(registracije, polozaji, podesavanja), izmeniti, procitati ( OS, keyboard language etc.)
A postoji i vrlo interesantan nacin za aktivno koriscenje iste... sacekaj...

posle registry baze slede baze podataka, liste....
Tek kad to sazvacu ide workflow, pa nastavljamo sa bazama, tacnije mapama baza...
Kad zavrsimo i to, idemo u 3D GM svet... Smile

offline
  • Pridružio: 15 Maj 2009
  • Poruke: 963

Napisano: 02 Feb 2010 13:22

Citat:El nije moglo na SRPSKOM???
Ako ces da pises nekim svetskim jezikom, napisi na Kineskom... Smile
On se i onako najvise koristi u svetu.. Smile


特定のオブジェクトを確認オブジオブジェクトとは、次のコードを書く:

Je si li sada srecan??? Mr. Green Mr. Green Ma vidim decko koristi "strucne" nazive pa i ja da ih koristim Mr. Green

Sada cu da procitam ovo, ima mnogo...

Dopuna: 02 Feb 2010 13:36

zmmaj ::Primetice te da osim naslova, u pozivu postoje i zagrade ()...
Da to je uslov za oznacavanje poziva skripte...
Ukoliko zaboravite ove zagrade GM ce vam prijaviti gresku...


Odatle pa nadalje mi nije bas jasno, mislim na uslove. Sta da stavim u zagrade?? Mogu li da ih ostavim praznim Mr. Green .

offline
  • Pridružio: 03 Okt 2009
  • Poruke: 246

Naravno da ako nemas argumenata koje bi poslao, tacnije, ako skripta koju pozivas ne trazi argumente, i moras da ostavis prazno... Sta bi pa inace upisao?

offline
  • Pridružio: 15 Maj 2009
  • Poruke: 963

Dobro.

Inace ovo sto si rekao za tutorijal, ja sam uradio ono sto smo ucili, mogu da ti posaljem na pp da vidis cisto onako...

Ovo od dllova pa nadalje je izgleda sve komplikovanije i komplikovanije...

offline
  • Pridružio: 03 Okt 2009
  • Poruke: 246

Znam...
Zato sam i krenuo u registry bazu...
Tu samo skripting radi...
Vi jednostavno nemate naviku da kuckate, lakse vam je da prevucete vec gotovu komandu...

Probao sam da vas nakar malo odvojim od Drag&Drop nacina programiranja sa onim CD plejerom... izgleda da CD plejer nije bio dovolno veliki izazov...
E, pa sutra, nesto sto ce vas dovoljno zaintrigirati da krenete i da kuckate... Smile

Nista slucajno... Smile

Ko je trenutno na forumu
 

Ukupno su 810 korisnika na forumu :: 4 registrovanih, 1 sakriven i 805 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: ALBION101, mrav pesadinac, Nobunaga, 125