Raspberry Pi a hra Minecraft II.: Staviam - staviaš - staviame
V tejto časti sa naučíme "čarovať", potom si postavíme pár budov a na konci si zahráme krátku hru. Vyskúšame si prehľadávanie zoznamu pomocou cyklu a ďalšie funkcie sveta Minecraft.
Každý nový program budeme začínať rovnako. Vložíme si balíky a vytvoríme spojenie so svetom.
# Vloženie balíkov from mcpi.minecraft import Minecraft from mcpi import block # Vytvorenie spojenia so svetom mc = Minecraft.create()
Čarodej!
Naše prvé dnešné dobrodružstvo začneme kúzlom. Všetko čoho sa dotkneme sa premení na ovocie.
# Nekonečný cyklus while True: blockHits = mc.events.pollBlockHits() # Prejdenie všetkých zasiahnutých kociek zo zoznamu for hit in blockHits: mc.setBlock(hit.pos.x, hit.pos.y, hit.pos.z, block.MELON) # Zmena kocky na melón
Náš program si vložíme do nekonečného cyklu while True. Tým sa bude neustále opakovať a naše "čarovanie" tak ukončíme až kombináciou kláves CTRL+C. Následne použijeme funkciu pollBlockHits(). Tá zaznamená všetky zasiahnutia kocky mečom. Jej návratová hodnota je zoznam, ktorý si uložíme do premennej blockHits.
Aby sme sa dostali k hodnotám zo zoznamu, musíme s premennou pracovať ako s klasickým poľom. To znamená, že jeho hodnoty sú dostupné ako prvky poľa, ktoré vieme indexovať a určovať veľkosť poľa. Aby sme sa dostali k jednotlivým hodnotám, prejdeme si jeho všetky prvky cyklom for.
Teraz už len zmeníme typ kocky zasiahnutých blokov. Na to použijeme funkciu setBlock(). Typ kocky si môžme zvoliť napríklad melón, prípadne ľad, diamant alebo čo Vám len zíde na um.
Gratulujem, naučili ste sa čarovať!
Ako dotykom čarovného prútika sa kocka zmení na melón.
Nezabúdajte, že kocky je možné meniť len pri dotyku mečom. Iným nástrojom to nebude možné. Na zasiahnutie cieľa používajte pravé tlačidlo myši (nie ľavé ako na útok).
Ľadový úkryt
Samotný základ Minecraft hry je v stavaní objektov. Je načase, aby sme si aj my niečo vyskúšali postaviť. Začneme niečím malým a možno trochu neštandardným. Bude to iglu.
Na postavenie úkrytu pred chladnou nocou nám stačí funkcia setBlocks(), ktorú sme si spomínali už v úvodnej časti. Dôležité je iba použitie správnych rozmerov budovy.
Vyskúšajme si jednu navrhnúť. Jej rozmery budú 11x5x11 blokov. Po vytvorení tohto súvislého bloku kociek si budeme musieť vytvoriť voľný priestor v jej vnútri. Na to použijeme kocky vzduchu, ktoré vytvoria súvislý "prázdny" blok o jednu kocku menší ako bol predošlý. Zostane nám celý obvod iglu.
# Získanie pozície hráča x, y, z = mc.player.getPos() # Steny iglu mc.setBlocks(x + 1, y, z + 1, x + 10, y + 5, z + 10, block.ICE) # Vnútro budovy mc.setBlocks(x + 2, y + 1, z + 2, x + 9, y + 4, z + 9, block.AIR)
Po postavení týchto stien nám chýba už len jediná vec. Vchod. Použijeme teda nasledovný kus kódu, ktorý nám vytvorí do nášho iglu vstup.
# Vchod mc.setBlocks(x + 5, y + 1, z + 1, x + 6, y + 3, z + 1, block.AIR)
A čo tak vytvoriť si peknú podlahu?
# Bloky pre podlahu z červeného dreva mc.setBlocks(x + 2, y, z + 2, x + 9, y, z + 9, block.WOOL.id, 14)
Použijeme drevenú podlahu červenej farby, ktorej id je 14. Farbu dreva si je možné zvoliť z rôznych odtieňov od 0 - 15. Ale je len na vašej predstavivosti, aký typ podlahy či celej budovy si zvolíte.
Iglu, ktoré vás ochráni pred nebezpečenstvom.
Pyramída
Poďme si vyskúšať menej tradičné tvary. Medzi tie nepochybne patrí pyramída.
height = 10 # výška pyramídy levels = range(height) # rozsah pos = mc.player.getTilePos() x, y, z = pos.x + height, pos.y, pos.z # pripočítanie výšky k súradnici x # stavanie pyramídy z piesku po úrovniach for level in levels: mc.setBlocks(x - level, y, z - level, x + level, y, z + level, block.SAND) y += 1 # zvýšenie súradnice o 1
Určíme si výšku pyramídy. Tú sme si zvolili 10 blokov a uložili do premennej height. Pomocou funkcie range() sme si vygenerovali pole celých čísel od 0 po 9, ktoré využijeme pri cykle for. Funkcia má za úlohu vytvoriť zoznam čísel podľa stanoveného rozsahu.
K súradnici x pripočítame zadanú výšku, kvôli správnemu rozloženiu kociek. Následne za pomoci cyklu for budeme vytvárať bloky. Začneme najširšou časťou pyramídy a postupne zmenšovaním rozmerov a zvyšovaním výšky vytvoríme bloky piesku usporiadané nad sebou v tvare pyramídy.
10 stupňová pyramída.
Podobným skladaním blokov rôznych tvarov a veľkostí si môžete vystavať rôzne vlastné objekty a dokonca celé mesto.
Hra na lávu
Určite sa mnoho z vás ako malé deti zabávalo skákaním po pohovke alebo posteli, pri čom ste sa nemohli dotknúť zeme. Tá totiž predstavovala horúcu lávu.
Aj teraz si zahráme podobnú hru. Avšak rozdiel bude v tom, že nebudeme skákať po nábytku ale po piesku. A láva nebude len v našich predstavách.
V tomto programe využijeme funkciu getBlock(x, y, z). Tá vráti typ bloku nachádzajúceho sa na súradniciach x, y, z ako celé číslo. Pre piesok ide o hodnotu 12. V podmienke si teda zistíme či dlaždica, nad ktorou sa nachádza hráč je piesok a má túto hodnotu. V prípade, že áno, program po pol sekunde čakania zmení kocku na lávu.
# vloženie balíka pre čas from time import sleep # hodnota bloku piesku sand = 12 while True: pos = mc.player.getTilePos() # zistenie pozície hráča blockBelow = mc.getBlock(pos.x, pos.y-1, pos.z) # dlaždica pod hráčom if blockBelow == sand: # nachádza sa hráč na piesku? sleep(0.5) # čakanie pol sekundy mc.setBlock(pos.x, pos.y-1, pos.z, block.LAVA) # zmena bloku na lávu
Jedinou šancou hráča je buď sa dlho nezdržiavať na jednom mieste alebo utekať čím skôr preč z piesočného povrchu. Záchranou môže byť buď zeleň alebo voda, v ktorej láva stuhne.
Nestabilný piesok.
Viac informácií o programovaní Minecraftu v jazyku Python nájdete:
https://www.raspberrypi.org/magpi-issues/Essentials_Minecraft_v1.pdf
alebo v knihe Adventures in Minecraft(Martin O’Hanlon, David Whale).
Predchádzajúca časť: Raspberry Pi a hra Minecraft I.: Orientačný beh
Kódy na stiahnutie: minecraftPi.zip
Na záver pár funkcií, Minecraft API: http://www.stuffaboutcode.com/p/minecraft-api-reference.html.
0 komentárov k článku:
Komentovať môžu iba prihlásení
Zaregistruj sa cez bezplatnú registráciu alebo použi login cez Facebook (FB Connect)
Prihlás sa tu, ak už máš profil na Zajtra.sk:
Novinky
2 rokmi
Aprílové vtípky: Výběr toho nejlepšího kolem počítačů, internetu a techniky
Výběr nejlepších aprílových vtípků 2019
2 rokmi
Fotky Google sa učia lepšie pracovať s dokumentmi
Spoločnosť Google prostredníctvom svojho účtu na sociálnej sieti Twitter oficiálne predstavila novú funkciu svojej aplikácie Fotky Google.
2 rokmi
Gmail dovoľuje naplánovať poslanie emailu neskôr
Spoločnosť Google dnes oznámila pridanie funkčnej novinky do svojej populárnej webmailovej služby Gmail, možnosť naplánovať poslanie emailu na neskôr.
3 rokmi
Používatelia Chrome začali prechádzať na nový rýchlejší Firefox, avizujú dáta Mozilly
Nový lepší a rýchlejší prehliadač Firefox 57 Quantum vyúsťuje zrejme do viac používateľov prechádzajúcich respektíve vracajúcich sa na tento prehliadač z iných prehliadačov, na osobných počítačoch aj smartfónoch.
3 rokmi
Briti dokončili kúpu SK-NIC-u. Nové .sk domény nechávajú za 8.4 eur
Predaj správcu slovenskej domény .sk, SK-NIC, bol dokončený a novým majiteľom po telekomunikačnej skupine Danubiatel, do ktorej patrí napríklad Swan a 4ka, je britská spoločnosť CentralNic.
Staršie novinky »TOP dlhšie
- Aj ty môžeš byť najčítanejší. Napíš článok »
TOP tento mesiac
- Aj ty môžeš byť najčítanejší. Napíš článok »
Nové články:
- 14.Kingston uvádza 128GB verziu šifrovaného USB
sep - 10.Tiché COMBO Logitech MK295
sep - 24.Farbičky v HTML a CSS, alebo?
aug - 23.Pochopte, ako vytvoriť virtuálny obchod v 6 krokoch
aug - 29.Kamery, cloud a bezpečnosť
jul - Viac »
- Aj ty môžeš byť najčítanejší. Napíš článok »
Pekné veci
Pekné veci
Pekné veci
Pekné veci
Kritika
Vieš ako robiť veci lepšie? Pomôž našim odvážnejším členom a skritizuj im projekty!
Reklama
Slovenská IT komunita
Seriály zo Zajtra.sk
· Ako písať blog
· Ako sa stať PHP ninja s Yii Frameworkom
· Aplikácie pre Facebook
· CSS triky
· iOS vývojára príhody a skúsenosti
· Jednoduché programy, ktoré vám ušetria čas
· Modelovanie webového sídla
· Nauč sa CodeIgniter [HD]
· Nauč sa jQuery [HD]
· Nette PHP framework
· OOP v Javascripte
· Programujeme v Jave
· Programujeme v Lazaruse
· Programujeme v Pythone
· Robíme Eshop v ASP.NET Web Pages
· Slovenskí iOS developeri
· Webdizajn krok po kroku
· Yablkov TurboTip [HD]
Posledné komentáre