[ARHIIV] mängumeistrid
Pole sisse logitud. [Logi sisse ]
Mine lehekülje algusesse
Prinditav versioon | Telli teema e-mailile | Lisa lemmikutesse  
Õpetus: muutujad
pharaoh
Level 2
Avatar

Liitunud: 23.7.2009
Postitusi: 13
[EEMAL]




postitati 23.7.2009 19:29 Tsiteeri
Õpetus: muutujad



kõigepealt: muutuja = variable + kõik see tekst mis on kaldkriipsude vahel ei lähe koodisisse. See on kommentaar.
Kood on kaldkirjas.
Muutujad on üks väga tähtis game makeri osa.
See teeb meil mängudeloomise palju lihtsamaks.
Muutujaid kasutatakse enamasti if lausetes.
Näiteks kui sa tahad, et su tegelame saaks seeni korjata ainult seeneämbriga pead tegema vastavad koodijupid:
Kõigepealt tegelase create eventisse execute code:
//vältigem täpitähti gm-is muutujates.
amber=0//ehk tegelasel pole veel ämbrit.
seeni=0// ehk tegelasel on 0 seent.
Kõige sagedamini, et programmeerijad üksteise koode ka paremini mõistaksid, tähendab 0 väärtus ei-d ja 1 värtus jah-i.
Joonistage üks seeneke ja ämber. Tehke mõlemaist objektid nende piltidega. Nüüd võtke tegelase eventist collision objektiga amber, execute code ja:
amber=1//ehk siis ämber on olemas, mäletate 1=jah?
instance_destroy(other)// kustutab ruumist ämbri sellepärast, et ämbreid pole meil lõpmatuseni. Other sellepärast, et meil on ämbriga collision event ja see muudab ta selles eventis automaatselt otheriks.
Edasi ainult niipalju, et tegelasel collision seenega, sinna execute code.
//----------------------------------\\
Paljud kirjutavad ka tingimuse sulgudesse
kuid mina seda ei tee,
nüüd te vähemalt ei ehmu ära
kui te näete kuskil sellist lauset:
if (amber==1){
See on ka muidu täiesti töötav tingimuslause.
//--------------------------------------------
if amber==1{
seeni+=1
instance_destroy(other)
}

// nii lahtiseletatult:
//if amber=1{ //kui ämber on olemas siis.
//seeni+=1// tuleb korvi üks seen juurde.
//instance_destroy(other)//seen kaotatakse ruumist.
//}// if lause lõpp.
Ja ongi kõik!
Ja kui te tahate näha palju seeni teil on, või kas teil ämber on, ekraani nurgas tehke eraldi nähtamatu(ärge talle sprite pange) objekt näiteks cpu.
Võtke draw event ja execute code, sinna kribage:
if tegelane.amber==1{
draw_text(0,0,'Amber on olemas')
}
draw_text(0,16,'Seeni: ' +string(tegelane.seeni))

// lahti seletatult.
if tegelane.amber==1{// kui tegelasel on ambri väärtus 1, ehk kui tal on ämber olemas.
// draw_text(0,0,'Amber on olemas')// kirjuta ekraani nurka tekst et ämber on olemas//
draw_text(0,16,'Seeni: ' +string(tegelane.seeni))//kirjuta ekraani nurka mitu seent tegelasel on lugedes infot tegelase muutujast seeni.//
ja kui kellegil on veel mitu tegelase pilti ( üks koos ämbriga)
, siis tuleb sinna tegelase ja ämbri collisioni panna veel:
sprite_index=pilt_kus_tegelane_ambriga
Loodan, et saite mu õpetusest aru, kui midagi on võite privaatsõnumiga ühendust võtta.
Kirjutan homme seda õpetust edasi, sest täna tuli suur väsimus peale, homme kirjutan veel suurem kui, vähem kui-st ja paljudest muudest asjadest.
Kohe nimme tegin pildi ja näiteta, kuna ise eksperimenteerides õpib palju rohkem.

Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
jyri1234
Level 9
Avatar

Liitunud: 16.1.2008
Postitusi: 542
[EEMAL]




postitati 23.7.2009 19:55 Tsiteeri


Muutujates pole täpitähed jah hea mõte, aga draw'i võib panna neid ju küll!

Lihtsalt teed uue fondi, nt font0 ja fondi seadetest valid:

Character Range --> All

draw eventisse kood:

draw_set_font(font0);
draw_text(x,y,"Ämber on olemas!");

Töötab perfektselt!

_________________________________
Eestikeelsed tasuta PHP õpetused - php.ee
PHP Manuaal - php.net
Jõulu 2008 III: Jyri1234<br>
Vaata kasutaja profiili Saada kasutajale e-mail Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 23.7.2009 20:08 Tsiteeri


õpetustes võiks vähemalt korrektset if lauset kasutada!

Võrdlus on KAKS võrdusmärki asi==1 on, et asi on võrdne ühega. Lisaks if lause käib nii:
if(tingimus){
tegevus;
}

tingimusel on täies mahus sulud ümber ja vajadusel võib sulgi veelgi tingimustesse lisada, kui soovi on.


Ei hakanud rohkem palju uurima, kuna see jama kargas näkku.

GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
jyri1234
Level 9
Avatar

Liitunud: 16.1.2008
Postitusi: 542
[EEMAL]




postitati 23.7.2009 20:39 Tsiteeri


GM toetab ka sellist asja:

if muutuja=1{
var1="OLENIDIKAS"
instance_create(x,y,obji)
var2="OLENIKKAIDIKAS"
instance_create(x,y+10,objk)
}

Ei mingeid ; ega ()!
Üpriski lollikindel!

_________________________________
Eestikeelsed tasuta PHP õpetused - php.ee
PHP Manuaal - php.net
Jõulu 2008 III: Jyri1234<br>
Vaata kasutaja profiili Saada kasutajale e-mail Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
valter
1


Liitunud: 19.1.2005
Postitusi: 1553
[EEMAL]




postitati 23.7.2009 20:56 Tsiteeri


jnt, sulud pole kohustuslikud, see ei anna GMLis midagi juurde. Sama moodi nagu semikoolongi :D. Ise ühes ifi tingimuses sulgi ei kasuta, aga semikoolon pmst ikka alati seal, kus olema peab.

Semikoolon on ühes kohas isegi kohustuslik :

var muutuja1 muutuja2;

mujal pole nagu ette tulnud, et syntax error tuleb. returnil vist pidi ka.

GML nii ära hellitatud :D

http://www.dmgamez.pri.ee/GRONGO1/uss_walk.gif
Ralli I: dm11Veresaun III: dm11<br>Emo1: icedude, valter8bit I: võistlus kestabAktsioon III (2009): -<br>Aasta mäng 2009: Pilvemees, valter<br>Vabateema II: valter
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 23.7.2009 22:35 Tsiteeri


paljugi, mis gm läbi laseb. gm toimib mõneti ka, kui if'il { ja } ära jätta.

Aga kui nüüd manuali vaadata, siis isegi seal on minu toodud if konstruktsioon ära näidatud.

See, et vead läbi lähevad, ei tähenda, et need enam vead poleks.

GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
pharaoh
Level 2
Avatar

Liitunud: 23.7.2009
Postitusi: 13
[EEMAL]




postitati 24.7.2009 08:12 Tsiteeri


Siin foorumis kasutavad vähemalt kõik gmli sedaviisi nagu mu näites on kirjeldatud.
Siis ei teki algajal segadust, et miks sellel vennal sulge pole jne, ühesõna tehakse vähem abiküsivaid teemasid.

@ Jüri

Ma tahtsin, et see õpetus oleks võimalikult lihtne ja ei hakkanud seda väga suureks ja keeruliseks tegema, ehk see räägib ainult muutujatest ja nende kuvamisest, mitte fontidest.

Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 24.7.2009 11:58 Tsiteeri


Tsitaat:
Tsitaat: pharaoh
Siin foorumis kasutavad vähemalt kõik gmli sedaviisi nagu mu näites on kirjeldatud.


Räägi enda eest...


Ja pealegi, see, et "kõik teevad", ei ole mingi vabandus. Õpetus, kui selline, peaks olema eeskujuks!

Aga las ta siis olla... eks sa ise tead.

GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
pharaoh
Level 2
Avatar

Liitunud: 23.7.2009
Postitusi: 13
[EEMAL]




postitati 24.7.2009 12:21 Tsiteeri


Ma ei mõelnudki seda mingi vabandusena,
siis ei saaks inimesed siin üksteise koodidest lõpuks aru.
Okei ma teen õpetusse väikse muudatuse....

Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
timoolen
Level 3
Avatar

Liitunud: 22.12.2007
Postitusi: 58
[EEMAL]




postitati 24.9.2009 18:10 Tsiteeri


ei jõua kohale mis vahe on amber==1 ja amber=1

Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
Crypton

Avatar

Liitunud: 18.12.2005
Postitusi: 1604
[EEMAL]




postitati 24.9.2009 18:32 Tsiteeri


GM-is teadaolevalt == vist kasutada ei saagi?

Muudes keeltes on == kasutatav võrdlustel.
Kas Vasakpoolne on võrdne parempoolsega.

if (left == right) {

Kui oleks :

if (left=right) {

sätiks programm right väärtuse left-ile ja võrdlust ei toimu, vaid vaadatakse, kas antud väärtust on. (Juhindudes LiteC-st).

GM seda vahet ei tee ja oskab näha if sees olevat = kui võrdlust ning mujal kui määratakse muutujale sellega väärtus.

Piisavalt adekvaatne vastus?

Maze I: CryptonRalli III: Crypton<br>
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
jorss
Level 12


Liitunud: 25.1.2005
Postitusi: 951
[EEMAL]




postitati 24.9.2009 19:01 Tsiteeri


mis erroreid ja warninguid ei pillu ja koodist arusaamist sitemaks ei tee, on lubatud ja korrektne.

ja ifi võibki kasutada ilma {} asjadeta, sel juhul kuulub if blokki ainult ifile järgnev rida.
Platform II: -DMI-; H0lx&jorssJõulumäng I: h0lx&jorssKambakas I: jorss, Perfoon
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
Peeter
Level 9
Avatar

Liitunud: 17.7.2006
Postitusi: 607
[EEMAL]




postitati 24.9.2009 20:05 Tsiteeri


Mina igatahes kasutan sulge ja semikooloneid. Kasutan sellepärast, et pärast kui tulevikus teisi keeli kasutada, siis ei pea ära harjuma sulgude ja semikoolonite kohustusliku kasutamisega.
Strateegia II: Peeter ja rallitajaRPG III: Peeter<br>Jõulu 2008 II: PeeterEmo3: emoemo<br>Aktsioon I (2009): PeeterVabateema I: veka&pets
Vaata kasutaja profiili Saada kasutajale e-mail Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
timoolen
Level 3
Avatar

Liitunud: 22.12.2007
Postitusi: 58
[EEMAL]




postitati 26.9.2009 20:43 Tsiteeri


Tsitaat:
Tsitaat: Crypton
Piisavalt adekvaatne vastus?

Jah sain aru :P
Kuid samas kui ma juba if kirjutan siis küsitaksegi juba kas antud muutuja võrdub 1 vms. Nii, et jah vist otseselt sihukest asja ei ole, vähemalt vaja ei ole.

Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 27.9.2009 13:08 Tsiteeri


timoolen, tihti läheb vaja ka omistamist if'i sees. Näiteks on äkki mul vaja if'iga küsida, kas muutuja omistamine läks korda. Üks võimalus on see:

a=misiganesfunktsioon();
if(a){ toimib; }

Teine võimalus oleks aga see (kui gm vaid seda toetaks, mida tema ainsana ei toeta)

if(false!=(a=misiganesfunktsioon())){
toimib;
}

If'iga seda efekti väga välja ei tule, kuid while'iga php's nt mysql andmebaasist tulevaid ridu välja lugeda on see pea ainuvõimalik lahendus.



btw, gm toetab kahe võrdusmärgiga võrdlemist kenasti. Vähemalt 7 veel toetas, kuna ma ple kunagi ühe võrdusmärgiga gm'i progenud, kuid viimasega pole mul küll probleeme tekkinud.

GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum

Hetkel loevad seda teemat:
Mitte ühtegi - 1 külaline

Mine lehekülje lõppu





Foorumi algbaas põhineb XMB mootoril, modifitseeritud Valter Pundi poolt
Kodulehekülg on tehtud Valter Pundi poolt vpundi ät gmail punkt komm