Raspberry Pi 2 adalah peranti yang mampu mengejutkan, memandangkan harganya yang kurang dari £ 30. Muncul dengan versi Minecraft yang sudah terpasang, bersama dengan API yang memungkinkan anda menulis kod untuk dijalankan di dunia maya. Anda melakukan ini di Python, yang mudah dipelajari. Kombinasi Pi, Python dan Minecraft memberikan peluang besar untuk mula meneroka kemungkinan pengaturcaraan. Dan kegembiraan melihat rumah membina dirinya di lanskap maya bukan hanya untuk kanak-kanak.
cara cermin telefon ke roku
Skrip dalam Minecraft
Minecraft adalah permainan kotak pasir terbuka yang tidak mempunyai garis plot untuk diikuti. Kadang-kadang ia digambarkan sebagai Lego maya, kerana pemain boleh membina apa-apa jenis struktur menggunakan blok yang ada. Versi yang digabungkan dengan Raspberry Pi mempunyai set fitur terhad yang sesuai dengan peranan pendidikannya - jadi anda tidak perlu risau untuk dikejar oleh zombie, misalnya. Berinteraksi dengan dunia ini tidak memerlukan penyediaan khas, hanya pembangunan OS Raspbian baru-baru ini dan persekitaran pengaturcaraan. Saya memilih Geany, yang boleh anda pasang dengan membuka LXTerminal dan menaip:
sudo apt-get install geany
Mari kita mulakan dengan membuat skrip untuk membangun rumah di depan pemain - tetapi daripada hanya menamparnya, kita akan menghidupkannya. Kami juga akan membangun dalam pelbagai tetapan yang dapat dikonfigurasi, yang akan membolehkan pemain bereksperimen dengan dimensi dan bahan yang berbeza. Ini juga akan menjadikan program ini modular, sehingga dapat dijadikan dasar untuk menciptakan kesejahteraan yang lebih canggih.
Untuk membuat kod berfungsi, masukkan ke Geany kemudian mulakan Minecraft dan ciptakan dunia baru. Tekan kekunci Tab untuk melepaskan kursor dari tetingkap Minecraft dan klik ikon roda gigi di Geany (atau tekan F5) untuk melancarkan skrip. Anda mesti melihat sebuah rumah berkumpul secara ajaib. Sekiranya tidak, cuba berpusing - mungkin ada di belakang anda! Anda dapat melihat skripnya beraksi di sini . Jadi bagaimana skrip berfungsi? Baiklah, pertama kali membuka pautan ke Minecraft:
import mcpi.minecraft sebagai minecraft, time mc = minecraft.Minecraft.create ()
Di Python, penting untuk memperhatikan lekukan, kerana cara itulah kod dibahagikan kepada blok. Dalam kes ini, kedua-dua garis itu rata dengan margin kiri: baris pertama mengimport perpustakaan Minecraft dan Time dan yang kedua membuat objek Minecraft untuk kita gunakan sepanjang masa. 25 baris seterusnya menetapkan beberapa pemboleh ubah untuk blok yang akan kita gunakan sehingga kita dapat merujuknya sebagai, katakanlah, papan kayu daripada ID blok mereka (5, dalam hal ini). Kami kemudian menunjukkan blok mana yang akan digunakan untuk dinding, yang mana untuk bumbung dan sebagainya. Kita boleh mengubah pembinaan rumah dengan mudah dengan menukar dinding bata untuk batu besar, misalnya. Akhirnya, kami menetapkan lebar, panjang dan tinggi kediaman yang kami mahukan.
Kami sekarang memanggil fungsi Minecraft mc.player.getTilePos () untuk mencari pemain di lanskap, dan nilai-nilai yang kembali kemudian digunakan untuk membuat dua pemboleh ubah, kiri dan bawah, untuk menggambarkan di mana sudut pertama tempat tinggal .
Selepas itu, struktur skrip sepadan dengan proses Minecraft membina rumah secara manual. Kami mulakan dengan membersihkan ruang sehingga jika pemain memilih untuk membina rumah di dalam, katakanlah, gunung, kawasan tempat tinggal tidak akan menjadi batu padat. Inilah sekatan kod - fungsi di Python - yang melakukan ini:
def clear_house (nuklear):
jika nuklear == Betul:
letupan_zon = 20
lain:
letupan_zon = 0
mc.setBlocks (zon kiri-ledakan, pemain_
tanah, bawah + zon letupan, kiri + lebar + letupan_
zon, padang pemain + tinggi + letupan_
zon + 10, zon ledakan panjang bawah, sekatan udara)
Apabila kita memanggil clear_house, kita memasukkan parameter nuklear. Ia mempunyai nilai Betul atau Salah. Anda boleh mencuba memanggilnya dengan Benar untuk membersihkan isipadu yang lebih besar di sekitar kawasan sasaran, atau memanggilnya dengan Palsu untuk membatasi jarak ke dimensi dalaman rumah. Di Minecraft, fungsi mc.setBlocks digunakan untuk membuat kubus blok dengan menyebarkannya koordinat, dalam tiga dimensi, sudut bertentangan diikuti dengan jenis blok yang ingin anda gunakan. Dalam keadaan ini, kami membersihkan ruang, jadi kami menggunakan udara.
Setelah kami mengosongkan ruang, inilah masanya untuk beralih ke pembinaan. Setiap peringkat pembinaan ini berlaku mengikut fungsinya sendiri. Pada akhir skrip, anda akan melihat fungsi yang disebut main (), yang mengawal aliran program dengan memanggil setiap fasa pembinaan secara bergantian. Dengan menamakan fungsi kami dengan bijak dan memanggilnya dari utama (), mudah untuk memahami apa yang sedang dilakukan oleh program ini:
def utama ():
clear_house (Salah)
start_pos = [kiri, bawah, pemain_
tanah]
build_floor (start_pos)
kursus = build_walls (start_pos)
add_door (pintu_posisi)
time.sleep (kelewatan * 10)
build_roof (start_pos, kursus)
Fungsi seterusnya yang dipanggil utama () membina lantai - ini menggunakan mc. setBlocks lagi untuk mengukir landasan (untuk kesan artistik) dan kemudian tambahkan kubus jubin lantai dengan kedalaman satu blok untuk membuat lantai yang kukuh di rumah kami.
cara membuang bar carian dari skrin utama
Membina tembok
Fungsi build_walls adalah nadi program. Cara paling berkesan untuk membuat cangkang rumah adalah dengan menampar batu bata yang padat dan kemudian menggunakan rumah jernih untuk mengukir bahagian dalam. Walau bagaimanapun, kami mahu rumah itu kelihatan membina sendiri, jadi kami perlu meletakkan blok satu persatu, satu demi satu. Berikut adalah versi ringkas kod bangunan dinding:
def build_course (start_pos, arah,
kursus):
blok = 1
current_horiz = start_pos [0]
current_vert = start_pos [1]
jika arah == ke atas atau
arah == ke bawah:
number_of_blocks = panjang
lain:
number_of_blocks = lebar
sementara blok mc.setBlock (current_horiz, player_
landasan + kursus, current_vert, wall_block)
jika arah == ke atas:
current_vert- = 1
arah elif == ke bawah:
current_vert + = 1
arah elif == kanan:
current_horiz + = 1
lain:
current_horiz- = 1
blok = blok + 1 # bergerak ke blok seterusnya
masa. tidur (kelewatan)
Kita mulakan dengan menyimpan kedudukan permulaan - ini akan menjadi kedudukan blok terakhir yang diletakkan dari blok sebelumnya. Kami kemudian menentukan berapa banyak blok yang akan ditempatkan, bergantung pada apakah kami akan menempuh sepanjang panjang bangunan atau lebarnya.
Fasa pembinaan terkandung dalam blok sementara - ini terus berjalan sehingga kita meletakkan semua blok. mc.setBlock meletakkan satu blok pada koordinat yang ditunjukkan, kemudian menambah salah satu koordinat tersebut bergantung pada arah di mana kita meletakkan. Kesannya ialah blok diletakkan di sepanjang dinding sebelum membelok ke sudut dan terus dalam bentuk segi empat tepat sehingga jalannya selesai.
google chrome dibuka pada windows 10 permulaan
Versi terakhir kod sedikit lebih terlibat, menambah tingkap ke setiap dinding. Tingkapnya bersaiz dinamik sehingga panjangnya separuh dinding dan berpusat. Ia juga mencatatkan kedudukan pintu; ia ditambah setelah dinding dibina. Kursus dikendalikan dari fungsi build_walls, yang mengulangi fungsi build_course untuk setiap kursus blok sehingga mencapai ketinggian akhir.
Anda juga boleh membina rumah anda di lautan atau di udara - lakukan ini dengan menekan dua kali bar ruang untuk terbang, kemudian tekan lagi untuk menaikkan diri sebelum menjalankan skrip. Ubah pemboleh ubah wall_block dan roof_block untuk melihat apa yang berlaku sekiranya anda membuat dinding atau bumbung daripada emas atau, tentu saja, lava. Anda boleh menambah blok anda sendiri dengan melihat senarai penuh di sini , dan menambahkan pemboleh ubah yang berkaitan dengan skrip. Pengubahsuaian yang lebih mencabar mungkin termasuk menambahkan beberapa tingkat ke struktur jika pemboleh ubah ketinggian ditetapkan ke nilai yang cukup besar. Cari tahu bagaimana menambah menara, dan anda mempunyai istana Minecraft.
Tweak ini mungkin terdengar sepele, tetapi saya telah memprogram secara profesional selama lebih dari 20 tahun dan saya masih mendapat kegembiraan ketika potongan kode berfungsi seperti yang diharapkan. Sekiranya anda tidak pernah diprogram sebelumnya, saya harap anda akan mencubanya - dan jika anda mempunyai kipas Minecraft di rumah tangga, saya cadangkan membiarkan mereka kehilangan kod dan melihat di mana ia membawa mereka. Anda akan mendapat pautan ke sumber Minecraft Pi di kevpartner.co.uk/programming .