Raspberry Pi 2 je překvapivě schopné zařízení, vzhledem k ceně pod 30 GBP. Dodává se s předinstalovanou verzí Minecraftu spolu s API, které vám umožní psát kód pro spuštění ve virtuálním světě. Děláte to v Pythonu, který se snadno naučíte. Kombinace Pi, Pythonu a Minecraftu poskytuje skvělou příležitost začít zkoumat možnosti programování. A vzrušení z toho, že se dům staví na virtuální krajině, není jen pro děti.
co je to hvězda na snapchatu
Skriptování v Minecraftu
Minecraft je otevřená sandboxová hra, která nemá dějovou linii. Někdy se to označuje jako virtuální Lego, protože hráč může pomocí bloků, které má k dispozici, vybudovat jakýkoli druh struktury. Verze dodávaná s Raspberry Pi má omezenou sadu funkcí vhodných pro její vzdělávací roli - takže se nemusíte bát, že vás budou honit například zombie. Interakce s tímto světem nevyžaduje žádné speciální nastavení, pouze nedávné sestavení operačního systému Raspbian plus programovací prostředí. Rozhodl bych se pro Geany, který si můžete nainstalovat otevřením LXTerminal a zadáním:
sudo apt-get install geany
Začněme vytvořením skriptu pro stavbu domu před hráčem - ale místo toho, abychom jeden plácli na místo, budeme jej animovat. Chystáme se také zabudovat do různých konfigurovatelných nastavení, která hráči umožní experimentovat s různými rozměry a materiály. Díky tomu bude program také modulární, takže jej lze použít jako základ pro vytváření sofistikovanějších jamek.
Aby kód fungoval, načtěte jej do Geany, poté spusťte Minecraft a vytvořte nový svět. Stisknutím klávesy Tab uvolněte kurzor z okna Minecraftu a kliknutím na ikonu ozubeného kola v Geany (nebo stisknutím klávesy F5) spusťte skript. Měli byste vidět, jak se dům kouzelně sestavuje. Pokud ne, zkuste se otočit - může to být za vámi! Můžete vidět skript v akci tady . Jak tedy scénář funguje? Nejprve to otevře odkaz na Minecraft:
importovat mcpi.minecraft jako minecraft, čas mc = minecraft.Minecraft.create ()
V Pythonu je důležité věnovat pozornost odsazení, protože tak se kód dělí na bloky. V tomto případě jsou oba řádky zarovnány s levým okrajem: první řádek importuje knihovny Minecraft a Time a druhý vytvoří objekt Minecraft, který budeme používat po celou dobu. Dalších 25 řádků nastavuje několik proměnných pro bloky, které budeme používat, abychom je mohli označovat jako, řekněme, wood_planks, spíše než podle jejich ID bloku (v tomto případě 5). Poté označíme, který z těchto bloků bude použit pro stěny, který pro střechu atd. Můžeme snadno změnit konstrukci domu, například tím, že vyměníme cihlové zdi za dlažební kostky. Nakonec jsme nastavili šířku, délku a výšku našeho požadovaného obydlí.
Nyní voláme funkci Minecraft mc.player.getTilePos (), abychom našli hráče v krajině, a hodnoty, které se vracejí, se pak použijí k vytvoření dvou proměnných, levé a dolní, k popisu, kde bude první roh obydlí .
Poté struktura skriptu odpovídá procesu Minecraft ručního stavění domu. Začneme vyčištěním prostoru, takže pokud se hráč rozhodne postavit dům uvnitř, řekněme, hory, obytný prostor nebude z pevného kamene. Tady je blok kódu - funkce v Pythonu - který to dělá:
def clear_house (jaderná):
pokud jaderný == True:
blast_zone = 20
jiný:
blast_zone = 0
mc.setBlocks (left-blast_zone, player_
broušený, spodní + zóna výbuchu, vlevo + šířka + výbuch_
zóna, hráčské pole + výška + výbuch_
zóna + 10, dolní délka-zóna výbuchu, air_block)
Když zavoláme clear_house, předáme parametr jaderný. Má hodnotu True nebo False. Můžete to zkusit volat s True, abyste vyčistili větší objem kolem cílové oblasti, nebo to zavolat s False, abyste omezili vůli na vnitřní rozměry domu. V Minecraftu se funkce mc.setBlocks používá k vytvoření krychle bloků tak, že jí předáte souřadnice ve třech rozměrech protilehlých rohů následované typem bloku, který chcete použít. V tomto případě čistíme prostor, takže používáme vzduch.
Jakmile jsme vyčistili prostor, je čas přejít ke stavbě. Každá z těchto fází výstavby probíhá ve své vlastní funkci. Na konci skriptu uvidíte funkci nazvanou main (), která řídí tok programu voláním jednotlivých fází výstavby postupně. Díky rozumnému pojmenování našich funkcí a jejich volání z main () je snadné pochopit, co program dělá:
def main ():
clear_house (False)
start_pos = [vlevo, dole, player_
přízemní]
build_floor (start_pos)
course = build_walls (start_pos)
add_door (door_position)
time.sleep (zpoždění * 10)
build_roof (start_pos, samozřejmě)
Další funkce zvaná main () vytváří podlahu - používá mc. setBlocks znovu vybojuje základ (pro umělecký efekt) a poté přidá kostku podlahových dlaždic s hloubkou jednoho bloku a vytvoří v našem domě pevnou podlahu.
jak vědět, jaké mám RAM
Budování zdí
Funkce build_walls je srdcem programu. Nejúčinnějším způsobem, jak vytvořit skořápku domu, by bylo rozbít pevnou kostku cihel a poté pomocí clear_house vybojovat interiér. Chceme však, aby dům vypadal, že se staví sám, takže musíme bloky umístit jednotlivě, jeden za druhým. Zde je zjednodušená verze kódu pro stavbu zdí:
def build_course (start_pos, směr,
kurs):
bloky = 1
current_horiz = start_pos [0]
current_vert = start_pos [1]
pokud směr == nahoru nebo
směr == dolů:
number_of_blocks = délka
jiný:
number_of_blocks = width
zatímco bloky mc.setBlock (aktuální_horiz, hráč_
zem + kurz, current_vert, wall_block)
pokud směr == nahoru:
current_vert- = 1
elif směr == dolů:
current_vert + = 1
směr elif == vpravo:
current_horiz + = 1
jiný:
current_horiz- = 1
bloky = bloky + 1 # přejde na další blok
time.sleep (zpoždění)
Začínáme uložením výchozí pozice - bude to poloha posledního bloku položeného z předchozího kurzu bloků. Poté určíme, kolik bloků položit, podle toho, zda jdeme po délce budovy nebo její šířce.
Fáze budování je obsažena v bloku while - to pokračuje v běhu, dokud nepoložíme všechny bloky. mc.setBlock umístí jeden blok na zobrazené souřadnice, poté zvýší jednu z těchto souřadnic v závislosti na směru, kterým pokládáme. Výsledkem je, že bloky jsou pokládány podél zdi před otočením rohu a pokračováním v obdélníku, dokud není kurz dokončen.
jak se dostat kik na mac
Konečná verze kódu je trochu více zapojena a přidává okna do každé zdi. Okna jsou dynamicky dimenzována tak, aby měla poloviční délku stěny a byla vycentrována. Zaznamenává také polohu dveří; přidává se, jakmile jsou postaveny zdi. Kurzy jsou řízeny z funkce build_walls, která opakuje funkci build_course pro každý kurz bloků, dokud nedosáhne konečné výšky.
Můžete si dokonce zkusit postavit dům v oceánu nebo ve vzduchu - to provedete dvojitým stisknutím mezerníku, abyste letěli, a dalším stisknutím se zvednete, než spustíte skript. Změňte proměnné wall_block a roof_block, abyste zjistili, co se stane, když vytvoříte stěny nebo střechu ze zlata nebo lávy. Můžete přidat vlastní bloky podle úplného seznamu tady a přidání přidružené proměnné do skriptu. Náročnější úpravy mohou zahrnovat přidání více pater do struktury, pokud je proměnná výšky nastavena na dostatečně velkou hodnotu. Zjistěte, jak například přidat věže, a máte předpoklady pro hrad Minecraftu.
Tyto vylepšení mohou znít triviálně, ale profesionálně programuji již více než 20 let a stále mě vzrušuje, když fragment kódu funguje podle plánu. Pokud jste nikdy předtím neprogramovali, doufám, že to uděláte - a pokud máte v domácnosti fanoušky Minecraftu, navrhuji nechat je uvolnit v kódu a zjistit, kam je zavede. Odkazy na zdroje Minecraft Pi najdete na kevpartner.co.uk/programování .