Реклама
Одувек сте желели да научите да шифрујете, али нисте знали где да започнете? Научите како да контролишете Минецрафт на Распберри Пи помоћу Питхона и неке једноставне електронике. Ево крајњег резултата:
За овај пројекат ће вам требати Пи 2 или новија верзија, а док бисте већину ових задатака могли да извршите преко командне линије преко Сецуре Схелл (ССХ), овај ће се туториал фокусирати на кодирање директно на Пи.
Ново за Минецрафт? Не брините - ево наших Водич за почетнике Минецрафт-а Водич за почетнике Минецрафта (Латецомер) за почетникеАко ипак касните на забаву, не брините - описао вас је овај опсежни водич за почетнике. Опширније .
Увод у Минецрафт Пи

Минецрафт за малину Пи развијен је за учење и тренирање (и то бесплатно). Долази са апликацијским програмским интерфејсом (АПИ) који омогућава начин да се код лако разговара са Минецрафт-ом. Сјајно је за учење како кодирати и у Питхон-у почетак рада са електроником Електроника почетника: 10 вештина које требате знатиМноги од нас се никада нису ни дотакли лемилице - али стварање ствари може бити невероватно корисно. Ево десет најосновнијих вештина уради сам са електроником које ће вам помоћи да започнете. Опширније .
Шта је Питхон?
Питхон је програмски језик. То је интерпретирано, што значи да када покренете Питхон датотеку или програм, рачунар прво мора да уради мали посао на датотеци. Слаба страна је та што се може сматрати спорим у поређењу са састављени језици.
Предности тумачених језика су брзина кодирања и њихова љубазност. Не морате да кажете рачунару Шта података које желите да сачувате, само да нешто желите да похраните и рачунар ће схватити шта да радите. Постоје изузеци, наравно, и ово је нешто поједностављено стајалиште, међутим програмирање треба да буде забавно! Ако почнете да копате по сложеним техничким детаљима, то може постати мало напорно.
Питхон разликује велика и мала слова. Ово је важно знати јер Питхон неће препознати објекте чак и ако су тачно написани ако је случај погрешан. „Досометхинг ()“ неће радити ако се метода заправо зове „ДоСометхинг ()“. Питхон такође користи увлачења. Остале програмске језике можда није брига колико уноса има ваш унос, док Питхон заиста нега. Одступања се користе да би се Питхону рекло где припада код. Други језици могу користити „Цурли Брацес“ ({}) за групни код - Питхон их не користи. Питхон користи хасх (#) за коментаре, а коментари се користе да би рекли другим програмерима или људима који гледају код шта одређени део ради или зашто је потребан. Питхон игнорише било шта после хасх-а.
На крају, постоје две главне верзије Питхона - Питхон 2.7.к и Питхон 3.к. Постоје неке разлике између ова два (које су разлике?). Овај туториал ће користити Питхон 3.
Почетно подешавање
Давање вашег Пи-а је већ подешавање и покретање програма Распбиан Како инсталирати оперативни систем на Распберри ПиЕво како инсталирати ОС на ваш Распберри Пи и како клонирати савршено подешавање за брзи опоравак од катастрофе. Опширније , није потребно пуно почетних подешавања.
Отворени терминал (Мени> Додатна опрема> Терминал) и покрените ову наредбу. Увек је добра пракса да се листа спремишта ажурира, а ово ће преузети најновију листу програма (неће преузети саме програме, ово помаже Пи-ју да зна како се програми зову и где да их пронађу њих).
судо апт-гет упдате.
Сада ажурирајте Пи (ово може потрајати неко време):
судо апт-гет надоградњу.
Питхон и Минецрафт Пи су већ инсталирани, међутим ако Минецрафт Пи није инсталиран из било којег разлога, то је једноставно инсталирати 5 начина за инсталирање софтвера на Распберри ПиДа бисте направили било шта са Распберри Пи, морат ћете знати како инсталирати оперативни систем и софтвер на којем ће се покренути. Ако сте нови у Линуку, ово може бити застрашујуће. Опширније :
судо апт-гет инсталл минецрафт-пи
Дођите до докумената и направите нову фасциклу под називом „Минецрафт“:
цд Доцументс / мкдир Минецрафт
Можете погледати садржај ове нове мапе:
лс
Ево савјета - ако започнете типкати и притиснете типку ТАБ, командна линија ће покушати аутоматски довршити изјаву за вас.
Можете да прегледате пут до тренутног директорија користећи пвд, што је скраћеница за Принт Воркинг Дирецтори:
пвд
Покрените Минецрафт тако што ћете ићи Мени> Игре> Минецрафт Пи. Требат ће вам ово трчање, али вратите се касније.
Отворите Питхон 3 од Мени> Програмирање> Питхон 3 (ИДЛЕ). Овај програм пружа начин за покретање Питхон наредби и писање програма.
Сада бисте могли да куцате овде Питхон команде, али то није баш практично. Иди на Датотека> Нова датотека и онда Датотека> Сачувај и сачувајте ово у директоријуму који сте претходно креирали. (Документи> Минецрафт). Назовимо то „хелло_ворлд.пи“. Не морате да користите .пи екстензију, то ће се аутоматски додати, али то је добра пракса.
Ако се вратите на терминал и пређете у Минецрафт фасциклу, требали бисте видети датотеку коју сте управо креирали:
ЦД Минецрафт / лс
Можете покренути ову датотеку овако:
питхон хелло_ворлд
Запазите како је "питхон" написан малим словима. Ово мора да буде пре имена датотеке, јер Пи говори о томе да је следећа датотека Питхон, па би требало да се изврши као таква.
Пребаците се назад на уређивач Питхона и откуцајте:
штампа "Здраво, свет!"
Сачувајте ову датотеку и покрените је поново - сада бисте требали да видите "Здраво, свет!" појављују се у командној линији - уредно! Команда за штампање једноставно говори Питхону да испише следећи текст у двоструким наводницима. Ово је добро, али није страшно корисно за Минецрафт, повежите га:
од мцпи.минецрафт импорт Минецрафт мц = Минецрафт.цреате () мц.постТоЦхат ("Здраво, свет!")
Ако сачувате и покренете ову датотеку, требало би да видите "Здраво, свет!" појављују се у игри Минецрафт. Рашчланимо код:
од мцпи.минецрафт импорт Минецрафт
Ова линија говори Питхон-у да желите да користите код из друге датотеке. Ова датотека мцпи.минецрафт је развијена како би омогућила једноставну контролу над Минецрафт-ом.
мц = Минецрафт.цреате ()
Ова линија ствара објекат који се зове „мц“ (Минецрафт). Ово морате да креирате да бисте омогућили комуникацију са игром Минецрафт - није довољно само да додате датотеку.
мц.постТоЦхат ("Здраво, свет!")
На крају, овај ред говори Минецрафту да напише неки текст у чет. Покушајте да промените „Здраво, свет!“ на нешто друго и видеће шта ће се догодити, али имајте на уму да постоје двоструке цитате. Ако имате проблема са софтвером, то су неке уобичајене грешке Питхон и Минецрафт Пи:
- АттрибутеЕррор - ово је погрешка при упису, као што је пинт или прнт уместо штампања
- НамеЕррор: име „Минецрафт“ није дефинисано - не заборавите да увезете потребне модуле
- НамеЕррор: име 'труе' није дефинисано - Питхон је осетљив на велика и мала слова, промените у "Труе"
- соцкет.еррор: [Еррно 111] Веза је одбијена - Проверите да ли је Минецрафт покренут
Пројекти
Сада када знате основе Питхон-а и Минецрафт-а, направимо неколико цоол пројеката. Сав код може бити скинут са Гитхуб.
Аутоматизовани градитељ моста

Овај програм ће ефикасно изградити мост преко воде. Кад се играч приближи воденом тијелу, програм ће неколико блокова претворити у камен. Како Минецрафт користи координатни систем, врло је лако добити локацију играча, заједно с типом блокова око играча. Минецрафт Пи је мало ограничен, тако да није могуће ажурирати више различитих блокова скупно. Међутим, то понашање можете лако да кодирате сами.
Креирајте нову датотеку (Датотека> Нова датотека) и сачувајте као „бридге_буилдер.пи“.
од мцпи.минецрафт импорт Минецрафт. мц = Минецрафт.цреате () # створи Минецрафт објект док је тачно: к, и, з = мц.плаиер.гетПос () # позиција играча за складиштење # похраните околне блокове а = мц.гетБлоцк (к, и - 1, з + 1) б = мц.гетБлоцк (к, и - 1, з - 1) ц = мц.гетБлоцк (к - 1, и - 1, з) д = мц.гетБлоцк (к + 1, и - 1, з) ако је а == 8 или а == 9 или б == 8 или б == 9 или ц == 8 или ц == 9 или д == 8 или д == 9: # 8 или 9 је вода. Поставите околне блокове на под на чврст (камен) ако се нађе вода мц.сетБлоцкс (к, и - 1, з, к + 1, и - 1, з + 1, 1) мц.сетБлоцкс (к, и - 1, з, к - 1, и - 1, з - 1, 1) мц.сетБлоцкс (к, и - 1, з, к - 1, и - 1, з + 1, 1) мц .сет блокови (к, и - 1, з, к + 1, и - 1, з - 1, 1)
Примјетите како вриједност и заправо гледа на и - 1. Ово је ниво пода. Да се користи вредност и, скрипта би тражила блокове на нивоу колена - не би функционисало добро! Мц.гетБлоцк () враћа ИД блока за дате координате. Како су к, и и з координате играча, од њих можете додавати или одузимати позиције око играча. Не морате користити вредности к, и и з, можете користити било који број, међутим можда не знате како се тај одређени блок односи на играча - боље је користити вредности у односу на играча. Покрените ову датотеку из командне линије и погледајте шта се догађа.
Требали бисте видети да се мала површина земље претвара у камен кад играч постигне водено тело. Није сјајно - способни сте да ходате довољно брзо да проузрокујете проблем. То можете решити претварањем веће количине воде у копно. Завршни дио методе мц.сетБлоцкс () је блоковски ид. Један је блок ид за камен. Можете то променити у дрво, траву или било шта. Ако желите, лако бисте то могли претворити у сложен дизајн - можда висећи мост!
Супер Мининг Буттон

Овај пример ће учинити кратки посао рударства. Састоји се од физичког дугмета које ће, када се притисне, произвести 10 коцкица у коцкицама. Кренимо од дугмета. Слично тастерима на Ардуино-у, требат ће вам мала количина електронике, која би се требала наћи у а основни стартер кит Шта је у вашем Ардуино Стартер Кит-у? [Ардуино почетници]Суочени са кутијом пуном електронских компоненти, лако је бити претрпан. Ево водича за тачно шта ћете наћи у свом комплету. Опширније :
- 1 к Хлебна плоча
- 1 к тренутни прекидач
- Отпорник 1 к 220 охм
- Женски> мушки скочни каблови
- Мушки> мушки скочни каблови
Ево кола:

Овај отпорник назива се отпорник који се повлачи. Помаже да се осигура да оно што Пи сматра да је дугме притиснуто, заиста и да се дугме притиска. Не морате ово да користите, али препоручује се, јер без ње можете пронаћи пуно буке и лажних очитавања.
Дугме је спојено на пино 14 за улазни излаз опште намене (ГПИО). Можете користити било који ГПИО пин, међутим погледајте ово пиноут прво, јер све није могуће контролисати од Пи-а и мало се разликују између модела.
Сада када је дугме повезано, време је да га тестирамо. Креирајте нову датотеку и сачувајте је као „буттон_тест.пи“. Додајте овај код, сачувајте га и затим покрените у Терминалу.
импорт РПи. ГПИО као ГПИО. време увоза ГПИО.сетмоде (ГПИО.БЦМ) # реците Пи које заглавља треба да користе. ГПИО.сетуп (14, ГПИО.ИН) # реците Пи да је овај пин улаз, а истина: ако је ГПИО.инпут (14) == Тацно: # потражите дугме за испис "БУНТОН ВОРКС!" # резултат времена пријављивања.спава (0,5) # причекајте 0,5 секунди.
Притисните Контрола + Ц да зауставим скрипту. Ако све ради исправно, требали бисте видјети "ГУМБ РАДИ!" у терминалу. Примјетите како, попут Минецрафт модула, и овај тест користи РПи. ГПИО и временски модули. Оне омогућавају Пи-ју да приступи хардверским иглицама и пружају корисне функције временског одвајања.
Сада довршимо остатак кода. Креирајте нову датотеку под називом „супер_мине.пи“. Ево код:
импорт РПи. ГПИО као ГПИО. време увоза из мцпи.минецрафт увоза Минецрафт мц = Минецрафт.цреате () # створи Минецрафт објект ГПИО.сетмоде (ГПИО.БЦМ) # кажи Пи које заглавља треба користити. ГПИО.сетуп (14, ГПИО.ИН) # реците Пи да је овај пин улаз, а Истина: ако је ГПИО.инпут (14) == Тацно: # потражите тастер к, и, з = мц.плаиер.гетПос ( ) # прочитајте уређај позиција мц.сетБлоцкс (к, и, з, к + 10, и + 10, з + 10, 0) # мине 10 блокова мц.сетБлоцкс (к, и, з, к - 10, и + 10, з - 10, 0) # мине 10 блокова време.слееп (0.5) # причекајте 0.5 секунди
мц.плаиер.гетПос () враћа играчима тренутне координате које се затим чувају у к, и и з. Тхе сетБлоцкс () метода каже Минецрафт-у да попуни све блокове између почетка и краја следећим блоком. Нула је блок-ид за ваздух. То можете променити у други блок-ид да бисте солидно попунили подручје. Такође можете променити координате на +100 или чак +1000 блокова, међутим Пи се може почети борити ако постанете превише луди. Примјетите како је и + 10 за оба реда исто. Можете то променити у и - 10 ако желите да уклоните блокове испод земље.
Телепортинг

Друга једноставна употреба овог дугмета могла би бити „телепорт“. Минецрафт Пи Апи пружа начин за подешавање позиције играча. Следећи код ће „телепортирати“ играча на унапред постављену локацију:
мц.плаиер.сетПос (0, 0, 0)
Имајте на уму да његова метода прихвата три параметра; к, и и з - како бисте их поставили на било шта да моментално телепортирате играча на ту локацију.
Креирајте копију датотеке супер_мине (Датотека> Сачувај копију као) и измијените га замјеном ако са сљедећим:
ако је ГПИО.инпут (14) == Тачно: # потражите тастер мц.плаиер.сетПос (0, 0, 0) # телепорт плаиер време.сеп (0,5) # причекајте 0,5 секунди.
Ова датотека би сада требала изгледати овако:
импорт РПи. ГПИО као ГПИО. од мцпи.минецрафт импорт Минецрафт. време увоза мц = Минецрафт.цреате () # створи Минецрафт објект ГПИО.сетмоде (ГПИО.БЦМ) # кажи Пи које заглавља треба користити. ГПИО.сетуп (14, ГПИО.ИН) # реците Пи да је овај пин улаз, а Истина: ако је ГПИО.инпут (14) == Тачно: # потражите тастер мц.плаиер.сетПос (0, 0, 0) # телепорт плаиер време.слееп (0.5) # причекајте 0.5 секунди
Сачувај као „телепорт.пи“И трчи.
Можете пронаћи да се играч заглавио у неким блоковима када користите овај, у том случају ћете то морати подесите координате на познати отворени простор (горњи леви део екрана приказује вашу тренутну струју локацију).
Саградити кућу

Последњи задатак овог дугмета је изградња куће. Као горњи пример брзог минирања, ово ће једноставно заменити блокове који окружују уређај да би направио кућу. За различите материјале (прозор, зидови итд.) Користиће се различити блокови. Да бисте ствари лакше шифровали, створиће се чврст блок, а затим ће се изнутра уклонити (блок поставити на ваздух), то ће створити шупљу шкољку. Можете додати додатке попут кревета или врата, међутим, Минецрафт Пи пројекат је мало непотпун, а иако ови предмети раде када их уређај постави, они нису сјајни када користите Питхон.
од мцпи.минецрафт импорт Минецрафт. импорт РПи. ГПИО као ГПИО. време увоза мц = Минецрафт.цреате () # створи Минецрафт објект ГПИО.сетмоде (ГПИО.БЦМ) # кажи Пи које заглавља треба користити. ГПИО.сетуп (14, ГПИО.ИН) # реците Пи да је овај пин улаз, а Труе: ако је ГПИО.инпут (14) == Тацно: к, и, з = мц.плаиер.гетПос () мц.сетБлоцкс ( к + 2, и - 1, з + 2, к + 7, и + 3, з + 8, 5) # направите љуску мц.сетБлоцкс (к + 3, и, з + 3, к + 6, и + 2, з + 7, 0) # уклоните унутар мц.сетБлоцкс (к + 2, и, з + 5, к + 2, и + 1, з + 5, 0) # направи улаз мц.сетБлоцкс (к + 4, и + 1, з + 8, к + 5, и + 1, з + 8, 102) # направи прозор 1 мц.сетБлоцкс (к + 4, и + 1, з + 2, к + 5, и + 1, з + 2, 102) # маке виндов 2 мц.сетБлоцкс (к + 7, и + 1, з + 4, к + 7, и + 1, з + 6, 102) # направи прозор 3.
Сачувај ово као „хоусе.пи“И трчи. Ако вам је добро, требало би видети малу кућу (можда ћете се морати окренути да је пронађете). Веома је једноставно, отвор и неки прозори. Теоретски, не постоји ограничење колико велике или сложене зграде можете да изградите.
Направите мини игру

Затим направимо мини-игру! Ово ће бити прилично једноставно, када играч крене на блок песка, након случајног времена претвориће се у лаву. Ово је добра игра коју треба да направите, као што бисте могли да дизајнирате сопствене нивое или модификујете да ствари отежавају. За овај пример вам неће требати дугме.
Креирајте нову датотеку и сачувајте је као „мини_гаме.пи“. Ево код:
од мцпи.минецрафт импорт Минецрафт. увести насумично. време увоза мц = Минецрафт.цреате () # створи Минецрафт објект док је тачно: к, и, з = мц.плаиер.гетПос () блоцк_ундер_плаиер = мц.гетБлоцк (к, и - 1, з) ако блоцк_ундер_плаиер == 12: # играч стоји на песку, покрените тајмер рандом_тиме = рандом.униформ (0.1, 2.5) # генерирајте случајни број тиме.слееп (рандом_тиме); # причекајте мц.сетБлоцк (к, и - 1, з, 11) # претворите га у лаву.
Овај код је добар покретач случајно () функција: рандом.униформ (0,1, 2,5) генерисаће случајни број између 0,1 (1/10. секунде) и 2,5 (2 1/2 секунде). Повећање ових бројева ће олакшати игру.
Испробајте! Стојте на блоку песка и он ће се убрзо претворити у лаву. Ово би могла бити основа сложеније игре.
Направите још једну мини игру

Претпоставка ове игре је једноставна - немојте стајати на дрвеном поду кад истекне вријеме. Играч се телепортира у „арену“. Принуђени су да мирују док игра не крене. Једном када покренете, под ће се претворити у воду након што се тајмер истекне. Играч мора да стоји у сигурној зони (дијамантски блокови) да би преживео. Сваки ниво смањује тајмер за једну секунду. Након сваког успешног нивоа сигурно се повећава. Погледајте код испод:
време увоза увести насумично. фром мцпи.минецрафт импорт Минецрафт мц = Минецрафт.цреате () # створи Минецрафт објект # чисто подручје. мц.сетБлоцкс (-10, 1, -10, 25, 5, 25, 0) # креирајте љуску арене. мц.сетБлоцкс (0, 0, 0, 25, 10, 25, 17) # издубљена арена. мц.сетБлоцкс (1, 1, 1, 24, 10, 24, 0) # преместите играча у арену. мц.плаиер.сетПос (14, 25, 20) # телепорт плаиер # чине да остану стављени. # телепорт плаиер за почетну позицију сваке 1/10 секунде. # то урадите 5 секунди, а затим започните игру. тиме.слееп (2) тотал_ваит = 0. мц.постТоЦхат ("Чекам да се покрене") док је тотал_ваит <5: мц.плаиер.сетПос (14, 1, 20) # телепорт плаиер време.сеп (0.1) тотал_ваит + = 0.1 мц.постТоЦхат ("ПОЧЕТИ!") # 10 нивоа. за ниво у опсегу (10): к, и, з = мц.плаиер.гетПос () левел_тиме = 10 - ниво # смањује време за 1 секунду за сваки ниво мц.постТоЦхат ("Ниво -" + стр (ниво + 1) + "старт") # изградња пода мц.сетБлоцкс (0, 0, 0, 25, 0, 25, 17) # маке сафе ареа сафе_ареа_старт = рандом.униформ (0, 22) сафе_ареа_енд = рандом.униформ (0, 22) мц.сетБлоцкс (сафе_ареа_старт, 0, сафе_ареа_енд, сафе_ареа_старт + левел, 0, сафе_ареа_енд + левел, 57) прошло_време = 0 док елапсед_тиме <10: к, и, з = мц.плаиер.гетПос () тиме.слееп (0.25) елапсед_тиме + = 0.25 # цхецк плаиер је још увек на поду ако је <0.75: мц.постТоЦхат ("Игра Овер ") бреак; остало: # уклони подни мц.сетБлоцкс (-10, 0, -10, 25, 0, 25, 8) # врати сигурни простор мц.сетБлоцкс (сафе_ареа_старт, 0, сафе_ареа_енд, сафе_ареа_старт + ниво, 0, сафе_ареа_енд + левел, 57) тиме.слееп (2.5) настави одмор.
Сачувај ово као „мини_гаме_2.пи"И покрени га.
Пи 2 има неких проблема са перформансама за време рада на Минецрафт-у. Графикон употребе централне процесне јединице (ЦПУ) (горњи десни угао) никада не показује велико оптерећење, тако да програмери то морају спустити на лош дизајн и оптимизације. Ови проблеми нису повезани са покренутим кодом (пошто се настављају и када се Питхон не покреће), међутим, ова мини игра их сачињава. Ако се ваш Пи стварно бори, можда желите да смањите величину арене или оверклонирајте Пи Нема довољно сока? Стисните Распберри Пи помоћу оверклокаАко постоји неки хардвер објављен у 2012. у који ћете се вероватно заљубити, то је слатки ас-сугар Распберри Пи, мини рачунар дизајниран и направљен у Великој Британији који је испоручен широм ... Опширније .
Дијамант детектор

Направимо још један круг. Ово ће користити ЛЕД диоду за осветљење када су дијаманти испод (унутар 15 блокова). Ево шта вам треба:
- 1 к Хлебна плоча
- 1 к ЛЕД
- Отпорник 1 к 220 охм
- Женски> мушки скочни каблови
- Мушки> мушки скочни каблови
Ево кола:

Спојите Аноду (дугу ногу) на ГПИО Пин 14. Овај пин делује као + 5в. Спојите катоду (кратку ногу) на земљу.
Користио сам јефтину играчку од руде и модификовао је уклањањем задњег поклопца и електронике, а затим сам ставио ЛЕД испод ње. Можете то лако направити трајним врућим лепком или нечим сличним.

Сачувајте овај код као „диамондс.пи“:
импорт РПи. ГПИО као ГПИО. време увоза фром мцпи.минецрафт импорт Минецрафт мц = Минецрафт.цреате () # створи Минецрафт Објект лед_пин = 14 # похрани ГПИО пин број ГПИО.сетмоде (ГПИО.БЦМ) # кажи Пи које заглавља треба користити. ГПИО.сетуп (14, ГПИО.ОУТ) # реците Пи да је овај пин излаз, док је Труе: # понављајте неограничено к, и, з = мц.плаиер.гетПос () за и у распону (15): # погледајте сваки блокирај док блок 15 ако је мц.гетБлоцк (к, и - и, з) == 56: ГПИО.оутпут (лед_пин, истина) # ЛЕД за укључивање укључи време.сеп (0,25) # причекајте ГПИО.оутпут (лед_пин, лажно) # ЛЕД индикатор офф тиме.сеп (0.25) # чекати.
Када се испод плејера (унутар 15 блокова) налази блок дијамантске руде, лампица ће бљескати.
Јесте ли направили нешто супер са Минецрафт Пи? Јавите ми у коментарима шта сте направили или колико сте далеко стигли у играма.
Јое је дипломирани професор информатике са Универзитета у Линцолну у Великој Британији. Он је професионални програмер софтвера, а кад не лети дроновима или пише музику, често га могу наћи како снимају фотографије или снимају видео записе.