Skelbimas
Ar visada norėjote išmokti koduoti, bet nežinojote, nuo ko pradėti? Sužinokite, kaip valdyti „Minecraft“ „Raspberry Pi“, naudojant „Python“ ir keletą paprastų elektronikos elementų. Štai toks galutinis rezultatas:
Šiam projektui jums reikės Pi 2 ar naujesnės versijos, ir nors didžiąją dalį šių užduočių galėtumėte atlikti naudodamiesi komandine eilute per „Secure Shell“ (SSH), šioje mokymo programoje pagrindinis dėmesys bus skiriamas kodavimui tiesiogiai „Pi“.
Nauji „Minecraft“? Nesijaudinkite - štai mūsų „Minecraft“ vadovas pradedantiesiems („Latecomer“) „Minecraft“ pradedančiųjų vadovasJei vėluojate į vakarėlį, nesijaudinkite - šis išsamus vadovas pradedantiesiems jus įtraukė. Skaityti daugiau .
Įvadas į „Minecraft Pi“

Minecraft „Raspberry Pi“ buvo sukurtas mokytis ir keistis (ir tai nemokama). Jis pateikiamas kartu su programų programavimo sąsaja (API), kuri suteikia galimybę kodu lengvai susikalbėti su „Minecraft“. Puikiai tinka ir mokant koduoti „Python“ pradedant elektronika Pradedančiųjų elektronika: 10 įgūdžių, kuriuos reikia žinoti Daugelis iš mūsų niekada net nelietė lituoklio, tačiau viską pasidaryti gali būti nepaprastai naudinga. Čia yra dešimt elementariausių „pasidaryk pats“ elektronikos įgūdžių, kurie padės pradėti. Skaityti daugiau .
Kas yra Python?
Python yra programavimo kalba. tai yra interpretuojama, o tai reiškia, kai paleidžiate „Python“ failą ar programą, kompiuteris pirmiausia turi atlikti šiek tiek darbo su failu. Neigiama yra tai, kad jį galima laikyti lėtu, palyginti su sudarytos kalbos.
Išaiškintų kalbų pranašumai yra kodavimo greitis ir jų draugiškumas. Jums nereikia sakyti kompiuteriui ką duomenis, kuriuos norite išsaugoti, tiesiog kad norite ką nors saugoti, o kompiuteris sugalvos, ką daryti. Žinoma, yra išimčių, ir tai yra šiek tiek supaprastintas vaizdas, tačiau programavimas turėtų būti įdomus! Jei pradėsite gilintis į sudėtingas technines detales, tai gali tapti šiek tiek varginanti.
Python yra didžiosios ir mažosios raidės. Tai svarbu žinoti, nes Python objektų neatpažins net jei jie parašyti teisingai jei byla neteisinga. „Dosomething ()“ neveiks, jei metodas iš tikrųjų vadinamas „DoSomething ()“. Python taip pat naudoja įtraukimą. Kitoms programavimo kalboms gali būti nesvarbu, kiek įtraukų turi jūsų kodas, tuo tarpu „Python“ daro rūpintis. Įtraukos naudojamos Python'ui pasakyti, kur kodas priklauso. Kitos kalbos grupuodami kodą gali naudoti „Garbanotieji petnešos“ ({}) - „Python“ jų nenaudoja. „Python“ komentarams naudoja maišos ženklą (#), o komentarai naudojami pasakyti kitiems kūrėjams ar žmonėms, žiūrintiems į kodą, ką konkreti dalis daro ar kodėl ji reikalinga. Python nieko nepaiso po maišos.
Galiausiai yra dvi pagrindinės „Python“ versijos - „Python 2.7.x“ ir „Python 3.x“. Tarp šių dviejų yra keletas skirtumų (kokie yra skirtumai?). Šiame vadove bus naudojamas „Python 3“.
Pradiniai nustatymai
Pateikti savo Pi jau yra sąranka ir paleiskite „Raspbian“ Kaip įdiegti operacinę sistemą „Raspberry Pi“Štai kaip įdiegti operacinę sistemą „Raspberry Pi“ ir kaip klonuoti tobulą sąranką, kad greitai atsigautumėte. Skaityti daugiau , nereikia daug pradinio nustatymo.
Atidaryti terminalą (Meniu> Priedai> Terminalas) ir paleiskite šią komandą. Visada yra gera praktika atnaujinti saugyklų sąrašą ir atsisiųsti naujausią programų sąrašą (jis neatsisiųs pačių programų, tai padeda „Pi“ žinoti, kokios programos vadinamos ir kur jas rasti juos).
„sudo apt-get“ atnaujinimas.
Dabar atnaujinkite Pi (tai gali šiek tiek užtrukti):
„sudo apt-get“ atnaujinimas.
„Python“ ir „Minecraft Pi“ jau įdiegti, tačiau jei „Minecraft Pi“ nėra įdiegtas dėl kokių nors priežasčių, jį įdiegti paprasta 5 būdai, kaip įdiegti programinę įrangą „Raspberry Pi“Norėdami ką nors padaryti su „Raspberry Pi“, turėsite žinoti, kaip įdiegti operacinę sistemą ir joje veikiančią programinę įrangą. Jei dar nesate prisijungę „Linux“, tai gali būti bauginanti. Skaityti daugiau :
sudo apt-get install minecraft-pi
Eikite į dokumentus ir sukurkite naują aplanką pavadinimu „Minecraft“:
CD dokumentai / „mkdir Minecraft“
Galite peržiūrėti šio naujo aplanko turinį:
ls
Štai patarimas: jei pradėsite rašyti ir paspausite klavišą TAB, komandinė eilutė bandys automatiškai užpildyti pareiškimą jums.
Kelią į dabartinį katalogą galite ištirti naudodami pwd, kuris reiškia „Print Working Directory“:
pwd
Pradėkite „Minecraft“ eidami į Meniu> Žaidimai> Minecraft Pi. Jums reikės šio bėgimo, bet prie jo grįšite vėliau.
Atidarykite „Python 3“ nuo Meniu> Programavimas> Python 3 (IDLE). Ši programa suteikia galimybę paleisti Python komandas ir rašyti programas.
Dabar čia galite įvesti „Python“ komandas, bet tai nėra labai praktiška. Eiti į Failas> Naujas failas ir tada Failas> Išsaugoti ir išsaugokite tai aplanke, kurį sukūrėte anksčiau. (Dokumentai> Minecraft). Vadinkime tai „labas_world.py“. Jums nereikia naudoti .py plėtinio, jis bus pridėtas automatiškai, tačiau tai gera praktika.
Jei perjungsite atgal į terminalą ir pateksite į „Minecraft“ aplanką, turėtumėte pamatyti ką tik sukurtą failą:
cd Minecraft / ls
Šį failą galite paleisti taip:
python hello_world
Atkreipkite dėmesį, kaip visos „python“ raidės yra mažosios. Tai turi būti prieš failo pavadinimą, nes jis nurodo Pi, kad šis failas yra Python, todėl jis turėtų būti vykdomas kaip toks.
Grįžkite į Python redaktorių ir įveskite:
spausdinti „Sveikas, pasaulis!“
Išsaugokite šį failą ir paleiskite jį dar kartą - dabar turėtumėte pamatyti „Sveiki, pasaulis!“ pasirodyti komandinėje eilutėje - tvarkingas! Spausdinimo komanda tiesiog nurodo Python'ui išvesti šį tekstą dvigubomis kabutėmis. Tai yra gerai, bet ne itin naudinga „Minecraft“, susieskime tai:
iš mcpi.minecraft importuoti Minecraft mc = Minecraft.create () mc.postToChat („Sveiki, pasaulis!“)
Jei išsaugosite ir paleisite šį failą, turėtumėte pamatyti „Sveiki, pasaulis!“ pasirodyti žaidime „Minecraft“. Suskirstykime kodą:
iš mcpi.minecraft importuoti Minecraft
Ši eilutė nurodo Python, kad norite naudoti kodą iš kito failo. Šis „mcpi.minecraft“ failas buvo sukurtas tam, kad būtų galima lengvai valdyti „Minecraft“.
mc = Minecraft.create ()
Ši eilutė sukuria objektą, vadinamą „mc“ („Minecraft“). Jūs turite tai sukurti, kad galėtumėte susisiekti su „Minecraft“ žaidimu - neužtenka vien tik įtraukti failą.
„mc.postToChat“ („Sveikas, pasaulis!“)
Galiausiai ši eilutė liepia „Minecraft“ parašyti tam tikrą tekstą pokalbiui. Pabandykite pakeisti „Sveikas, pasaulis!“ į ką nors kitą ir pažiūrėkite, kas atsitiks, tačiau nepamirškite įtraukti tiek dvigubų kabučių. Jei kyla programinės įrangos problemų, tai yra keletas įprastų „Python“ ir „Minecraft Pi“ klaidų:
- „AttributeError“ - rašybos klaida, pvz., Pinta arba prnt vietoj spausdinimo
- „NameError“: „Minecraft“ vardas nėra apibrėžtas - nepamirškite importuoti reikalingų modulių
- „NameError“: vardas „true“ nėra apibrėžtas - „Python“ yra jautrus didžiosios ir mažosios raidės, pakeiskite į „True“
- socket.error: [Errno 111] Ryšys atmestas - įsitikinkite, kad veikia „Minecraft“
Projektai
Dabar, kai žinote „Python“ ir „Minecraft“ pagrindus, padarykime keletą puikių projektų. Visą kodą galima atsisiųsti iš Github.
Automatizuotas tiltų statytojas

