Chciałbym nauczyć dzieciaki podstaw programowania. Długo zastanawiałem się jak to zrobić i po przemyśleniach postanowiłem spróbować pythonowego mcpi, bo maluchy od kilku lat budują co popadnie w Minecraft na Androidzie. Uruchomiłem spigot, zainstalowałem RaspberryJuce i Geyser… I sam wsiąkłem na kilka wieczorów ;).
from mcpi import minecraft import mcpi.block as block import minecraftstuff import time from threading import Thread import sys from pathlib import Path mc = minecraft.Minecraft.create() if not (Path(".house_coordinates.txt").is_file()): print("Zbuduj najpierw dom za pomocą house.py") sys.exit() else: f = open(".house_coordinates.txt", "r") x,y,z = f.readline().split(',') f.close() housePos = minecraft.Vec3(int(x),int(y),int(z)) blocksPos = [ (0,0,0), (-1,0,0), (-2,0,0), (0,1,0), (-1,1,0), (-2,1,0), (0,2,0), (-1,2,0), (-2,2,0), (0,3,0), (-1,3,0), (-2,3,0) ] doorsPos = housePos + minecraft.Vec3(6,0,0) doorsBlocks = [minecraftstuff.ShapeBlock(x,y,z,block.WOOD_PLANKS.id) for [x,y,z] in blocksPos] doorShape = minecraftstuff.MinecraftShape(mc, doorsPos, doorsBlocks) def openDoor(): while True: pos = mc.player.getTilePos() if pos.x in range(doorsPos.x-3, doorsPos.x+1) and abs(pos.y-doorsPos.y)<2 and abs(pos.z-doorsPos.z)<2: doorShape.moveBy(0, -4, 0) time.sleep(5) doorShape.moveBy(0, 4, 0) Thread(target=openDoor).start()
from mcpi import minecraft from pathlib import Path mc = minecraft.Minecraft.create() if not (Path(".house_coordinates.txt").is_file()): housePos = mc.player.getTilePos()+minecraft.Vec3(0,0,10) f = open(".house_coordinates.txt", "w") f.write("{},{},{}".format(housePos.x, housePos.y, housePos.z)) f.close() else: f = open(".house_coordinates.txt", "r") x,y,z = f.readline().split(',') f.close() housePos = minecraft.Vec3(int(x),int(y),int(z)) mc.setBlocks(housePos.x+0, housePos.y+0, housePos.z+0, housePos.x+10, housePos.y+10, housePos.z+10, 17) mc.setBlocks(housePos.x+1, housePos.y+1, housePos.z+1, housePos.x+9, housePos.y+9, housePos.z+9, 0) mc.setBlocks(housePos.x+4, housePos.y, housePos.z, housePos.x+6, housePos.y+3, housePos.z, 0) mc.setBlocks(housePos.x+1, housePos.y+5, housePos.z, housePos.x+2, housePos.y+6, housePos.z, 0) mc.setBlocks(housePos.x+8, housePos.y+5, housePos.z, housePos.x+9, housePos.y+6, housePos.z, 0)
Pobudujemy z pętli, pokażę młodemu minecraftstuff, kształty i obiekty 3d i myślę, że mu się spodoba. A poniższe, to drzwi na fotokomórkę. Wystarczy podejść ;).
