Python in Minecraft  

Programmeren 2: Variabelen



In het vorige hoofdstuk Programmeren 1: Hallo wereld!, hebben we onze eerste code uitgevoerd. We gaan nu aan de slag met een belangrijk deel van programmeren: variabelen.



Voordat we verder gaan, zou je dit moeten kunnen:




De volgende stappen worden doorlopen:




Vanaf nu gaan wat vaker onze Python-code aanpassen. Daarom heb ik een tip om je nieuwe code snel te kunnen testen in Minecraft

💡    Python-code testen in Minecraft
Je kan Minecraft in een window spelen. Hierdoor kan je snel wisselen tussen je Python-code en Minecraft.

Ga naar je Grafische instellingen en zet

Druk op esc om je muis uit het Minecraft-window te halen.

Pas je Python-code aan, sla de nieuwe code op en voer het uit in Minecraft.






Stap 1: Wat is een variabele?





Het woord variabel betekent wisselend of veranderend. In programmeertalen werken we niet zozeer met getallen, maar met variabelen.

Als we in onze code het getal 5 zouden gebruiken, dan is dat een 5 en blijft ook altijd een 5.
We kunnen de letter x gebruiken als variabele. Vervolgens kunnen we een getal in de x stoppen.

We kunnen zeggen

x = 5

Dan kunnen we de x gebruiken als 5.
Maar als we later in onze code zeggen

x = 7

Dan is de x vanaf nu 7.



Een variabele kunnen we dus aanpassen. Hierdoor kunnen we ook rekenen met variabelen.
x = 2 + 3
x = 7 - 2
x = 1 * 5
x = 10 / 2
x wordt elke keer hetzelfde getal. Weet jij welk getal dat is?
Helaas, dat is niet goed.
Ja! Goed! x wordt alle gevallen het getal 5!
2 + 3 = 5
7 - 2 = 5
1 * 5 = 5
10 / 2 = 5
Helaas, dat is niet goed.


We kunnen ook rekenen met meerdere variabelen.
from mine import *
mc = Minecraft()

x = 5
y = 7
z = x + y mc.postToChat(z)
Weet jij welk getal in de chat verchijnt?
Helaas, x is 5 maar z is een ander getal.
Helaas, y is 7 maar z is een ander getal.
Ja, dat is correct! z is x + y. Dus z is eigenlijk 5 + 7. Dat is inderdaad 12!
Helaas, dat is niet goed.


We kunnen ook rekenen met één variabele.
from mine import *
mc = Minecraft()

a = 5
a = a + 2 mc.postToChat(a)
Welk getal verschijnt er in de chat?
Helaas, dat is niet goed.
Helaas, dat is niet goed.
Helaas, dat is niet goed.
Helemaal goed! a is eerst 5. Daarna staat er dus eigenlijk a = 5 + 2. Dat is inderdaad 7.


Het is niet altijd even duidelijk wat er wordt bedoeld met x of a. Hierom is het vaak handiger om een variabele een goede naam te geven.



De speler in Minecraft is 2 blokjes lang. Zo past hij precies door een deur.


We kunnen bijvoorbeeld de lengte van de speler opslaan in een variabele. Deze geven we de naam lengte.

lengte = 2

We kunnen dus ook woorden gebruiken als variabelen.







Stap 2: De positie van de speler in Minecraft





Straks gaan we ons allereerste blokje bouwen in Minecraft met Python. Hiervoor moeten we eerdt de positie van de speler weten. De wereld van Minecraft is namelijk veel te groot om zomaar ergens een blokje neer te zetten. Dat blokje vinden we dan nooit meer terug. Daarom gaan we dat blokje boven de speler plaatsen.



Nu wordt het een beetje ingewikkeld. De wereld van Minecraft is namelijk 3 dimensionaal. Dat betekent dat we net als in onze wereld 3 kanten op kunnen bewegen:

  1. We kunnen van het noorden naar het zuiden. Dit doen we als op vakantie gaan naar Frankrijk.
  2. We kunnen van het oosten naar het westen. Bijvoorbeeld als we naar het strand gaan.
  3. En we kunnen omhoog. Dit doen we wanneer we in een boom klimmen



Onze wereld is 3 dimensionaal.


Minecraft is ook 3 dimensionaal.


In een 3 dimensionale game zoals Minecraft noemen we deze 3 dimensies: x, y en z.
  1. Van het oosten naar het westen noemen x
  2. Omhoog en omlaag noemen we y
  3. En van het noorden naar het zuiden noemen we z


In Python kunnen we de positie van de speler ophalen met deze code:

from mine import *
mc = Minecraft()

positie = mc.player.getPos()

Weet je nog wat de eerste twee regels doen?

from mine import *
Hierdoor importeert Python alle code uit mine. Dat is nodig, want in mine staat de code waarmee Minecraft aangepast kan worden.


mc = Minecraft()
Hierdoor kunnen we via mc informatie uitwisselen met Minecraft.


Met de laaste regel code verkrijgen we via mc de positie van de speler. Dat gaat zo:

positie = mc.player.getPos()
mc.player.getPos() doet ongeveer dit:
  • Met mc wisselen we informatie uit met Minecraft
  • Met .player halen we informatie op over de speler (player is het Engelse woord voor speler)
  • En .getPos() betekent iets als haal positie (get betekent haal en met Pos wordt de positie bedoeld)
Met deze code halen we dus de positie op van de speler in Minecraft.


We hebben nu de positie van de speler in een variabele gestopt met de naam positie. Maar we hebben net geleerd dat een positie uit 3 variabelen bestaat. Namelijke x, y en z. Hoe kunnen x, y en z dan in 1 variabele passen?
Dat werkt zo:

De positie heeft eigenlijk 3 variabelen. Dit zijn:

  1. positie.x
  2. positie.y
  3. positie.z



In Minecraft kunnen we een groot kompas bouwen zodat dit allemaal hopelijk wat duidelijker wordt.
  • Als we langs de rode lijn bewegen verandert x
  • Als we springen of een gat graven verandert y
  • Als we langs de blauwe lijn bewegen verandert z




Net als in onze wereld komt ook in Minecraft de zon op in het oosten.
Je kan de zon laten opkomen door de tijd in Minecraft op 0 te zetten. Dat gaat zo:

Druk op de toets / en type:

/time set 0

en druk op enter


We kunnen nu in Python de positie van de speler ophalen uit Minecraft. Zullen we dan nu een blokje boven zijn hoofd plaatsen?







Stap 3: Blok boven je hoofd




In Python kan je met deze code een blok plaatsen in Minecraft:

from mine import *
mc = Minecraft()

mc.setBlock(x, y, z, blok)
De regel code werkt zo:
  • mc gebruiken we ook nu weer om te communiceren met Minecraft
  • .setBlock betekent iets als plaats blok

Tussen de haakjes staat (x, y, z, blok). Deze vier variabelen kunnen we gebruiken om aan te geven waar we het blok willen plaatsen en welk blok dit precies moet zijn.
  • x is de x-positie van het blok (oost-west)
  • y geeft aan hoe hoog we het blok willen plaatsen
  • z is de z-positie van het blok (noord-zuid)
  • blok gebruiken we om aan te geven welk blok we willen plaasten

Let op! Deze code werkt nog niet want de variabelen x, y, z en blok zijn nog leeg. We moeten iets in deze variabelen stoppen zodat Minecraft snapt wat we precies willen.

Inmiddels zijn we wel een beetje bekend met x, y en z. Hier kunnen we positie van de speler gebruiken. Dan ziet de code er zo uit.

from mine import *
mc = Minecraft()

positie = mc.player.getPos()
x = positie.x
y = positie.y
z = positie.z

mc.setBlock(x, y, z, blok)
Nu hebben we de variabelen x, y en z gevuld met de positie van de speler. Nu weet Minecraft waar we het blok willen plaatsen.

Maar let op! Deze code werkt nog steeds niet omdat we ook nog moeten uitleggen welk blok we precies willen neerzetten.


We weten nog niet hoe we de variabele blok moeten gebruiken. Maar dat is best makkelijk. In het voorbeeld hieronder geven we aan dat we een stenen blok willen.

blok = block.STONE
Met deze regel code vullen we de variabele blok met een stenen blok.

Minecraft heeft heel veel verschillende blokken. Deze blokken kunnen we vinden met het Engelse woord block. Het woord na de punt geeft aan welk blok we precies willen. STONE is het Engelse woord voor steen. Hiermee maken we dus een stenen blok. Dat is dit blok:


Hier onder zie je nog wat andere voorbeelden. Kies er maar één uit.

BlokCodeNederlands
block.STONEstenen blok
block.GRASSblok met gras
block.DIRTblok van aarde
block.WOODhouten blok
block.WOOLblok van wol


from mine import *
mc = Minecraft()

positie = mc.player.getPos()
x = positie.x
y = positie.y
z = positie.z

blok = block.STONE

mc.setBlock(x, y, z, blok)
We hebben nu de variabelen x, y en z gevuld met de positie van de speler. Hierdoor weet Minecraft dat we dit blokje op de plek van de speler willen plaatsen. De variabele blok hebben we gevuld met block.STONE. Hierdoor weet Minecraft dat we een stenen blok willen plaatsen.

Sla deze code op in een bestand met de naam eersteblok.py en probeer het uit in Minecraft.


Druk op de toets / en type:

/py eersteblok
en druk op enter


Wanneer je de code uitvoert duwt het blok de speler opzij. Dit komt doordat we het blok op de positie van de speler plaatsen. Om dit voorkomen gaan we het blokje nu boven het hoofd van de speler plaatsen. Weet je nog hoe lang de speler is in Minecraft?



lengte = 2
De lengte van de speler is 2 blokken. Dit kunnnen we opslaan in een variabele.


Bij welke variabele moeten we de lengte optellen om het blok boven de speler te plaatsen?
Helaas, dat is niet goed. Als de we lengte optellen bij x dan zetten we het blok naast de speler
Ja! Goed! y geeft aan hoe hoog het blokje wordt geplaatst. Door hier de lengte van de speler bij op te tellen plaasten we het blok boven de speler.
Helaas, dat is niet goed. Als de we lengte optellen bij x dan zetten we het blok naast de speler


Had je de vraag goed? Dan kunnen we nu onze Python-code aanpassen.



from mine import *
mc = Minecraft()

lengte = 2
positie = mc.player.getPos()
x = positie.x
y = positie.y + lengte
z = positie.z

blok = block.STONE

mc.setBlock(x, y, z, blok)
We geven aan de dat de lengte van de speler 2 blokken is. Dit tellen we op bij y om het blok boven de speler te plaatsen.


Sla je aangespaste code op of download het Python-bestand hier:

  eersteblok.py  


We gaan nu onze nieuwe Python-code uitvoeren.
Druk op de toets / en type:

/py eersteblok
en druk op enter


Nu wordt het blokje boven het hoof van de speler geplaatst! We weten nu hoe we met Python-code een blok moeten plaatsen in Minecraft. We kunnen verder met het hoofdstuk Programmeren 3. Klik rechtsboven op