Ši programa veiksmingai sukurs tiltą per vandenį. Kai grotuvas priartės prie vandens telkinio, programa keletą blokų pavers akmeniu. Kadangi „Minecraft“ naudoja koordinačių sistemą, labai lengva sužinoti grotuvo vietą kartu su blokų, esančių aplink grotuvą, tipu. „Minecraft Pi“ yra šiek tiek ribotas, todėl neįmanoma atnaujinti kelių skirtingų blokų masiškai. Vis dėlto tokį elgesį galite lengvai užkoduoti.
Sukurti naują failą (Failas> Naujas failas) ir išsaugokite kaip „bridge_builder.py“.
iš mcpi.minecraft importuoti Minecraft. mc = Minecraft.create () # sukurkite „Minecraft“ objektą teisingą: x, y, z = mc.player.getPos () # įrašykite grotuvo poziciją # saugokite aplinkinius blokus a = mc.getBlock (x, y - 1, z + 1) b = mc.getBlock (x, y - 1, z - 1) c = mc.getBlock (x - 1, y - 1, z) d = mc.getBlock (x + 1, y - 1, z), jei a == 8 arba a == 9, arba b == 8, arba b == 9, arba c == 8, arba c == 9, arba d = = 8, arba d = = 9: # 8 arba 9 yra vandens. Jei randate vandens, aplinkinius blokus ant grindų nustatykite vientisais (akmenimis). Mc.setBlocks (x, y - 1, z, x + 1, y - 1, z + 1, 1) mc.setBlocks (x, y - 1, z, x - 1, y - 1, z - 1, 1) mc.setBlocks (x, y - 1, z, x - 1, y - 1, z + 1, 1) mc .setBlocks (x, y - 1, z, x + 1, y - 1, z - 1, 1)
Atkreipkite dėmesį, kaip y vertė iš tikrųjų atrodo y-1. Tai yra grindų lygis. Jei būtų naudojama y reikšmė, scenarijus ieškotų blokų maždaug kelio lygyje - jis neveiks labai gerai! „Mc.getBlock“ () grąžina bloko ID nurodytoms koordinatėms. Kadangi x, y ir z yra grotuvo koordinatės, galite juos pridėti arba atimti, kad gautumėte pozicijas aplink grotuvą. Nereikia naudoti x, y ir z reikšmių, galite naudoti bet kurį skaičių, tačiau galbūt nežinote, kaip konkretus blokas susijęs su grotuvu - geriau naudoti reikšmes, palyginti su grotuvu. Paleiskite šį failą iš komandinės eilutės ir pažiūrėkite, kas atsitiks.
Turėtumėte pamatyti, kad nedidelis žemės plotas virsta akmeniu, kai žaidėjas pasiekia vandens telkinį. Tai nėra puiku - jūs galite vaikščioti pakankamai greitai, kad kiltų problema. Galite tai išspręsti konvertuodami į žemę didesnį vandens kiekį. Paskutinė mc.setBlocks () metodo dalis yra bloko ID. Vienas iš jų yra akmens bloko ID. Galite tai pakeisti medžiu, žole ar bet kuo. Jei norėtumėte, tai gana lengvai galėtumėte paversti sudėtinga konstrukcija - galbūt kabamuoju tiltu!
Super kasybos mygtukas

