Introductie

In deze les gaan we je leren over variables. Misschien dat je al iets over variables hebt geleerd in een andere les op deze site, maar zo niet, dan kan deze les lastig zijn. Neem dus gerust de tijd om een video een tweede keer af te spelen als het te ingewikkeld wordt. Start eerst alle programma’s (IDLE, Python Shell, Bukkit Server en Minecraft) op en zorg dat de Bukkit Server verbonden is met Minecraft. Als je bent vergeten hoe dit moet, ga dan gerust terug naar lesbrief één om nog een keer te bekijken hoe dit allemaal werkt.

In les 1 heb je geleerd hoe je met het commando mc.postToChat(“tekst”) een tekst kunt plaatsen in de minecraft chat. We pakken even ons vorige scriptje erbij. Klik op Fileàopen en ga vervolgens naar de map MyAdventures. Vervolgens moet je klikken op lesbrief_1_helloworld.py en op openen. Klik vervolgens op Fileàsave_as, waardoor je het bestand kunt opslaan onder een andere naam. Dit doen we omdat we in deze les allerlei wijzingen aan het script gaan maken en we die als apart document op willen slaan. Sla het script op als lesbrief_2_variables.py, en vergeet niet de .py. Zorg ook dat het script in de juiste map opgeslagen is (MyAdventures).

Als alles de vorige les goed was gegaan heb je nu het volgende script voor je staan:

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

mc.postToChat(“Hello Minecraft World”)

mc.postToChat(“Hello Minecraft World”)

mc.postToChat(“Hello Minecraft World”)

mc.postToChat(“Hello Minecraft World”)

mc.postToChat(“Hello Minecraft World”)

Het maakt niet uit als er een andere tekst tussen de aanhalingstekens staat. Druk op F5 om het script uit te voeren. Als je alles goed hebt gedaan de vorige les en deze les, dan verschijnt er 5x Hello Minecraft World in de minecraft chat. Als dit niet het geval is, zorg dan eerst dat minecraft goed verbonden is met de bukkitserver, dat je je script in de juiste map hebt opgeslagen en dat je geen typfouten in het script hebt gemaakt.

Stel dat je in plaats van “Hello Minecraft World”, “Hallo mijn naam is Joris” 5x in de chat wil neerzetten, moet je alle 5 de “Hello Minecraft World” vervangen door “Hallo mijn naam is Joris”. Dit is nu nog wel te doen, maar stel dat je 100x dezelfde tekst moet aanpassen? Dat zou best veel werk zijn. Daarom is er nog een andere manier om dit voor elkaar te krijgen.

Vervang in je bestand alles wat je hebt geschreven door de volgende tekst:

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

tekst= “Hello Minecraft World”

mc.postToChat(tekst)

mc.postToChat(tekst)

mc.postToChat(tekst)

mc.postToChat(tekst)

mc.postToChat(tekst)

Druk vervolgens op F5 om het script uit te voeren. Als alles is gelukt, verschijnt er in de Minecraft chat 5x de tekst “Hello Minecraft World”. Als we nu de tekst willen veranderen, veranderen we niet de tekst in de mc.postToChat statement, maar alleen de tekst “Hello Minecraft World”. We moeten wel zorgen dat je tekst tussen aanhalingstekens staat, maar dat “tekst” in de mc.postToChat(tekst) niet tussen aanhalingstekens staat. Als we nu op F5 drukken, zal die vijf keer een andere tekst plaatsen. Pauzeer de video en probeer maar op deze manier verschillende teksten in de chat te plaatsen. Verander het script zo dat je nu je naam in de chat kunt posten.

Wat tekst in dit programma is, is een variable. Een variable kun je zien als een soort emmer waarin je iets kunt opslaan. In dit geval slaan we er de tekst “Hello Minecraft World” in op. Als we in een statement nu de computer de opdracht geven om een variable in de chat te zetten met mc.postToChat(tekst), zal die aan de variable tekst vragen wat hij heeft opgeslagen. Vervolgens plaatst hij die tekst in de chat. Het voordeel van een variable is dat je alleen maar de waarde die hij heeft hoeft te veranderen en in de rest van het script verandert die mee.

Wanneer je variable een tekst als waarde heeft moet die tussen aanhalingstekens staan. Pauzeer de video en vervang in je script de regel

tekst=”Hello Minecraft World”

door

tekst=Hello Minecraft World

Druk nu op F5 en je zult zien dat er een error verschijnt.

Variables kunnen ook cijfers als waarde hebben. In dat geval hoef je geen aanhalingstekens te gebruiken. Probeer maar eens Hello Minecraft world te vervangen door 1. Dan krijg je de volgende regel:

Tekst=1

Als je vervolgens op F5 drukt, zal die 5x 1 plaatsen in de chat. Pauzeer de video en ga nog maar wat verschillende cijfers in de chat plaatsen.

