Proggen voor beginners
Toen ik begon in de metro ging ik eerst de metro een beetje
verkennen. Ik leerde verbs te gebruiken, wat waar te vinden was
en de nettiquette van de metro. Op een gegeven moment (pas na 100
dagen of zo) werd ik bouwvakker. Ik leerde bouwen met @dig,
objecten maken met @create $thing called ".." en ze te
beschrijven met /he en /de. Toen ik dit onder de knie had werd
het tijd om te leren proggen. Ik printte alle handleidingen uit,
las ze van a tot z en ... kon nog steeds niet proggen. De
handleidingen stonden vol met allemaal handige progtruukjes, maar
ze leerden je niet te beginnen met proggen. Uiteindelijk heb ik
het toch geleerd door goed naar andere verbs te kijken. Het is
eigenlijk heel makkelijk, maar je moet wel een paar dingen weten.
Voor degenen die hetzelfde probleem hadden als ik is deze
handleiding bedoeld: de bedoeling is dat je na het lezen van deze
handleiding de beginselen kent en zelf een verb kan maken.
verbs
Om te beginnen is het goed te beseffen wat een verb eigenlijk
is. Zeg, kijk, >, troost, leespost, dit zijn allemaal verbs:
een commando dat een programma van 1 of meer regels opstart. Een
verb zit op iets: zeg, kijk en volg zijn bv een paar verbs die op
mama speler staan, zodat elke speler deze verbs kan gebruiken. Zo
staan er ook verbs op mama kamer, de generieke announcer, mama
brief, etc, en ook hier geldt dat dat alle 'kinderen' deze verbs
ook hebben. Verbs staan ook vaak op een object, of op een speler
(een speler is trouwens ook een object en heeft een nummer, ik
ben bv #14447): als je zelf een verb maakt en deze op jezelf zet
kan deze alleen door jou of met jou als 'slachtoffer' gebruikt
worden. Tenslotte zijn er de bekende features: op features staan
verbs die door iedereen gebruikt kunnen worden.
Het belangrijkste bij het leren proggen is leren om verbs te
leren lezen. Verbs kunnen op elk object staan (alles wat een
nummer (#64 bv) heeft is een object) en als je begint is het leuk
om die verbs te ontdekken, maar hoe doe je dat? Daar zijn
verschillende commando's voor.
Kijk en exam
Zoals je weet kun je met kijk #... of kijk <naam van
iets> naar iets kijken. Je ziet dan alleen de beschrijving van
iets, de inhoud en eventuele adetails. Een commando dat hierop
lijkt is exam #.. of @exam #.. (in het vervolg gebruik ik ook #..
voor een willekeurig object. Voor #.. kun je dus een nummer van
iets invullen. Dit werkt altijd: de naam van iets (dus bv exam
dimitri) werkt alleen als je in dezelfde kamer bent). Als je exam
#.. doet, zie je niet alleen de beschrijving en inhoud van iets,
maar ook een aantal verbs die op dat object staan. Deze verbs kan
je dan met het @list commando bekijken (zie verder).
@show
Een volgend commando is @show. Dit geeft heel veel informatie,
maar het is vooral handig om te bekijken wat voor properties er
staan op een object. Wat zijn properties? Dat hoef je nog niet
meteen te weten als je begint met proggen, maar het komt neer op
een eigenschap van iets dat een waarde kan hebben (0 of 1 bv) of
een tekst ("een" bv). @show is voor nog iets handig,
dat kom je straks tegen.
@dump
Dan komen we bij HET commando om verbs te bekijken op iets:
@dump #.. Als je @dump doet, krijg je naast o.a de beschrijving
ook alle verbs inclusief codes te zien die op een object staan.
Dit is echt een heel handig commando en ik kan je aanraden het
veel te gebruiken. Er is echter ook een nadeel aan dit commando:
als iemand veel verbs op zichzelf heeft staan en je @dumpt die
persoon, dan moet je enorme lappen tekst doorwerken, terwijl
misschien maar een klein gedeelte interessant voor je is.
Gelukkig zijn er ook twee commando's waar mee je e e n verb kunt
bekijken: @list en code. Het verschil tussen beide is dat @list
de regelnummers erbij zet en code niet (in het vervolg gebruik ik
@list) Als je weet hoe een verb heet (bv het verb blaas) en je
weet waarop ie staat (gattopardo's katachtige feature, #8217) dan
kun je dit verb bekijken door @list #..:verbnaam te doen, in dit
geval @list #8217:blaas Dit is heel belangrijk om te kunnen doen.
Stel namelijk dat je een goed idee hebt voor een verb, maar je
weet niet precies hoe je het moet programmeren, dan kun je
proberen te zoeken naar een verb die lijkt op jouw idee, en dan
afkijken hoe het moet. Een voorbeeld hiervan is hoe ik het verb
#6400:zl gemaakt heb, die degene die als laatste binnengekomen is
een zoen geeft. Zelf had ik het niet kunnen maken, maar gelukkig
was er een verb qgl. Ik hoefde van dat verb alleen maar wat tekst
te veranderen en voila, een leuk verb erbij. Zo kun je soms ook
een gedeelte van een bepaald verb overnemen voor je eigen verb.
Vooral als je beginner bent: jat gerust!
permission denied
Er is een maar aan dit verhaal. Soms wil je een verb lezen, en
dan krijg je dit te zien: Permission denied Ai. Dat betekent dat
je de verb niet kan lezen. De verb staat in progtaal gezegd -r,
oftewel degene van wie de verb is heeft @chmod #..:verbnaam -r
gedaan. (Als een verb -r staat is ie niet leesbaar voor anderen,
+r wel). Dit komt nogal veel voor, blijkbaar wil men vaak niet
dat verbs door anderen gelezen kunnen worden. Dan moet je dus
vragen aan de maker van de verb of die 'm leesbaar wil maken of
een ander verb vinden om te bekijken.
Voorbeelden
Als je het bovenstaande goed begrepen hebt in feite al aan de
slag. Je handen jeuken misschien al om je creatieve ideen ten
uitvoer te brengen. Misschien heb je ook nog geen idee wat voor
verbs je wil gaan maken. Je eerste verbs zal ongetwijfeld een
eenvoudige zijn, zoal de meeste verbs: een verb die e e n of meer
regels tekst op het beeld laat verschijnen. Meer hoef je ook niet
te leren om leuk te kunnen proggen, en het is ook niet moeilijk,
lees maar verder. Ik zal eerst twee programmaatjes laten zien:
het zeg-verb en een spoof-verb.
zegverb
Een verb om iets te zeggen ziet er bv zo uit:
player:tell("Je zegt, \"", argstr,
"\");
player.location:announce(player.name, " zegt, \"",
argstr, "\"");
Deze twee regels bestaan uit een basisgrammatica:
object:wat daarmee gebeurt("een tekst");
Je kunt hier zo'n beetje letterlijk lezen wat een regel doet.
De eerste regel: Vertel speler argumentenstring (dat laatste is
de tekst, dus bij zeg hallo allemaal is de argumentenstring hallo
allemaal). De tweede regel: Laat zien in de locatie van speler
(naam speler, zegt, argumentenstring). Dit wordt nog wel gesneden
koek. Het is belangrijk nooit de ; aan het eind van een zin te
vergeten. Verder zal ik nog niet op dit verb ingaan.
spoofverb
Het zeg-verb zag er misschien nog een beetje ingewikkeld uit,
het spoof-verb is heel simpel.
player.location:announce_all(argstr);
Dit is ook simpel te lezen: in de locatie van de speler wordt
iedereen de argumentenstring getoond. Dus als iemand zo het verb
gebruikt: spoof dit is een test dan ziet iedereen in de
kamer van die persoon: dit is een test.
Je hoef echter niet (argstr) te gebruiken. Je kan ook het
volgende doen: een verb tranen die er uitziet als
player.location:announce:all(player.name, "barst in
tranen uit");
Poekie typt vervolgens tranen in en iedereen in de
kamer leest dan: poekie barst in tranen uit.
Zo heb je dus een heel eenvoudig verb gemaakt. Dat is niet
moeilijk he? Het is even nodig wat engelse termen te kennen, maar
die zijn niet moeilijk. De belangrijkste:
player = degene die een verb uitvoert. Als jij een
verb typt ben jij player.
dobj = degene op wie de verb gebruikt wordt. Als je zoen
poekie doet dan is poekie dobj.
player.location of dobj.location = de kamer
waar player of dobj zich bevindt.
player.name of dobj.name = de naam van speler
of dobj.
announce_all = laat de tekst aan iedereen zien.
announce = laat de tekst aan iedereen behalve de speler
zelf zien
tell = laat de tekst alleen zien aan degene die voor de
dubbele punt staat, bv dobj:tell laat de tekst aan dobj zien
adetail = geef een adetail aan iemand
Er zijn natuurlijk meer termen, maar die leer je wel door
andere verbs te listen. Laten we nu eens een verb maken.
Een verb maken: kopjes
Je wil bijvoorbeeld een verb maken waardoor je een heleboel
kopjes aan iemand kan geven. Het eerste wat je doet is de verb
aanmaken, als volgt:
@verb me:kopjes any
Dat is altijd het eerste wat je moet doen: @verb ...:... Als
je begint moet je dit onthouden: achter een verb als huil komt
niets, dat is none none none of gewoon
niets (@verb me:huil); achter een verb als zoen <naam> komt
de naam van iemand, daarom @verb me:zoen any; achter een verb als
vr <tekst> komt een aantal woorden te staan, daarom @verb
me:vr any any any. In dit geval is het kopjes <naam>,
daarom any.
Het tweede wat je moet doen is in de editor komen om het
programma te
maken. Dat gaat als volgt:
@edit me:kopjes
Zo kom je dus in de editor, wat je waarschijnlijk al kent van
bv /me (je eigen beschrijving instellen). Nu kun je dus beginnen
de code van het programma in te typen. Eerst wil je de tekst
maken die je zelf te zien krijgt als je de verb uitvoert, en die
gaat als volgt:
player:tell("Je begint te spinnen en geeft ",
dobj.name, " een heleboel kopjes.");
Als ik nu kopjes poekie doe, dan zie ik (en niemand
anders) op het scherm verschijnen: Je begint te spinnen en
geeft poekie een heleboel kopjes. Poekie is in dit geval
dobj.name. Bekijk hier goed dat (".... ", dobj.name,
" ..."); dat zul je vaak zien. De komma plakt dus de
tekstgedeelten aan elkaar. Let ook op de spatie achter geeft en
voor een, wat zou er gebeuren als die spatie er niet staat?
Als tweede wil je de tekst maken die diegene ziet op wie je de
verb uitvoert, dobj dus. Dat gaat als volgt:
dobj:tell(player.name, " wil blijkbaar iets van je
want ", player.psc, " begint als een kat met honger te
spinnen en geeft je een heleboel kopjes.");
Als ik kopjes poekie doe, dan ziet poekie (en niemand
anders): dIMITRI wil blijkbaar iets van je, want hij begint
als een kat met honger te spinnen en geeft je een heleboel
kopjes. In deze regel staat iets nieuws: player.psc. Dit
staat voor persoonlijk voornaamwoord, in mijn geval mannelijk:
hij. Zo heb je ook variabelen voor bezittelijk voornaamwoord,
meewerkend voornaamwoord, etc. Die afkortingen hoef je niet uit
je hoofd te leren, je kan ze namelijk opzoeken door @show me te
doen.
Ook kun je kijken bij
Programmeren voor beginners 2.0
voor dit rijtje. Kijk maar eens!
Nu de tekst die de rest van de kamer ziet.
player.location:announce_all_but({player, dobj},
player.name, " begint als een kat met honger te spinnen en
kopjes te geven aan " , dobj.name, ". ",
player.name, " wil blijkbaar iets van ", dobj.name,
".");
player.location:announce kan ook, dan ziet iedereen in de
kamer behalve de speler de tekst. Dat klopt echter niet helemaal,
want dan ziet dobj de tekst ook, vandaar het _all_but truukje.
Tenslotte zorg je dat er een adetail op de dobj komt, als
volgt: dobj:adetail({2, "miauw"});
Het cijfer (2) geeft het type adetail aan. Een overzichtje
hiervan kun je lezen in handleiding 3 van mrfan (is niet zo
belangrijk)
En nu...
Het programmaatje is nu geschreven, en je sluit dan af met
ctrl-x. Nu komt er een altijd spannend moment... de computer
bekijkt of er geen syntaxfouten in het programmaatje zitten.
Nu bezig met het programmeren van me:kopjes(1).
[Typ regels tekst; gebruik `.' om te stoppen of `@abort' om te
annuleren.]
Line 3: missing quote
Line 3: syntax error
2 fout(en).
Verb niet geprogrammeerd.
Dit zul je vaak zien. Ergens heb je een foutje gemaakt, en dan
geeft ie een foutmelding. Gelukkig geeft ie ook aan in welke
regel de fout zit, en soms wat er fout zit (er is in ieder geval
een R vergeten dus) Je moet dus weer terug in de editor, maar
niet door /e me:kopjes! Dan krijg je namelijk terug een leeg
scherm te zien, en ben je alles wat je geschreven hebt kwijt! Er
is een ander commando om terug in de editor te komen, zonder dat
je kwijtbent watje net geschreven hebt: /re, waarmee je terug
komt in de editor van wat je het laatst deed, de verb me:kopjes
in dit geval dus. Je zoekt nu de derde regel van je verb op,
kijkt of je
inderdaad ergens een R bent vergeten (of te veel hebt), kijkt
verder of er niet nog een foutje in zit, : vergeten, een spelfout
gemaakt, verbeterd de gevonden fouten en na ctrl-x...
Nu bezig met het programmeren van me:kopjes(1).
[Typ regels tekst; gebruik `.' om te stoppen of `@abort' om te
annuleren.]
0 fouten.
Verb geprogrammeerd.
YES! De verb is geprogrammeerd! Nu nog even testen, eerst op
jezelf (met kopjes me), dan nog voor de zekerheid op iemand
anders, en dan.... de metro in met je eigen verb!
Als het goed is ben je nu in staat een verb te proggen. Als je
meer wilt leren over programmeren kun je de handleidingen lezen
in de kiosk van het
metroplein, hier volgen kort nog wat dingetjes die je kunt
gebruiken.
Tips!
- kijk #15357 - De handleiding features programmeren lezen
- @rmverb ...:... - een verb verwijderen
- \" - Als je in een regel tekst aanhalingstekens wilt
hebben, moet je \ gebruiken
- help title - voor een voorbeeld van een if...else endif
constructie
- suspend(5) - Een pauze van 5 seconden (of een ander
getal) tussen twee regels. Dus als je hebt staan
player:tell("hoi"); suspend (5);
player:tell("nog een keer hoi") wacht ie 5
seconden na hoi voordat nog een keer hoi komt.
Maar het belangrijkste is: verbs bekijken, zelf proberen en
als je er niet uitkomt vragen! Voor vragen over deze handleiding kan je terecht bij dIMITRI.
|