Šis pavyzdys padės atlikti trumpą kasybos darbą. Jį sudaro fizinis mygtukas, kurį paspaudus bus sudedama 10 kubelių blokų. Pradėkime nuo mygtuko. Panašiai kaip „Arduino“ mygtukai, jums reikės nedidelio kiekio elektronikos, visa tai turėtų būti rasta pagrindinis pradinis rinkinys Kas yra jūsų „Arduino“ pradiniame rinkinyje? [Arduino pradedantiesiems]Susidūrę su dėžute, kurioje pilna elektroninių komponentų, lengva priblokšti. Čia yra vadovas, ką tiksliai rasite savo rinkinyje. Skaityti daugiau :
- 1 x Duonos lentos
- 1 x momentinis jungiklis
- 1 x 220 omų rezistorius
- Moteriški> vyriški šuoliniai kabeliai
- Vyriškas> Vyriški kabeliai
Štai grandinė:

Šis rezistorius vadinamas „nuleidžiamuoju“ rezistoriumi. Tai padeda užtikrinti, kad mygtuko paspaudimas, pasak Pi, iš tikrųjų yra mygtuko paspaudimas. Jūs neprivalote tuo naudotis, tačiau tai yra rekomenduojama, nes be jo galite rasti daug triukšmo ir klaidingų rodmenų.
Mygtukas prijungtas prie bendrosios paskirties įvesties išvesties (GPIO) 14 kaiščio. Galite naudoti bet kurį GPIO PIN kodą, nepaisant to pinout pirma, nes ne visi jie yra valdomi Pi ir skiriasi šiek tiek skirtinguose modeliuose.
Dabar, kai mygtukas yra prijungtas, laikas jį išbandyti. Sukurkite naują failą ir išsaugokite jį kaip „mygtukas_test.py“. Pridėkite šį kodą, išsaugokite jį, tada paleiskite jį terminale.
importuoti RPi. GPIO kaip GPIO. importo laikas GPIO.setmode (GPIO.BCM) # nurodykite Pi, kokias antraštes naudoti. GPIO.setup (14, GPIO.IN) # nurodykite „Pi“, kad šis kaištis yra įvestis, o „True“: jei „GPIO.input“ (14) == „True“: # ieškokite mygtuko paspaudimo spausdinimo „Button works!“ # žurnalo rezultatas time.sleep (0.5) # laukti 0.5 sekundės.
Paspauskite Valdymas + C sustabdyti scenarijų. Jei viskas veikia teisingai, turėtumėte pamatyti „MYGTUKAS DARBAS!“ terminale. Atkreipkite dėmesį, kaip šis testas, kaip ir „Minecraft“ modulis, naudoja RPi. GPIO ir laiko moduliai. Tai leidžia „Pi“ prieiti prie aparatūros kaiščių ir suteikia naudingas laiko nustatymo funkcijas.
Dabar galime baigti likusį kodą. Sukurkite naują failą, pavadintą „super_mine.py“. Štai kodas:
importuoti RPi. GPIO kaip GPIO. importo laikas. iš mcpi.minecraft importuoti Minecraft mc = Minecraft.create () # sukurti Minecraft objektą GPIO.setmode (GPIO.BCM) # nurodykite Pi, kokias antraštes naudoti. GPIO.setup (14, GPIO.IN) # nurodykite „Pi“, kad šis kaištis yra įvestis, o „True“: jei „GPIO.input“ (14) == „True“: # ieškokite mygtuko paspaudimo x, y, z = mc.player.getPos ( ) # skaityti grotuvą padėtis mc.setBlocks (x, y, z, x + 10, y + 10, z + 10, 0) # mine 10 blokų mc.setBlocks (x, y, z, x - 10, y + 10, z - 10, 0) # mano 10 blokuoja laiką.miegą (0.5) # laukti 0.5 sekundžių.
„mc.player.getPos“) grąžina žaidėjų dabartines koordinates, kurios vėliau saugomos x, y ir z. „setBlocks“ () metodas nurodo Minecraft užpildyti visus blokus nuo pradžios iki pabaigos tokiu bloku. Nulis yra oro bloko ID. Galite pakeisti tai kitu bloko ID, kad užpildytumėte sritį. Taip pat galite pakeisti koordinates į +100 ar net +1000 blokų, tačiau Pi gali imti kovoti, jei per daug susipyksi. Atkreipkite dėmesį, kaip y + 10 yra tas pats abiejose eilutėse. Galite pakeisti tai į y - 10, jei norite pašalinti blokus po žeme.
Teleportas

