Introductie

<standaardtekst van Python, IDLE en Python shell bouwen.

In deze lesbrief gaan we je leren om structuren te bouwen in Python. Dit is een langere lesbrief en bestaat uit twee onderdelen. In het eerste onderdeel leren we je de laatste twee belangrijke vaardigheden om eindelijk te kunnen gaan bouwen. Heb dus nog een beetje geduld en dan kunnen we aan de slag.

4.1 De for-loop en arrays.

In de vorige lesbrief hebben we je geleerd wat een while-loop is. Hoewel de while-loop handig is en je er ook nog eens infinite-loops mee kunt maken, heeft het als nadeel dat het langer opgeschreven staat. Daarnaast moet je ook voor elke loop een nieuwe variable maken.  Dit levert dus al snel lange, chaotische scripts op. Gelukkig heeft Python een andere loop: de for-loop. De for-loop heeft twee grote voordelen: je schrijft hem korter op en je hoeft niet van de voren een variable in te stellen om  bij op te tellen. Het enige nadeel is wel dat je er geen infinite loops mee kunt maken.

Video_8_for-loops

Maak een nieuw bestand aan en sla hem op in MyAdventures onder de naam: lesbrief_4_for-loop. Typ vervolgens de twee standaardzinnen:

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

Vervolgens gaan we een for-loop er in brengen om een tekst 5 keer in de chat te zetten.

Typ onder de twee beginregels de volgende tekst:

for x in range(0, 5):

mc.postToChat(“De for loop werkt”)

Als je nu op F5 drukt, dan zal hij 5 keer de tekst in de Minecraft Chat posten. En nu de uitleg van de loop. Net als bij de while-loop moet wat er in de loop moet gebeuren ingesprongen staan. Het eerste wat opvalt is dat er in het script helemaal geen variable staat boven de loop en er in de loop zelf ook niet een verhoging plaatsvindt van een variable bij het ingesprongen deel. Dit heeft te maken met de for-loop bovenaan. For is het eerste stuk van de loop en staat er standaard bij. Vervolgens maak je zelf een variable aan die bepaalt hoe lang de loop door moet gaan. Dit is altijd een letter. In dit geval noemen we hem x, maar als je a invult zou die het ook doen. Pauzeer de video en probeer dit maar eens uit. Vervolgens zeg je in range met twee getallen tussen haakjes. Het is het handigst om bijv. 0,5 in te voeren, want dan voert die de loop ook 5 keer uit. Let wel erbij op dat het eerste getal 0 is en het laatste getal 4. Vijf is dus eigenlijk de grens waarbij hij niet meer loopt. Hier zie ook meteen waarom het onmogelijk is om een infinite loop te maken met een for-loop, omdat je altijd een getal moet invoeren. Je zou een soort infinite loop kunnen maken met een heel hoog getal, maar het is dan handiger om een while loop te gebruiken. Sla hem nu op.

Probeer nu zelf een paar for-loops te maken om eerst 3 keer je naam, dan 3 keer je woonplaats en dan 3 keer je schoolnaam te maken. Pauzeer de video nu even. Gelukt? Zo niet, dan is hier de uitleg (**uitleg geven**).

Nu je allebei de loops hebt geleerd gaan we nog één keer samenvatten wanneer je welke loop gaat gebruiken.

getal=getal+1

 

python_loops_guide

 

Arrays

Tot nu toe hebben we alle variables een andere naam gegeven wanneer we ze een naam gaven. Zo hadden we een variable die bijv. getal, naam, woord, etc. heette. Dit is meestal wel prima, maar later in de lessen gaan we willekeurig variables kiezen.  Python kan echter alleen cijfers willekeurig kiezen. Nu zul je waarschijnlijk doorhebben dat hier een probleem ontstaat wanneer je variables uit alleen maar letters bestaan. Ook werkt het niet om ergens een cijfer tussen te pleuren. Gelukkig heeft Python een andere manier om variables op te slaan: arrays. Arrays werken als volgt, door de naam van een variable neer te zetten, met daarachter een getal in vierkante haakjes. Zo kun je als volgt vijf verschillende teksten opschrijven:

