A Raspberry Pi 2 meglepően képes eszköz, tekintve annak 30 font alatti árát. Jön egy előre telepített Minecraft verzió, valamint egy API, amely lehetővé teszi a virtuális világban futtatható kód írását. Ezt Pythonban teszi, amit egyszerűen megtanulhat. A Pi, a Python és a Minecraft kombinációja nagyszerű lehetőséget kínál a programozás lehetőségeinek feltárására. És az az izgalom, hogy egy ház virtuális tájon építkezik, nemcsak a gyerekeknek szól.
hogyan lehet letiltani a megjegyzéseket a facebook idővonalán
Szkriptek a Minecraftban
A Minecraft egy nyílt homokozós játék, amelynek nincs követendő cselekményvonala. Néha virtuális Lego-ként írják le, mivel a játékos bármilyen struktúrát felépíthet a rendelkezésére álló blokkok felhasználásával. A Raspberry Pi-hez mellékelt verzió korlátozott funkcióval rendelkezik, amely megfelel az oktatási szerepének - így nem kell aggódnia például a zombik üldözése miatt. A világgal való interakcióhoz nincs szükség különösebb beállításra, csak a Raspbian operációs rendszer legújabb verziója és egy programozási környezet. A Geany mellett döntök, amelyet telepíthet az LXTerminal megnyitásával és a gépeléssel:
sudo apt-get install geany
Kezdjük azzal, hogy létrehozunk egy forgatókönyvet, amellyel házat lehet építeni a lejátszó elé - de ahelyett, hogy csak a helyére csapnánk, inkább animáljuk. Különféle konfigurálható beállításokat is építünk, amelyek lehetővé teszik a lejátszó számára, hogy különböző méretekkel és anyagokkal kísérletezzen. Ezáltal a program is moduláris lesz, így a kifinomultabb kutak létrehozásának alapjául szolgálhat.
A kód működése érdekében töltse be a Geany-ba, majd indítsa el a Minecraft-ot, és hozzon létre egy új világot. Nyomja meg a Tab billentyűt a kurzor felszabadításához a Minecraft ablakból, majd kattintson a fogaskerék ikonra a Geany-ban (vagy nyomja meg az F5 billentyűt) a parancsfájl elindításához. Látnia kell, hogy egy ház varázslatosan összeáll. Ha nem, próbálja meg megfordulni - lehet, hogy mögötted van! Láthatja a szkriptet működés közben itt . Tehát hogyan működik a forgatókönyv? Nos, először megnyit egy linket a Minecraft-ra:
import mcpi.minecraft mint minecraft, idő mc = minecraft.Minecraft.create ()
A Pythonban fontos figyelni a behúzásra, mivel a kód így oszlik blokkokra. Ebben az esetben mindkét sor egybeesik a bal oldali margóval: az első sor a Minecraft és a Time könyvtárakat importálja, a második pedig egy Minecraft objektumot hoz létre, amelyet végig használhatunk. A következő 25 sor néhány változót állít be azokhoz a blokkokhoz, amelyeket használni fogunk, így mondhatjuk őket például mondjuk wood_planks-ként, nem pedig blokk-azonosítójuk alapján (ebben az esetben 5). Ezután jelezzük, hogy ezek közül a blokkok közül melyiket használják a falakhoz, melyiket a tetőhöz és így tovább. Könnyen megváltoztathatjuk a ház felépítését teljesen, ha például téglafalakat cserélünk macskakőre. Végül beállítottuk a kívánt lakás szélességét, hosszát és magasságát.
Most a mecplayer.getTilePos () nevű Minecraft függvényt hívjuk a játékos fekvő helyének megkeresésére, majd a visszatérő értékeket felhasználva két változót hozunk létre, balra és lent, hogy leírjuk, hol lesz a lakás első sarka .
Ezt követően a szkript felépítése megfelel a ház manuális építésének Minecraft folyamatának. Kezdjük egy szabad terület megtisztításával, hogy ha a játékos úgy dönt, hogy a házat építi, mondjuk egy hegyen belül, akkor a lakóterület nem lesz szilárd kő. Itt van a kódblokk - a Python funkciója -, amely ezt teszi:
def clear_house (nukleáris):
ha nukleáris == Igaz:
blast_zone = 20
más:
blast_zone = 0
mc.setBlocks (left-blast_zone, player_
föld, alsó + robbanás_ zóna, bal + szélesség + robbanás_
zóna, játékos_tér + magasság + robbanás_
zóna + 10, alsó-robbanás_ zóna, légblokk)
Amikor a clear_house-t hívjuk, beírjuk a nukleáris paramétert. Ennek értéke Igaz vagy Hamis. Megpróbálhatja True-val hívni, hogy nagyobb mennyiséget töröljön a célterületről, vagy Hamis-val hívhatja meg, hogy a távolságot a ház belső méreteire korlátozza. A Minecraftban az mc.setBlocks függvény segítségével blokkokból álló kockát hozhatunk létre azzal, hogy átadjuk a szemközti sarkok koordinátáit három dimenzióban, majd a használni kívánt blokkotípust. Ebben az esetben egy helyet szabadítunk fel, ezért levegőt használunk.
Miután megtisztítottuk a teret, itt az ideje, hogy folytassuk az építkezést. Ezen építési szakaszok mindegyike a maga funkciójában zajlik. A szkript végén meglátja a main () nevű függvényt, amely úgy vezérli a program folyamatát, hogy az építés minden fázisát egymás után hívja meg. Ha értelmesen megnevezzük a függvényeinket, és meghívjuk őket a main () -ból, könnyen megérthetjük, mit csinál a program:
def main ():
clear_house (hamis)
start_pos = [bal, alsó, játékos_
talaj]
build_floor (start_pos)
tanfolyam = build_falak (kezdő_pozíciók)
add_door (door_position)
time.sleep (késés * 10)
build_roof (start_pos, tanfolyam)
A következő (main) függvény meghívja a padlót - ez mc-t használ. A setBlocks ismét megalapozza az alapot (a művészi hatás érdekében), majd adjon hozzá egy kockát egy tömb mélységű padlólapból, hogy szilárd padlót hozzon létre a házunkban.
hogyan lehet forgatatlan hamachi szervert készíteni
A falak építése
A build_walls függvény a program középpontjában áll. A ház burkolatának létrehozásának leghatékonyabb módja az lenne, ha lecsap egy szilárd kockát a téglából, majd a clear_house segítségével faragja a belső teret. Azt akarjuk azonban, hogy a ház építse fel önmagát, ezért egyenként, egymás után kell elhelyeznünk a tömböket. Itt található a falépítési kód egyszerűsített változata:
def build_course (start_pos, irány,
tanfolyam):
blokkok = 1
current_horiz = start_pos [0]
current_vert = start_pos [1]
ha irány == felfelé vagy
irány == lefelé:
Blokkok száma = hossz
más:
blokkok száma = szélesség
míg blokkol mc.setBlock (current_horiz, player_
föld + pálya, jelenlegi_fordítás, fali blokk)
ha irány == fel:
current_vert- = 1
elif irány == lefelé:
current_vert + = 1
elif irány == jobbra:
current_horiz + = 1
más:
current_horiz- = 1
blokk = blokk + 1 # a következő blokkra lép
time.sleep (késés)
Kezdjük azzal, hogy eltároljuk a kiindulási helyzetet - ez lesz az utolsó blokk pozíciója az előző blokkok menetéből. Ezután megadjuk, hogy hány blokkot kell fektetni, attól függően, hogy az épület hossza vagy szélessége mentén haladunk-e.
Az építési szakasz a while blokkban található - ez addig folytatódik, amíg az összes blokkot le nem raktuk. Az mc.setBlock egyetlen blokkot helyez el a bemutatott koordinátákon, majd növeli az egyik koordinátát attól függően, hogy milyen irányba fektetünk. Ennek eredményeként a tömböket egy fal mentén fektetik le, mielőtt sarkon fordulnának, és téglalapban folytatnák a pálya befejezéséig.
a vizio tv kikapcsol, és nem szokott újra bekapcsolni
A kód végleges verziója kicsit jobban érintett, ablakokat ad hozzá minden falhoz. Az ablakok dinamikusan vannak méretezve úgy, hogy a fal fele felé esnek, és középre állnak. Az ajtó helyzetét is rögzíti; a falak megépítése után kerül hozzá. A pályákat a build_walls függvény vezérli, amely megismétli a build_course függvényt minden blokkfolyamon, amíg el nem éri a végső magasságot.
Megpróbálhatja akár az óceánban vagy a levegőben is felépíteni a házát - ezt úgy teheti meg, hogy kétszer megnyomja a szóközt, hogy repüljön, majd nyomja meg újra, hogy felemelje magát a forgatókönyv futtatása előtt. Módosítsa a wall_block és roof_block változót, hogy lássa, mi történik, ha a falakat vagy a tetőt aranyból vagy valóban lávából készíti. Hozzáadhatja saját blokkjait a teljes lista megtekintésével itt , és hozzáadja a társított változót a szkripthez. A nagyobb kihívásokkal járó módosítások tartalmazhatnak több emelet hozzáadását a szerkezethez, ha a magasságváltozó elég nagy értékre van állítva. Kidolgozza például, hogyan adhatunk tornyokat, és megkapja a Minecraft kastély adottságait.
Lehet, hogy ezek a trükkök triviálisnak tűnnek, de már több mint 20 éve programozom szakmailag, és még mindig izgalmat kapok, amikor a kódrészlet a szándék szerint működik. Ha még soha nem programoztál korábban, remélem, hogy megadod - és ha van egy Minecraft rajongó a háztartásban, azt javaslom, engedje el őket a kódon, és nézze meg, hová viszi őket. A Minecraft Pi-erőforrásokra mutató linkeket itt találja kevpartner.co.uk/programozás .