Kitas paprastas šio mygtuko naudojimas galėtų būti „teleportacija“. „Minecraft Pi Api“ suteikia galimybę nustatyti žaidėjo padėtį. Šis kodas „teleportuos“ grotuvą į iš anksto nustatytą vietą:
„mc.player.setPos“ (0, 0, 0)
Atminkite, kad jo metodas priima tris parametrus; x, y ir z - kad galėtumėte nustatyti bet ką, kad galėtumėte iš karto teleportuoti grotuvą į tą vietą.
Sukurkite super_mine failo kopiją (Failas> Išsaugoti kopiją kaip) ir pakeiskite jį pakeisdami „if“ taip:
jei GPIO.input (14) == Tiesa: # ieškokite mygtuko paspaudimo mc.player.setPos (0, 0, 0) # teleportuokite grotuvo laiką.miegą (0.5) # palaukite 0,5 sekundės.
Dabar šis failas turėtų atrodyti taip:
importuoti RPi. GPIO kaip GPIO. iš mcpi.minecraft importuoti Minecraft. importo laikas mc = Minecraft.create () # sukurkite „Minecraft Object GPIO.setmode“ (GPIO.BCM) # nurodykite Pi, kokias antraštes naudoti. GPIO.setup (14, GPIO.IN) # nurodykite Pi, kad šis kaištis yra įvestis, tuo tarpu „True“: jei GPIO.input (14) == Tiesa: # ieškoti mygtuko paspaudimo mc.player.setPos (0, 0, 0) # teleportuoti grotuvo laiką.miegoti (0.5) # laukti 0.5 sekundžių.
Išsaugoti kaip „teleportas.pyIr bėk.
Gali būti, kad grotuvas įstrigs kai kuriuose blokuose, kai tai naudosite. Tokiu atveju jums to reikės pritaikykite koordinates žinomoje atviroje erdvėje (ekrano viršuje, kairėje, rodoma dabartinė jūsų informacija vieta).
Pastatyti namą