Een volgend belangrijk iets om te onhouden is dat je variables nooit tussen aanhalingstekens als je ze aanroept in een statement. Pauzeer de video en vervang elke mc.postToChat(tekst) door

mc.postToChat(“tekst”)

Druk vervolgens op F5. Wat gebeurt er? In plaats van de waarde van de variable op te schrijven, zal de computer alleen het woord tekst neerzetten. Het is daarom belangrijk om de variable niet tussen aanhalingstekens te zetten. Anders gaat de computer namelijk denken dat je niet om een variable vraagt, maar gewoon een stukje tekst neerzet.

Variables kunnen elke naam hebben, maar er zal pas iets worden opgehaald op het moment dat de variable ook daadwerkelijk een waarde heeft. Als we in het script tekst vervangen door a en op F5 drukken zal er niks gebeuren, zoals je nu ziet. Als we in het script vervolgens tekst ook in mc.postToChat(tekst) vervangen door a, dan zal er wel weer iets gebeuren.

Daarnaast kun je meerdere variables in één bestand hebben. Pauzeer de video en vervang je script door de volgende tekst:

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

tekst= “Hello Minecraft World”

getal= 2

mc.postToChat(tekst)

mc.postToChat(tekst)

mc.postToChat(tekst)

mc.postToChat(getal)

mc.postToChat(getal)

mc.postToChat(getal)

Druk op F5 en je zult zien dat je eerst 3 keer een tekst te zien krijgt en daarna 3 keer een getal. Dit ga je ook zelf doen, maar zorg dat er drie verschillende getallen en drie verschillende teksten worden gepost. Je mag echter alleen variables gebruiken om dit te doen. Pauzeer de video en ga maar eens experimenteren met verschillende getallen en teksten. Denk wel aan wanneer je wel of niet aanhalingstekens moet gebruiken.

Interactie met de Minecraft wereld met variables

Tot nu toe is er nog geen interactie geweest met de Minecraft wereld naast berichten in de chat plaatsen, maar zoals te zien was in de trailer, is er nog veel meer mogelijk. Er is in de Minecraft wereld heel veel informatie beschikbaar dat in variables kan worden opgeslagen. Om te beginnen zijn er coordinaten van de speler. In Minecraft zijn er 3 coordinaten: x, y en z.

De x-coordinaat zegt hoe ver je naar oost of naar west bent gegaan. Hogere getallen betekenen dat je verder naar het oosten bent en lagere verder naar het westen.

De z-coordinaat zegt hoe ver je naar het noorden of naar het zuiden bent gegaan. Hogere getallen betekenen dat je verder naar het zuiden bent en lagere getallen verder naar het noorden.

De y-coordinaat zegt hoe ver je naar boven of achter bent gegaan.  Hogere getallen betekenen verder naar boven en lagere getallen verder naar beneden.

python_coordinaten

 

In de video wordt uitgelegd hoe je een programma schrijft waarmee je de coordinaten van je poppetje kunt meten en in de Minecraft chat kunt plaatsen.

Video_5_coordinaten

Maak eerst een nieuw bestand aan en sla hem in de MyAdventures map op als lesbrief_2_coordinaten.Typ de twee standaardregels:

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

Vervolgens gaan we de drie coordinaten in één variable opslaan. Hiervoor is ook een statement (mc.player.getTilePos() ) die we gaan gebruiken. Deze statement kijkt wat de x,y,z coordinaten zijn en slaat die allemaal op als één variable. Dit kun je zien als een bakje waarin je drie verschillend gekleurde balletjes legt. Het bakje is de variable en de balletjes zijn de x,y en z coordinaten.

We noemen onze variable: plaats. Hierdoor heb je het volgende script staan:

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

plaats=mc.playergetTilePos()

Vervolgens willen we zorgen dat de drie coordinaten worden opgevraagd door de computer. Het probleem is echter dat de computer niet van tevoren weet of wij de x, y of z coordinaat willen opvragen als we simpelweg zeggen:  mc.postToChat(plaats). Dit is ook hier in de video te zien als we dat proberen. Om te specifieeren welke coordinaat wij nou bedoelen, wordt er .z, .x, of .y achter gezet. Dit levert het volgende script op:

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

plaats=mc.playergetTilePos()

mc.postToChat(plaats.x)

mc.postToChat(plaats.z)

mc.postToChat(plaats.y)

Als je nu op F5 drukt, dan zie je ook dat de drie coordinaten worden geplaatst.

Sla je script op en ga nog de quiz maken. Daarna kun je verder met de volgende lesbrief. 

In deze les heb je geleerd: 

  • Wat een variable is.
  • Hoe je een waarde opslaat in een variable.
  • Hoe je waardes uit Minecraft opslaat als variable.
  • Hoe je je coordinaten kunt bepalen met een programmatje.

 

Categorieën: Python