Metro icon De Digitale Metro
Naar de Metro Voor beginners Programmeren Infrastructuur Sociaal Links
   
  Metrologo Programmeren voor beginners 1.1  

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.