Paskutinė šio mygtuko užduotis yra pastatyti namą. Panašiai kaip aukščiau pateiktas greito iškasimo pavyzdys, tai tiesiog pakeis grotuvus supančius blokus, kad būtų namas. Skirtingoms medžiagoms (langui, sienoms ir tt) bus naudojami skirtingi blokų ID. Kad daiktus būtų lengviau užkoduoti, bus sukurtas tvirtas blokas, o pašalinus vidų (nustatykite bloką į orą), bus sukurtas tuščiaviduris apvalkalas. Galite pridėti tokių priedų kaip lova ar durys, tačiau „Minecraft Pi“ projektas yra šiek tiek neišsamus, ir nors šie objektai veikia, kai juos įdeda žaidėjas, jie nėra nuostabūs naudojant „Python“.
iš mcpi.minecraft importuoti Minecraft. importuoti RPi. GPIO kaip GPIO. importo laikas mc = Minecraft.create () # sukurkite „Minecraft Object GPIO.setmode“ (GPIO.BCM) # nurodykite Pi, kokias antraštes naudoti. GPIO.setup (14, GPIO.IN) # nurodykite „Pi“, kad šis kaištis yra įvestis, o „True“: jei „GPIO.input“ (14) == „True“: x, y, z = mc.player.getPos () mc.setBlocks ( x + 2, y - 1, z + 2, x + 7, y + 3, z + 8, 5) # pagaminkite apvalkalą „mc.setBlocks“ (x + 3, y, z + 3, x + 6, y + 2, z + 7, 0) # pašalinkite „mc.setBlocks“ vidų (x + 2, y, z + 5, x + 2, y + 1, z + 5, 0) # padaryti durų mc.setBlocks (x + 4, y + 1, z + 8, x + 5, y + 1, z + 8, 102) # make window 1 mc.setBlocks (x + 4, y + 1, z + 2, x + 5, y + 1, z + 2, 102) # make window 2 mc.setBlocks (x + 7, y + 1, z + 4, x + 7, y + 1, z + 6, 102) # make langas 3.
Išsaugoti tai kaip „namas.pyIr bėk. Viskas gerai, turėtumėte pamatyti pasirodžiusį nedidelį namą (jums gali tekti pasisukti, kad jį rastumėte). Tai labai paprasta, atidarymas ir keli langai. Teoriškai nėra jokių apribojimų, kiek didelį ar sudėtingą pastatą galėtumėte pastatyti.
Padarykite mini žaidimą