hallo[0]=”hallo”

hallo[1]=”hallo mensen”

hallo[2]=”hoihoi”

Dit zijn nog steeds drie verschillende variables, maar doordat ze een getal tussen vierkante haakjes hebben staan, kun je ze willekeurig oproepen. We noemen de verschillende variables in één rij een array. Daarnaast kun je ook met een for-loop verschillende teksten laten zien. Dit gaan we in de volgende video ook aantonen.

 

Video_9_arrays

Maak een nieuw bestand en sla die op in MyAdventures met de naam lesbrief_4_arrays. Typ de twee standaard regels en typ daaronder de volgende array:

lesbrief[0]=”In”

lesbrief[1]=”deze”

lesbrief[2]=”video”

lesbrief[3]=”leer”

lesbrief[4]=”je”

lesbrief[5]=”hoe”

lesbrief[6]=”je”

lesbrief[7]=”een”

lesbrief[8]=”array”

lesbrief[9]=”maakt”

 

Vervolgens gaan we de tekst in de array onder elkaar in de Minecraft Chat plaatsen. Dit doen we met een for-loop. Deze loop gaat er als volgt uitzien:

 

for i in range (0,10)

mc.postToChat(lesbrief[i])

 

Je zou dus het volgende script moeten hebben:

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

 

lesbrief[0]=”In”

lesbrief[1]=”deze”

lesbrief[2]=”video”

lesbrief[3]=”leer”

lesbrief[4]=”je”

lesbrief[5]=”hoe”

lesbrief[6]=”je”

lesbrief[7]=”een”

lesbrief[8]=”array”

lesbrief[9]=”maakt”

 

for i in range (0,10)

mc.postToChat(lesbrief[i])

