Jak zbudować drzewo w Minecraft

Z Zasoby CoderDojo
Skocz do: nawigacji, wyszukiwania

AUTOR: Wojciech Gembalczyk; E-MAIL: wgembalczyk@coderdojo.org.pl

Najpierw przy pomocy polecenia:

mc.setBlock (x, y, z, block.WOOD.id, 2)

tworzymy jeden blok:

MC drzewo 001.png

Proszę zwrócić uwagę, że y steruje lokalizacją w pionie.

MC drzewo 002.png

Dodajemy pętlę (for), która utworzy nam linię od punktu –promień do +promień.

for i in range (-promien, promien+1):
mc.setBlock (x + i, y, z, block.WOOD.id, 2)

MC drzewo 003.png

Dodamy kolejną pętlę, która utworzy nam kwadrat 3D.

for i in range (-promien, promien+1):
for j in range (-promien, promien+1):
mc.setBlock (x + i, y + j, z, block.WOOD.id, 2)

MC drzewo 004.png

I ostatnia pętlę tworzy nam sześcian.

for i in range (-promien, promien+1):
for j in range (-promien, promien+1):
for k in range (-promien, promien+1):
mc.setBlock (x + i, y + j, z + k, block.WOOD.id, 2)

MC drzewo 005.png

Będziemy teraz tworzyć różne figury 3D „wycinając” je z sześcianu – ograniczając rysowanie (stawianie bloków) zgodnie z zadanymi warunkami. Zacznijmy od narysowania koła 3D:

if (j == 0) and (math.sqrt (i*i + k*k) <= promien):
mc.setBlock (x + i, y + j, z + k, block.WOOD.id, 2)

czyli rysuj bloki tylko wtedy, gdy:

  • (j == 0) – j równa się 0, a więc jedynie w płaszczyźnie 0 (jedynie na wysokości 0)
  • (math.sqrt (i*i + k*k) <= promien)Szablon:Math} (zgodnie z twierdzeniem Pitagorasa) jest mniejsze bądź równe promien

w ten sposób w płaszczyźnie 0 dostajemy koło 3D

MC drzewo 007.png

A co się stanie jak odwrócimy warunek i zamiast mniejsze równe <=, wstawimy większe lub równe >=?

if (j == 0) and (math.sqrt (i*i + k*k) >= promien):
mc.setBlock (x + i, y + j, z + k, block.WOOD.id, 2)

MC drzewo 008.png

Ustawmy z powrotem mniejsze równe <= i usuńmy ograniczenie j==0. Dostaniemy w ten sposób walec (czyli nasz przyszły pień).

if (math.sqrt(i*i + k*k) >= promien):
mc.setBlock(x + i, y + j, z + k, block.WOOD.id, 2)

MC drzewo 009.png

A jak uzyskać kulę? Zamieniając Szablon:Math} na Szablon:Math}, czyli wzór na odległość od środka układu współrzędnych w 3D

if (math.sqrt (i*i + j*j + k*k) >= promien):
mc.setBlock (x + i, y + j, z + k, block.WOOD.id, 2)

MC drzewo 012.png

W jaki sposób przerobić kulę na liście drzewa? Wykonamy dwie dodatkowe operacje:

  • zamienimy rysowany kolor na zielony (zamiast block.WOOD.id, 2 wpiszemy block.WOOL.id, 5)
  • dodamy warunek rysujący przeciętnie co 9 klocek (random.randint (0, 9) == 0) – wyrażenie random.randint (0, 9) losuje nam liczbę całkowitą od 0 do 9, zatem sprawdzenie czy to wyrażenie = 0 będzie prawdziwe (True) przeciętnie raz na 9 losowań.

Kod będzie zatem wyglądał tak:

if (math.sqrt (i*i + j*j + k*k) <= promien) and (random.randint (0, 9) == 0):
mc.setBlock (x + i, y + j, z + k, block.WOOL.id, 5)

I dostaniemy liście.

MC drzewo 013.png

Liście przesuwamy trochę w górę (środek na wysokości 40: y = 40) i dorysowujemy pień (wysokość 40, promień 3) i otrzymujemy drzewo:

MC drzewo 014.png

Nasze drzewo możemy dowolnie powielać.

MC drzewo 015.png

Wyzwanie

A w bardzo podobny sposób możemy zaprogramować świąteczną choinkę:

MC drzewo 016.png

Zasoby zewnętrzne