Tada padarykime mini žaidimą! Tai bus gana paprasta, kai žaidėjas žengs ant smėlio bloko, po atsitiktinio laiko jis taps lava. Tai geras žaidimas, nes jūs galite susikurti savo lygį arba jį modifikuoti, kad viskas būtų sunkiau. Šiame pavyzdyje jums nereikės mygtuko.
Sukurkite naują failą ir išsaugokite jį kaip „mini_game.py“. Štai kodas:
iš mcpi.minecraft importuoti Minecraft. importuoti atsitiktinai. importavimo laikas mc = Minecraft.create () # sukurkite „Minecraft“ objektą, kai jis teisingas: x, y, z = mc.player.getPos () pagrindinisunder_player = mc.getBlock (x, y - 1, z), jei gerasunder_player == 12: # žaidėjas stovi ant smėlio, paleiskite laikmatį random_time = random.uniform (0,1, 2,5) # generuokite atsitiktinį skaičių time.sleep (atsitiktinis laikas); # wait mc.setBlock (x, y - 1, z, 11) # paverskite jį lava.
Šis kodas yra geras starteris atsitiktinis () funkcija: random.uniform (0,1, 2,5) sugeneruos atsitiktinį skaičių nuo 0,1 (1/10 sekundės) iki 2,5 (2 1/2 sekundės). Padidinus šiuos skaičius žaidimas bus lengvesnis.
Išbandyk! Atsistokite ant smėlio bloko, ir jis netrukus pavirs lava. Tai galėtų būti sudėtingesnio žaidimo pagrindas.
Padarykite dar vieną mini žaidimą

Šio žaidimo prielaida yra paprasta - nestovėkite ant medinių grindų, kai baigsis laikas. Žaidėjas teleportuojamas į „areną“. Jie priversti stovėti vietoje, kol neprasidės žaidimas. Pradėjus naudoti laikrodį, grindys virs vandens. Žaidėjas turi stovėti saugioje zonoje (deimantų blokai), kad išgyventų. Kiekvienas lygis laikmatį sumažina viena sekunde. Po kiekvieno sėkmingo lygio saugi zona tampa didesnė. Patikrinkite žemiau esantį kodą:
importo laikas. importuoti atsitiktinai. iš mcpi.minecraft importuoti „Minecraft“ mc = Minecraft.create () # sukurti „Minecraft“ objektą # aiški sritis. „mc.setBlocks“ (-10, 1, -10, 25, 5, 25, 0) # sukuria arenos apvalkalą. „mc.setBlocks“ (0, 0, 0, 25, 10, 25, 17) # tuščiavidurė arena. „mc.setBlocks“ (1, 1, 1, 24, 10, 24, 0) # perkelkite grotuvą į areną. „mc.player.setPos“ (14, 25, 20) # teleportuotojas # priverskite juos išlikti. # Teleportuotojas pradeda poziciją kas 1/10 sekundę. # darykite tai 5 sekundes, tada pradėkite žaidimą. laikas miego (2) total_wait = 0. mc.postToChat („Laukiu pradžios“) o total_wait <5: mc.player.setPos (14, 1, 20) # teleportuoti grotuvo laiką.miegą (0,1) total_wait + = 0,1 mc.postToChat („BEGIN!“) # 10 lygių. lygiui diapazone (10): x, y, z = mc.player.getPos () level_time = 10 - lygis # sumažinkite laiką 1 sek. kiekvienam lygiui mc.postToChat („Level -“ + str (lygis +1) + „pradžia“) # pastatyti grindis „mc.setBlocks“ (0, 0, 0, 0, 25, 0, 25, 17) # padaryti saugią zoną safe_area_start = random.uniform (0, 22) safe_area_end = random.uniform (0, 22) mc.setBlocks („safe_area_start“, 0, „safe_area_end“, „safe_area_start“ + lygis, 0, „safe_area_end“ + lygis, 57) praėjo_time = 0 o praėjęs_laikis <10: x, y, z = mc.player.getPos () time.sleep (0.25) praėjęs_time + = 0.25 # patikrinkite, ar žaidėjas vis dar yra grindyse, jei y <0.75: mc.postToChat („Žaidimas Per ") pertrauka; Kita: # Pašalinkite „mc.setBlocks“ grindis (-10, 0, -10, 25, 0, 25, 8) # padėkite saugią zoną atgal „mc.setBlocks“ („safe_area_start“, 0, safe_area_end, safe_area_start + level, 0, safe_area_end + level, 57) time.sleep (2.5) tęsti pertrauką.
Išsaugoti tai kaip „mini_game_2.pyIr paleisk jį.
Vykdant „Minecraft“, „Pi 2“ turi tam tikrų našumo problemų. Centrinio procesoriaus (CPU) naudojimo schema (viršutinis dešinysis kampas) niekada nerodo didelių apkrovų, todėl kūrėjams tai turi būti netinkamas dizainas ir optimizavimas. Šios problemos nesusijusios su bėgimo kodu (nes jos tęsiasi, kai Python neveikia), tačiau jas komplikuoja šis mini žaidimas. Jei jūsų Pi tikrai kovoja, galbūt norėsite sumažinti arenos dydį arba laikrodis savo Pi Nepakanka sulčių? Išspauskite savo aviečių piJei 2012 m. Išleista kokia nors aparatinė įranga, kurią greičiausiai įsimylėsite, tai yra saldžiarūgštis „Raspberry Pi“, JK suprojektuotas ir pastatytas mini kompiuteris, gabenamas visame pasaulyje ... Skaityti daugiau .
Deimantų detektorius