Druk op F5 en als alles goed werkt, staat deze tekst nu onder elkaar in de Minecraft Chat. In dit script zie je waarom arrays nuttig zijn. In de loop krijgt i telkens een waarde. i begint op 0 en loopt t/m 9. Dit komt omdat de 10 in de range betekent dat je tot 10 gaat en niet t/m 10. i is op het begin 0, dus in de mc.postToChat(lesbrief[i]) staat eigenlijk mc.postToChat(lesbrief[0]). Vervolgens gaat de loop één rondje verder en krijg je dus: mc.postToChat(lesbrief[1], omdat i vervolgens 1 is. Dit gaat door tot i gelijk is aan 9 waarna het laatste woord in de array wordt gepost. Met de for-loop is het ook mogelijk om slechts stukjes van de array in de chat te plaatsen. Sla nu het script op. Vervang in het script

for i in range (0,10)

door:

for i in range (2,5)

 

En druk op F5. Hierdoor ontstaat de tekst: video leer je. Je ziet ook dat je één waarde boven het laatste getal in je array moet zitten om zoiets voor elkaar te krijgen. Experimenteer nog wat met verschillende teksten en arrays, maar sla het script bij het afsluiten niet op. Vooralsnog heb je genoeg kennis van arrays om verder te gaan naar het deel waar dingen worden gebouwd.

Lesbrief 4.2

In deze les gaan we leren hoe we blokken in de minecraft wereld kunnen plaatsen.

Om dat te doen moeten we een nieuw python bestandje maken, dus ga naar file, klik op nieuw file, klik opnieuw of file en klik op save as en noem het blok.

Begin met de standard twee regels:

import mcpi.minecraft as minecraft
mc = minecraft.Minecraft.create()

we willen een blok naast ons plaatsen, dus we moeten uitvinden wat onze coördinaten zijn:

pos = mc.player.get TilePos()

Nu staan de onze coördinaten in het variable: pos

We gebruiken het volgende commando om een blok te plaatsen in minecraft:

mc.setBlock(“x positie”,”y positie”, “z positive”,”block id”)

alle block ids zijn te vinden op het internet, voor de minecraft versie die wij gebruiken kun je de volgende link gebruiken: http://www.minecraftxl.com/data-values/

we gaan nu een stenen blok, met blok id 1, 3 plaatsen van ons vandaan plaatsen, daarvoor gebruiken wij het volgende commando:

mc.setBlock(pos.x+3,pos.y,pos.z,1)

het stenen blok zal 3 x plaatsen van ons af staan en verder op de zelfde y en z plaats staan.

 

We kunnen ook for loops gebruiken om snel meer blokken te plaatsen zonder iedere het commando mc.setBlock opnieuw in te typen met verschillende coördinaten.

We maken weer een nieuw bestand en we noemen het toren, dus: File à New File en dan File à Save As.

We beginnen weer met de standaard regels:

import mcpi.minecraft as minecraft
mc = minecraft.Minecraft.create()

en vinden weer de coördinaten uit van de speler:

pos = mc.player.get TilePos()

nu gaan we een for loop schrijven, met a als variabel:

for a in range(20):

a zal nu beginnen op 0 en iedere keer 1 omhoog gaan, dus als we a bij de y positie van het blok optellen zal het blok iedere keer een blok hoger geplaatst worden, totdat de toren 20 blokjes hoog is.

Dus om ieder blokjes te plaatsen zetten we:

mc.setBlock(pos.x+3,pos.y+a,pos.z,1)

in de for loop. A wordt bij de y positive opgeteld en daardoor wordt ieder blokje dus hoger geplaatst.

We kunnen naast de hoogte ook nog de breedte aan passen met een for loop. Dit kunnen we doen door een for loop in een for loop te plaatsen. Ik zal eerste even uitleggen hoe dat werkt met een voorbeeld:

for a in range(3):
for b in range(5):
mc.postToChat(str(a)+”,”+str(b))

door deze foor loop zal er dit in de chat worden getypt:

0,0
0,1
0,2
0,3
0,4
1,0
1,1
1,2
1,3
1,4
2,0
2,1
2,2
2,3
2,4

Dus zoals je ziet wordt voor iedere ronde van de eerste for loop de tweede for loop helemaal doorgelopen.

Dit kunnen we nu gebruiken om een muur te bouwen met een for loop die een lange lijn blokjes bouwt en een for loop die meerdere van die lijnen op elkaar zet.

Maak weer een nieuw bestandje aan genaamd muur (tom laat zien hoe je dit doet ik zoek het niet te typen)

Begin met de standaard regels:

import mcpi.minecraft as minecraft
mc = minecraft.Minecraft.create()

en we ook weer de coördinaten van de speler nodig:

pos = mc.player.get TilePos()

Nu maken we eerst een for loop die de hoogte gaat bepalen, we maken de muur 10 blokjes hoog dus:

for a in range(10):

de for loop die daar in komt te staan zorgt voor de breedte, dit wordt 40:

for b in range(40):

nu plaatsen we een blok:

mc.setBlock(pos.x+3,pos.y+a,pos.z+b,4)

dus in de 2e for loop worden 40 blokjes naast elkaar geplaatst doordat de z coördinaat iedere keer 1 verder ligt. Als dat gedaan is dan begint er weer een nieuwe ronde in de eerste for loop en wordt a weer 1 omhoog gezet, de hoogte wordt dan dus 1 hoger en na 10 rondes is er een muur gecreëerd van 10 hoog en 40 breed. De block id is deze keer 4 in plaats van 1, dat betekent dat we cobblestone plaatsen.

We zouden ook een muur van twee dik kunnen bouwen door een extra mc.setBlock in de tweede for loop te plaatsen met in plaats van pos.x+3, pos.x+4, of we zouden een gang kunnen maken door pos.x+6 in te voeren in plaats van pos.x+4.

In deze lesbrief heb je geleerd:

  • Wat een for-loop is en hoe je die kunt gebruiken.
  • Wat een array is.
  • Hoe je een array en een for-loop kunt combineren om verschillende variables uit een array te posten.
  • Hoe je een blok in Minecraft zet.
  • Hoe je een ander soort blok neerzet, bijv. lucht of water.
Categorieën: Python