Padarykime kitą grandinę. Šviesos diodas (LED) užsidegs, kai apačioje yra deimantų (per 15 blokų). Štai ko jums reikia:
- 1 x Duonos lentos
- 1 x šviesos diodas
- 1 x 220 omų rezistorius
- Moteriški> vyriški šuoliniai kabeliai
- Vyriškas> Vyriški kabeliai
Štai grandinė:

Prijunkite anodą (ilgą koją) prie „GPIO Pin 14“. Šis kaištis veikia kaip + 5v. Prijunkite katodą (trumpą koją) prie žemės.
Aš panaudojau pigią rūdos žaislą ir jį modifikavau nuimdamas galinį dangtelį ir elektroniką, po to įdėjau šviesos diodą. Jūs galite lengvai padaryti tai nuolatinį karštais klijais ar kažkuo panašiu.

Išsaugokite šį kodą kaip „deimantai.py“:
importuoti RPi. GPIO kaip GPIO. importo laikas. iš mcpi.minecraft importuoti Minecraft mc = Minecraft.create () # sukurti Minecraft objektą led_pin = 14 # saugoti GPIO PIN kodą GPIO.setmode (GPIO.BCM) # pasakyti Pi, kokias antraštes naudoti. GPIO.setup (14, GPIO.OUT) # nurodykite Pi, kad šis kaištis yra išvestis, tuo tarpu tiesa: # pakartokite neribotą laiką x, y, z = mc.player.getPos () i diapazonui (15): # žiūrėkite į kiekvieną blokuoti iki 15 blokas, jei mc.getBlock (x, y - i, z) == 56: GPIO.output (led_pin, True) # įjungti šviesos diodą į time.sleep (0.25) # palaukti GPIO.output (led_pin, False) # turn LED išjungtas laikas.miegoti (0,25) # laukti.
Kai po grotuvu yra deimantų rūdos blokas (per 15 blokų), lemputė mirksės.
Ar padarėte ką nors nuostabaus su „Minecraft Pi“? Komentaruose praneškite, ką padarėte ar kiek padarėte žaidimų metu.
Džo yra baigusi kompiuterių mokslą Linkolno universitete, JK. Jis yra profesionalus programinės įrangos kūrėjas, o kai jis neskraido dronais ar nerašo muzikos, jį dažnai galima rasti fotografuojant ar kuriant vaizdo įrašus.