Darmowy fragment publikacji:
minecraftstu(cid:31)_cover05 PWN.pdf 1 2018-11-08 20:07:05
DLA DZIEC I OD LAT 10 ( I ICH RODZICÓ W)
Zaprogramuj armie
Zaprogramuj armie
,
,
robotów do budowania,
robotów do budowania,
uprawiania, wydobywania,
uprawiani a, wydobywania,
i nie tylko!
i nie tylko!
C
M
Y
CM
MY
CY
CMY
K
Wydobywasz diamenty, tworzysz dziesiątki narzę-
dzi i budujesz wszelkiego rodzaju konstrukcje –
a gdyby tak zaprogramować roboty, aby robiły to
wszystko za Ciebie w krótkim czasie?
Dzięki książce Kodowanie z Minecraftem® dowiesz
się, jak stworzyć wirtualną armię robotów za
pomocą Lua – języka programowania stosowanego
przez profesjonalnych twórców gier. Dzięki projek-
tom kodowanym krok po kroku zobaczysz, jak
pisać programy, które automatycznie wydobywają
i zbierają materiały, wytwarzają przedmioty
i budują wszystko, co tylko można sobie wyobrazić.
Przy okazji poznasz podstawowe pojęcia informa-
tyczne, takie jak typy danych, funkcje czy zmienne.
Nauczysz się, jak:
Programować roboty, które podejmują mądre
decyzje, za pomocą sterowania przepływem.
Ponownie wykorzystywać kod, aby roboty
mogły uprawiać i zbierać dowolne rośliny,
w tym pszenicę, trzcinę cukrową, a nawet
kaktusy!
Zaprogramować fabrykę, która wytwarza
nieskończone ilości materiałów budowlanych.
Zaprojektować algorytm tworzenia ścian
i budowli o dowolnym rozmiarze.
Zakodować wymachującego kilofem drwala-
robota!
Stworzyć robota, który wykopuje schody
umożliwiające bezpieczną eksplorację.
Dodatkowe zadania zawarte w każdym rozdziale
pomogą Ci przenieść Twoje umiejętności kodowania
na wyższy poziom. Po przeczytaniu książki zrozu-
miesz, jak potężne może być kodowanie, i będziesz
miał mnóstwo robotów na swoje zawołanie.
O AUT ORZ E
Al Sweigart jest zawodowym programistą, który
uczy programowania dzieci i dorosłych. Autor
kilku bestsellerowych książek o programowaniu
dla początkujących, w tym Twórz własne gry kom-
puterowe w Pythonie (WN PWN 2017) i Bawimy
się, programując w Scratchu (WN PWN 2017).
Wymagania: system Windows 7 lub nowszy;
macOS 10.10 lub nowszy.
Patroni medialni
Wydawnictwo
Naukowe PWN SA
pwn.pl • 801 33 33 88
ksiegarnia.pwn.pl
www.nostarch.com
kodowanie
kodowanie
z Mine craftem
z Mine craftem
®
B u duj w y z ej, szy b ci ej z b i e r aj plo n y,
ko p g le b i ej i auto mat yz uj n ud n e zaj ecia
A l Sw e i g a rt
i
i
i
k
k
k
o
o
o
d
d
d
o
o
o
w
w
w
a
a
a
n
n
n
e
e
e
z
z
z
M
M
M
n
n
n
e
e
e
c
c
c
r
r
r
a
a
a
f
f
f
t
t
t
e
e
e
m
m
m
i
i
i
®
S
W
E
I
G
A
R
T
kodowanie
z Minecraftem®
kodowanie
z Minecraftem
®
B u duj w y z ej, szy b ci ej z b i e r aj plo n y,
ko p g le b i ej i auto mat y zuj n u dn e zaj ecia
A l S w e i g a r t
Dane oryginału
Copyright © 2018 by Al Sweigart. Title of English-language original: Coding with Minecraft: Build Taller, Farm
Faster, Mine Deeper, and Automate the Boring Stuff, ISBN 978-1-59327-853-3, published by No Starch Press.
Polish-language edition copyright © 2019 by Polish Scientifi c Publishers PWN Wydawnictwo Naukowe PWN
Spółka Akcyjna. All rights reserved.
Przekład Małgorzata Dąbkowska-Kowalik na zlecenie WITKOM Witold Sikorski
Projekt okładki polskiego wydania Hubert Zacharski, na podstawie oryginału
Wydawca Edyta Kawala
Redaktor prowadzący Jolanta Kowalczuk
Redaktor Zofi a Pasek
Korekta Anna Marecka
Koordynator produkcji Anna Bączkowska
Skład i łamanie Marcin Szcześniak
Zastrzeżonych nazw fi rm i produktów użyto w książce wyłącznie w celu identyfi kacji
Copyright © for the Polish edition by Wydawnictwo Naukowe PWN SA
Warszawa 2019
ISBN 978-83-01-20206-4
Wydanie I
Warszawa 2019
Wydawnictwo Naukowe PWN SA
02-460 Warszawa, ul. Gottlieba Daimlera 2
tel. 22 69 54 321, faks 22 69 54 288
infolinia 801 33 33 88
e-mail: pwn@pwn.com.pl, reklama@pwn.pl
www.pwn.pl
Druk i oprawa: Totem, Inowrocław
Danielowi Ratcliffe’owi, twórcy ComputerCrafta,
i Seymourowi Papertowi, twórcy żółwia.
O AUTORZE
Al Sweigart jest zawodowym programistą, który uczy programo-
wania dzieci i dorosłych. Napisał kilka bestselerowych książek
o programowaniu dla początkujących, w tym: Automate the Boring
Stuff with Python, Invent Your Own Computer Games with Python
i Cracking Codes with Python (wszystkie wydane przez No Starch
Press). Jego książki są dostępne bezpłatnie w ramach licencji
Creative Commons na stronie https://inventwithpython.com/.
O REDAKTORZE TECHNICZNYM
Daniel Ratcliffe jest twórcą oprogramowania z Cambridge w Anglii.
W 2011 r. opracował mod ComputerCraft dla Minecrafta, od roku
2002 zaś tworzy gry komputerowe. O jego najnowszych projektach
można przeczytać na Twitterze i @DanTwoHundred. Do innych
jego zainteresowań należą Star Trek, jazda na rowerze i koty.
KRÓTKI SPIS TREŚCI
Podziękowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIX
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXI
Rozdział 1: Pierwsze kroki w Computercrafcie . . . . . . . . . . . . . . . . . . . . . . . . 1
Rozdział 2: Podstawy programowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Rozdział 3: Rozmowy z żółwiem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Rozdział 4: Programowanie żółwi, które tańczą . . . . . . . . . . . . . . . . . . . . . . . 43
Rozdział 5: Ulepszanie tańca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Rozdział 6: Programowanie robota-drwala . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Rozdział 7: Tworzenie modułów w celu ponownego wykorzystania kodu . . 89
Rozdział 8: Prowadzenie automatycznej uprawy drzew . . . . . . . . . . . . . . . . 107
Rozdział 9: Budowanie generatora bruku . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Rozdział 10: Tworzenie fabryki kamiennych cegieł . . . . . . . . . . . . . . . . . . . 139
Rozdział 11: Budowanie ścian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Rozdział 12: Budowanie pomieszczeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Rozdział 13: Budowanie podłóg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Rozdział 14: Programowanie automatycznej uprawy . . . . . . . . . . . . . . . . . . 207
Rozdział 15: Programowanie kopacza klatek schodowych . . . . . . . . . . . . . . 229
Zestawienie funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Zestawienie identyfi katorów nazw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Zasoby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Skorowidz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Krótki spis treści
IX
SZCZEGÓŁOWY SPIS TREŚCI
PODZIĘKOWANIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIX
WPROWADZENIE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXI
Czym są mody Minecrafta? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXII
Czym jest ComputerCraft? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXII
Jak korzystać z tej książki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIII
Co zawiera książka? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIV
Uzyskiwanie pomocy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXV
Zasoby w sieci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXVI
Co już wiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXVII
1
PIERWSZE KROKI W COMPUTERCRAFCIE . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Instalowanie Minecrafta, ATLaunchera i ComputerCrafta . . . . . . . . . . . . . . 2
Zakup Minecrafta online . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Pobieranie i instalowanie ATLaunchera . . . . . . . . . . . . . . . . . . . . . . . 2
Pobieranie i instalowanie ComputerCrafta . . . . . . . . . . . . . . . . . . . . . 5
Uruchamianie Minecrafta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Tworzenie nowego świata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Różnice między trybami gry w Minecrafta . . . . . . . . . . . . . . . . . . . . . 8
Co już wiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2
PODSTAWY PROGRAMOWANIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
Pierwsze kroki z żółwiami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Wytwarzenie kopiącego żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Uruchamianie programów żółwia w grafi cznym interfejsie
użytkownika (GUI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Tankowanie żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Poruszanie żółwiem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Pierwsze kroki w programowaniu w Lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Uruchamianie powłoki Lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Do widzenia Lua: zgłoszenia wyjścia z powłoki . . . . . . . . . . . . . . . . 24
Wykonywanie działań matematycznych w języku Lua . . . . . . . . . . . . . . . . . 24
Kolejność działań . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
To takie losowe: generowanie liczb losowych . . . . . . . . . . . . . . . . . . . 27
Przechowywanie wartości za pomocą zmiennych . . . . . . . . . . . . . . . . . . . . . . 28
Szczegółowy spis treści
XI
Sprawdzanie poziomów paliwa żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3
ROZMOWY Z ŻÓŁWIEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Uczymy żółwia jak się przywitać! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Uruchamianie programu witaj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Wypisanie wszystkich plików za pomocą polecenia ls . . . . . . . . . . . 37
Wyświetlanie tekstu za pomocą funkcji print( ) . . . . . . . . . . . . . . . . . . . . . . . 37
Typ danych łańcuchowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Łączenie łańcuchów za pomocą konkatenacji . . . . . . . . . . . . . . . . . . 38
Pobieranie nazw żółwi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Odczytywanie naciśniętego klawisza za pomocą funkcji io.read( ) . . . . . . . . 40
Dodawanie efektów do testu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Zmienianie nazw żółwi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4
PROGRAMOWANIE ŻÓŁWI, KTÓRE TAŃCZĄ . . . . . . . . . . . . . . . . . . . . . . . 43
Pisanie programu do tańczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Uruchamianie programu mydance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Używanie komentarzy w kodzie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Funkcje poruszania żółwiem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Eksperymentowanie z poruszaniem żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Korzystanie z pętli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Kręcenie żółwiem w kółko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Robienie małego podskoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Udostępnianie i pobieranie programów online . . . . . . . . . . . . . . . . . . . . . . . . 52
Usuwanie plików z żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Ograniczenia pastebin.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
turtleappstore.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5
ULEPSZANIE TAŃCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Pisanie lepszego programu do tańczenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Uruchamianie programu mydance2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Boolowski typ danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Typ danych nil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Korzystanie z pętli while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Podejmowanie decyzji dotyczących instrukcji if . . . . . . . . . . . . . . . . . . . . . . . 62
Porównywanie dwóch wartości za pomocą operatorów relacji . . . . . . . . . . . 63
XII
Szczegółowy spis treści
Podejmowanie różnych decyzji za pomocą instrukcji elseif . . . . . . . . . . . . . . 65
Zagnieżdżone bloki kodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Podejmowanie decyzji... albo else! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Ruch w górę i w dół . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Kręcenie się w kółko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6
PROGRAMOWANIE ROBOTA–DRWALA . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Wyposażanie żółwi w narzędzia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Projektowanie algorytmu ścinania drzew . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Pisanie programu choptree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Uruchamianie programu choptree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Wykrywanie bloków za pomocą funkcji turtle detection . . . . . . . . . . . . . . . . 79
Operator boolowski not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Operator boolowski and . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Operator boolowski or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Kończenie programów za pomocą funkcji error( ) . . . . . . . . . . . . . . . . . . . . . 83
Wydobywanie bloków za pomocą funkcji kopania . . . . . . . . . . . . . . . . . . . . . 84
Porównywanie bloków z za pomocą funkcji compare . . . . . . . . . . . . . . . . . . . 84
Powrót na ziemię . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Programy uruchomieniowe i funkcja shell.run( ) . . . . . . . . . . . . . . . . . . . . . . 86
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
7
TWORZENIE MODUŁÓW W CELU PONOWNEGO
WYKORZYSTANIA KODU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Tworzenie funkcji za pomocą instrukcji function . . . . . . . . . . . . . . . . . . . . . . 90
Argumenty i parametry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Wartości zwrotne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Tworzenie modułu funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Ładowanie modułu za pomocą funkcji os.loadAPI( ) . . . . . . . . . . . . . 95
Eksperymentowanie z modułem hare . . . . . . . . . . . . . . . . . . . . . . . . 95
Przeglądanie ekwipunku żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Wybieranie okienek ekwipunku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Obliczanie liczby przedmiotów w okienku . . . . . . . . . . . . . . . . . . . . . 99
Uzyskiwanie szczegółów przedmiotów z okienka . . . . . . . . . . . . . . 100
Tablicowy typ danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Sprawdzanie tabeli zwracanej przez funkcję turtle.getItemDetail( ) . . . . . 101
Zakres globalny i lokalny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Znajdowanie przedmiotu za pomocą pętli for . . . . . . . . . . . . . . . . . . . . . . . . 103
Wybieranie pustego okienka ekwipunku . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Szczegółowy spis treści
XIII
8
PROWADZENIE AUTOMATYCZNEJ UPRAWY DRZEW . . . . . . . . . . . . . . 107
Projektowanie programu do uprawy drzew . . . . . . . . . . . . . . . . . . . . . . . . . 108
Pisanie programu farmtrees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Uruchamianie programu farmtrees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Rodzaje drzew w Minecrafcie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Ładowanie fragmentów świata w Minecrafcie . . . . . . . . . . . . . . . . . . . . . . . 112
Ładowanie modułów za pomocą funkcji os.loadAPI( ) . . . . . . . . . . . . . . . . . 113
Sprawdzanie istnienia plików za pomocą funkcji fs.exists( ) . . . . . . . . . . . 114
Wybieranie sadzonek w ekwipunku żółwia . . . . . . . . . . . . . . . . . . . . . . . . . 114
Sadzenie drzewa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Sprawdzanie bloków i czekanie, aż drzewo urośnie . . . . . . . . . . . . 116
Wychodzenie z pętli za pomocą instrukcji break . . . . . . . . . . . . . . . 117
Uruchamianie innych programów za pomocą funkcji shell.run( ) . . . . . . . 118
Obsługa przedmiotów za pomocą funkcji żółwia drop . . . . . . . . . . . . . . . . . 118
Ponowne pisanie kodu, gdy brakuje mączki kostnej . . . . . . . . . . . . . . . . . . 120
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
9
BUDOWANIE GENERATORA BRUKU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Projekty generatora bruku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Konfi gurowanie pieca do wypalania bruku . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Pisanie programu cobminer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Uruchamianie programu cobminer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Konfi gurowanie programu i nadawanie zmiennej stałej wartości . . . . . . . 128
Wydobywanie bruku z generatora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Obsługa pieców . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Tworzenie czytelnego kodu za pomocą stałych . . . . . . . . . . . . . . . . 131
Wrzucanie bruku do pieców . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Zaokrąglanie liczb za pomocą math.fl oor( ) i math.ceil( ) . . . . . . . . 133
Obliczanie ilości bruku do każdego pieca . . . . . . . . . . . . . . . . . . . . . 133
Przenoszenie górnika bruku w początkowe miejsce . . . . . . . . . . . . . . . . . . . 135
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
10
TWORZENIE FABRYKI KAMIENNYCH CEGIEŁ . . . . . . . . . . . . . . . . . . . . . 139
Projektowanie programu co wytwarzania kamiennych cegieł . . . . . . . . . . . 140
Tworzenie zręcznego żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Pisanie programu brickcrafter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Uruchamianie programu brickcrafter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Konfi guracja programu brickcrafter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
XIV
Szczegółowy spis treści
Sprawdzanie paliwa żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Zbieranie kamieni z pieców . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Wytwarzanie kamiennych cegieł . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Cofanie żółwia do początkowego położenia . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Tworzenie budynku fabryki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
11
BUDOWANIE ŚCIAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Rozszerzanie modułu hare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Liczenie przedmiotów w ekwipunku za pomocą funkcji
countInventory( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Wybieranie i umieszczanie bloku . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Projektowanie algorytmu budowy ścian . . . . . . . . . . . . . . . . . . . . . . 160
Pisanie funkcji buildWall( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Pisanie i uruchamianie programu buildWall . . . . . . . . . . . . . . . . . . . . . . . . 167
Ładowanie modułu hare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Korzystanie z danych typu tablicowego . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Czytanie argumentów wiersza poleceń . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Tworzenie komunikatów obsługi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Wywoływanie funkcji hare.buildWall( ), aby zbudować ścianę . . . . . . . . . . 171
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
12
BUDOWANIE POMIESZCZEŃ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Projektowanie algorytmu budowy pomieszczenia . . . . . . . . . . . . . . . . . . . . 174
Rozszerzanie modułu hare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Obliczanie całkowitej liczby bloków potrzebnych do budowy pokoju . . . . . 177
Pisanie funkcji buildRoom( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Pisanie programu buildRoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Uruchamianie programu buildRoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Co już wiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
13
BUDOWANIE PODŁÓG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Projektowanie algorytmu obchodzenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Budowanie podłogi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Powrót od początkowego położenia . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Przekazywanie funkcji do funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Rozszerzanie modułu hare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Wywoływanie funkcji sweepFunc( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Poruszanie się wzdłuż wierszy i kolumn . . . . . . . . . . . . . . . . . . . . . 194
Szczegółowy spis treści
XV
Ustalanie za pomocą operatora modulo, czy liczba jest parzysta,
czy nieparzysta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Drogi dla szerokości parzystej i nieparzystej . . . . . . . . . . . . . . . . . . 196
Pisanie funkcji buildFloor( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Pisanie programu buildFloor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Uruchamianie programu buildFloor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Tworzenie wzorzystej podłogi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Pisanie programu buildCheckerboard . . . . . . . . . . . . . . . . . . . . . . . 200
Uruchamianie programu buildCheckerboard . . . . . . . . . . . . . . . . . 201
Pisanie funkcji placeCheckerboard( ) . . . . . . . . . . . . . . . . . . . . . . . . 203
Wywoływanie funkcji sweepField( ) . . . . . . . . . . . . . . . . . . . . . . . . . 204
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
14
PROGRAMOWANIE AUTOMATYCZNEJ UPRAWY . . . . . . . . . . . . . . . . . . 207
Konfi gurowanie pola pszenicy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Projektowanie algorytmu uprawy pszenicy . . . . . . . . . . . . . . . . . . . . . . . . . 209
Rozszerzanie modułu hare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Pisanie programu farmwheat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Uruchamianie programu farmwheat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Konfi guracja programu farmwheat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Pisanie funkcji używanych w programie głównym . . . . . . . . . . . . . . . . . . . 216
Sprawdzanie plonów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Sadzenie nasion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Przechowywanie pszenicy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Uprawa przy użyciu pętli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Wskazówki dotyczące automatyzacji innych rodzajów upraw . . . . . . . . . . . 223
Uprawa warzyw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Dojenie krów i strzyżenie owiec . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Zbieranie kurzych jajek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Uprawa kaktusów i trzciny cukrowej . . . . . . . . . . . . . . . . . . . . . . . . 226
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
15
PROGRAMOWANIE KOPACZA KLATEK SCHODOWYCH . . . . . . . . . . . . . 229
Projektowanie algorytmu kopania schodów . . . . . . . . . . . . . . . . . . . . . . . . . 231
Rozszerzenie modułu hare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Pisanie funkcji digUntilClear( ) i digUpUntilClear( ) . . . . . . . . . . . . . . . . . 236
Pisanie programu stairminer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Uruchamianie programu stairminer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Konfi guracja dla programu stairminer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Tworzenie pierwszego stopnia schodów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
XVI
Szczegółowy spis treści
Kopanie w dół . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Sprawdzanie paliwa żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Sprawdzanie ekwipunku żółwia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Kopanie w górę . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Co już umiesz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
ZESTAWIENIE FUNKCJI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
API fs (File System – system plików) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
API hare API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
API io (Input/Output) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
API API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
API os (system operacyjny) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
API shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
API string . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
API textutils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
API turtle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Funkcje budowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Funkcje tankowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Funkcje ekwipunku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Funkcje przemieszczania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Funkcje percepcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Funkcje związane z narzędziami . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Funkcje Lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
ZESTAWIENIE IDENTYFIKATORÓW NAZW . . . . . . . . . . . . . . . . . . . . . . . 261
Znajdowanie ID nazwy bloku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Rozróżnianie bloków mających takie same identyfi aktory . . . . . . . . . . . . . 263
Lista identyfi katorów nazw bloków . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
ZASADY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
SKOROWIDZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Szczegółowy spis treści
XVII
PODZIĘKOWANIA
Fakt, że na okładce jest tylko moje nazwisko, to nieporozumie-
nie. Ta książka nigdy by nie powstała, gdyby nie wysiłek wielu
osób. Chcę podziękować mojemu wydawcy, Billowi Pollockowi;
moim redaktorom prowadzącym, Janowi Cashowi i Annie Choi;
redaktorowi produkcyjnemu, Laurelowi Chunowi; recenzentowi
technicznemu, Danielowi Ratcliffe’owi; adiustatorce, Anne Ma-
rie Walker; i całemu zespołowi No Starch Press. Chciałbym rów-
nież podziękować Joshowi Ellingsonowi za świetną ilustrację na
okładce.
Dziękuję Michelle i Dougowi Rappom za wprowadzenie mnie
do Minecrafta i drzew treningowych.
WPROWADZENIE
„Jeszcze tylko trzy diamenty
i wtedy skończę” – pamiętam, jak
to sobie mówiłem, grając w Mine-
crafta. Potrzebowałem diamentów do
nowego kilofa. Kilof był mi potrzebny do wy-
dobycia większej ilości obsydianu. Obsydian
był potrzebny to zrobienia portalu Netheru.
Przez ten portal trzeba przejść, żeby zdobyć
lawę. A lawy potrzebowałem do... do czego znów potrzebowa-
łem lawy? No dobra. Rzeźbiłem ogromny posąg feniksa na zbo-
czu góry i chciałem, aby lawa wypływała z jego oczu i dzioba.
Dwie godziny później wciąż grałem i nie byłam w stanie szybko
oderwać się od tego zajęcia.
Minecraft jest grą, która uzależnia. Sprzedano około 107 mi-
lionów jego kopii, co czyni go drugą najbardziej popularną grą
wideo wszech czasów, którą pokonał tylko Tetris. Jest otwartą
platformą do gromadzenia zasobów i budowania wszystkiego, co
można sobie wyobrazić. Można budować zamki, aby chronić się
przed hordami zombie, zbierać plony i opiekować się zwierzętami
lub łączyć siły z przyjaciółmi, aby budować ogromne dzieła sztuki.
Minecraft przyciąga określone grupy: dzieci, nastolatki, a nawet
dorośli uwielbiają w niego grać.
W tej książce będziemy korzystać z modu ComputerCraft
(znanego także jako CC), aby zmienić swoje uzależnienie od bu-
dowania w nałóg kodowania. Ale czym dokładnie jest Computer-
Craft – lub mod, w tym przypadku?
CZYM SĄ MODY MINECRAFTA?
Sam Minecraft, nazywany vanilla Minecraft, to tylko początek.
Minecraft może być modyfi kowany i rozszerzany przez inne opro-
gramowanie, nazywane modami (skrót od modifi cations – mody-
fi kacje), aby dołączyć dodatkowe funkcje, takie jak bloki, środowi-
ska, przedmioty, potwory, a nawet światy, których nie ma w wersji
vanilla. Ze względu na swoją popularność Minecraft przyciągnął
jedną z największych społeczności moderów (czyli osób modyfi ku-
jących mody) ze wszystkich gier wideo.
Mody tworzone przez fanów można pobierać bezpłatnie. Nie-
które dodają eksplorację kosmosu i rakiety. Inne czarną magię
i zaklęcia. Można nawet znaleźć mody Minecrafta do tworzenia
własnego zoo z dinozaurami, sieci szybkiej kolei i pasieki do ho-
dowli pszczół. W tej książce użyjemy modu ComputerCraft, aby
nauczyć się, jak programować.
CZYM JEST COMPUTERCRAFT?
ComputerCraft to mod Minecrafta, który dodaje do gry programo-
wane żółwie. Mogą one zrobić wszystko, co zechce robić gracz: bu-
dować kopalnie, karczować drzewa, stawiać budynki, wytwarzać
przedmioty, wysiewać nasiona, doić krowy, piec ciasta i jeszcze
więcej (patrz rys. 1). Armia żółwi mających kształt pudełka może
automatycznie wykonywać wszystkie czasochłonne zadania, które
gracz musi zazwyczaj robić ręcznie.
XXII
Wprowadzenie
Rysunek 1. Żółwie ścinające drzewa (po lewej) i kopiące (po prawej)
Haczyk polega na tym, że najpierw trzeba się nauczyć pro-
gramować. Te żółwie rozumieją kod napisany w Lua (księżyc po
portugalsku), czyli języku pro gramowania używanym przez zawo-
dowych twórców oprogramowania w takich dziedzinach, jak wbu-
dowane systemy liczące i tworzenie gier wideo. Oprogramowanie
interpretera, które uruchamia skrypty Lua, ma tylko 100 KB, co
oznacza, że można je z łatwością wbudować w inne fragmenty
oprogramowania takie jak mod Minecraft. Lua jest często używa-
ny w kodzie gier wideo – na przykład w World of Warcraft, Dark
Souls, Portal 2 czy Factorio.
Mimo że Lua jest prostszy od innych języków programowania,
jest szybki i mocny. Te cechy są dla nas korzystne. Prostota Lua
sprawia, że to dobry język, aby zacząć programować nawet bez
żadnego doświadczenia.
JAK KORZYSTAĆ Z TEJ KSIĄŻKI
Aby korzystać z tej książki, trzeba nabyć kopię Minecrafta dla
Windows lub macOS, bezpłatny mod ComputerCraft oraz bezpłat-
ne oprogramowanie ATLauncher. Wszystkie instrukcje pobiera-
nia i instalacji można znaleźć w rozdziale 1.
Wpisując kod źródłowy z tej książki, nie należy pisać nume-
rów na początku każdego wiersza. Na przykład jeśli zobaczymy
następujący wiersz kodu, to nie musimy wpisywać 9. po lewej
stronie ani też jednej spacji tuż za tym:
9. print( Jak masz na imie? )
Wprowadźmy tylko to:
print( Jak masz na imie? )
Wprowadzenie
XXIII
Numery są tylko po to, aby w książce odwoływać się do okre-
ślonych wierszy programu. Nie są one częścią rzeczywistego kodu
źródłowego programu.
Czasami w kodzie zobaczymy nieponumerowane wiersze
...urywek... To wskazuje, że jakiś kod został pominięty w celu
zachowania zwięzłości. ...urywek... nie jest częścią samego kodu.
CO ZAWIERA KSIĄŻKA?
Po kilku pierwszych rozdziałach, które obejmują pojęcia dotyczące
programowania, każdy rozdział tej książki skupia się na tym, jak
napisać program, który żółw może wykonać, aby pomóc nam prze-
żyć i dobrze dawać sobie radę w Minecrafcie. Znajdziemy tu także
dodatkowe działania, które pozwalają sprawdzić nasze umiejętno-
ści programistyczne.
Oto co znajdziemy w każdym rozdziale:
• Rozdział 1: Pierwsze kroki w ComputerCrafcie pomaga
zainstalować i skonfi gurować Minecraft i mod ComputerCraft,
możemy więc zacząć programowanie.
• Rozdział 2: Podstawy programowania wprowadza nas
w podstawowe pojęcia programowania i powłokę interaktywną.
• Rozdział 3: Rozmowy z żółwiem przedstawia edytor pli-
ków, z którego będziemy korzystać, aby napisać swój pierwszy
program.
• Rozdział 4: Programowanie żółwi, które tańczą poka-
zuje, jak napisać program, aby żółwie przemieszczały się po
całym świecie Minecrafta.
• Rozdział 5: Ulepszanie tańca rozszerza program z poprzed-
niego rozdziału o kilka nowych instrukcji programowania.
• Rozdział 6: Programowanie robota-drwala przedstawia
program, który sprawia, że żółwie ścinają drzewo i zbierają
drewno.
• Rozdział 7: Tworzenie modułów w celu ponownego wy-
korzystania kodu uczy nas, jak napisać kod i wykorzystywać
go w wielu programach.
• Rozdział 8: Prowadzenie automatycznej uprawy drzew
rozszerza program z rozdziału 6, tak aby można było utworzyć
XXIV
Wprowadzenie
w pełni zautomatyzowaną uprawę oraz aby żółwie mogły
uzyski wać drewno z wielu drzew.
• Rozdział 9: Budowanie generatora bruku przedstawia
program do wydobywania nieograniczonej ilości bruku, które-
go żółwie będą używać jako budulca w rozdziałach od 10 do 13.
• Rozdział 10: Tworzenie fabryki kamiennych cegieł po-
kazuje program, który zmienia bruk z rozdziału 9 w kamienne
cegły.
• Rozdział 11: Budowanie ścian zawiera program, z którym
używamy kamiennych cegieł do budowania ścian.
• Rozdział 12: Budowanie pomieszczeń zawiera program,
który pozwala łączyć ściany, aby budować pomieszczenia.
• Rozdział 13: Budowanie podłóg przedstawia program do
budowania podłóg i sufi tów dla naszych pomieszczeń.
• Rozdział 14: Programowanie automatycznej uprawy za-
wiera program, który sprawia, że żółwie uprawiają i zbierają
różne rośliny, aby można się było nimi odżywiać.
• Rozdział 15: Programowanie kopacza klatek schodo-
wych przedstawia program, który wykopuje schody głęboko
w ziemi, aby można było wydobywać rudę i inne cenne bloki.
• Lista Zestawienie funkcji zawiera wszystkie funkcje z tej
książki wraz z wyjaśnieniem, jak z nich korzystać.
• Lista Zestawienie identyfi katorów nazw zawiera po-
wszechnie stosowane bloki oraz elementy Minecrafta wraz z ich
identyfi katorami, które będziemy stosować do identyfi kacji
rodzajów bloków i innych elementów w naszych programach.
UZYSKIWANIE POMOCY
Minecraft jest znany z braku instrukcji dla nowych graczy. Nie
ma on podręcznika ani nawet menu z pomocą. Minecraft zmusza
nas do nauki na własną rękę. Trzeba przeszukiwać internet, sta-
wiać pytania, znajdować na nie odpowiedzi, a czasami zwyczajnie
przeprowadzić proste eksperymenty. Minecraft rozwija myśle-
nie u graczy. Nawet po wpadnięciu do lawy lub zniszczeniu fun-
damentów przez pnącze gracze powracają zdeterminowani, aby
dowiedzieć się, jak pokonać te problemy.
Wprowadzenie
XXV
Ta książka dotyczy jednak modu ComputerCraft, a nie pod-
staw grania w Minecrafta. Aby móc z niej korzystać, trzeba już
wiedzieć, jak w Minecrafcie:
• wydobywać rudę, kamienie, pozyskiwać drewno i inne bloki;
• zrobić stół do warsztatu i narzędzia, takie jak siekiera, łopata,
pochodnia i kilof;
• zrobić palenisko, rozpalić go, a potem przetopić bloki rudy lub
ugotować na nim mięso;
• zrobić schody, drabiny, skrzynie, drzwi, płoty i inne części,
z których będziemy korzystać przy budowie;
• zasiać nasiona i uprawiać żywość.
Jeśli nie wiesz, jak to wszystko zrobić, to nie martw się. Mo-
żesz się tego dowiedzieć, przeglądając internet. Wejdź do wybra-
nej przez siebie przeglądarki i wpisz słowo minecraft wraz z tym,
czego chcesz się nauczyć. Na przykład możesz wpisać do wyszu-
kiwarki takie hasła, jak minecraft przetapianie rudy, minecraft
pieczenie ciasta lub nawet samo minecraft podręcznik, aby znaleźć
potrzebne informacje. Możesz także poszukać podręczników wideo
do Minecrafta na stronach takich jak https://www.youtube.com/,
używając tych samych haseł jak w przeglądarce.
Jak wspomniałem wcześniej, ponieważ ComputerCraft nie
jest dziełem tych samych osób co Minecraft, większość witryn
z Minecraftem nie zawiera informacji o CC. Na temat CC można
się dowiedzieć z ComputerCraft Wiki na stronie http://www.com-
putercraft.info/wiki/. Jeśli masz pytania dotyczące CC, to mo-
żesz założyć bezpłatne konto na forum ComputerCraft na stronie
http://www.computercraft.info/forums2/. Jeśli masz dodatkowe
pytania odnośnie do programów z tej książki, możesz też wy-
słać post do społeczności na stronie https://www.reddit.com/r/
turtleappstore/.
ZASOBY W SIECI
Wszystkie programy z tej książki można pobrać bezpośred-
nio z poziomu gry Minecraft (instrukcje podano w punkcie
„Udostępnianie i pobieranie programów online” na stronie 52).
I mimo że Minecraft nie obsługuje kopiowania i wklejania tek-
stu spoza gry, cały kod oraz źródła dla tej książki są dostępne
w witrynie towarzyszącej tej książce, https://www.nostarch.com/
XXVI
Wprowadzenie
codingwithminecraft/1. Tam możesz również pobrać kod dodat-
kowych zadań, jeśli utkniesz lub chcesz sprawdzić rozwiązania!
Znajdziesz tam również odnośniki do plików instalacyjnych
(szczegółowe instrukcje instalacji można znaleźć w rozdzia-
le 1). Jeśli chcesz analizować inne programy lub udostęp-
niać swój kod, to możesz to zrobić za pośrednictwem https://
turtleappstore.com/, czyli bezpłatnej witryny do skryptów Com-
puterCrafta (szczegóły na stronie 53, „turtleappstore.com”).
CO JUŻ WIESZ
Minecraft jest grą komputerową, w którą można grać na wiele
sposobów. Przyciąga ona różnorodny tłum graczy. W tej książce
nauczymy się, jak budować więcej w krótszym czasie, korzystając
z ComputerCrafta – modu, który pozwala programować żółwie
w języku Lua. Ucząc się, jak programować przy użyciu Lua i CC,
można automatyzować wiele zadań, które w innym przypadku
trzeba robić samodzielnie, takich jak wydobywanie, uprawianie,
budowanie i wytwarzanie.
Korzystając z Minecrafta oraz ComputerCrafta, rozwiążemy
samodzielnie problemy, a przy okazji nabędziemy podstawowe
umiejętności programistyczne.
Zaczynamy!
1 Na tej stronie dostępne są oryginalne materiały autora, natomiast programy w wersji
częściowo spolszczonej można pobrać z witryny WN PWN pod adresem http://smartkids.
pwn.pl/material/kodowanie-z-minecraftem/.
Wprowadzenie
XXVII
1
PIERWSZE KROKI
W COMPUTERCRAFCIE
Zanim zaczniemy programowanie
automatycznych żółwi, które speł-
nią nasze rozkazy, musimy zainstalo-
wać Minecrafta oraz mod Computer-
Craft. Na szczęście bezpłatne oprogramo-
wanie ATLauncher powoduje, że ten proces
przebiega gładko. W tym rozdziale pokażę,
jak uzyskać Minecrafta i mod Computer-
Craft, a następnie przeprowadzę was przez
wszystkie kroki konfi guracji, które trzeba
wykonać przed rozpoczęciem programowania.
INSTALOWANIE MINECRAFTA, ATLAUNCHERA
I COMPUTERCRAFTA
Konfi gurowanie modów Minecrafta jest zwykle skomplikowane,
ponieważ wiąże się z wieloma złożonymi krokami. Teraz można
jednak skorzystać z oprogramowania ATLauncher, aby łatwiej
ładować mody do Minecrafta. Ponieważ Minecraft, ATLauncher
i ComputerCraft zostały stworzone przez różne grupy ludzi, pro-
gramy trzeba oddzielnie pobrać i zainstalować. Wszystkie trzy są
dostępne dla systemów operacyjnych Windows, macOS i Ubuntu,
lecz mod ComputerCraft nie jest dostępny dla Minecrafta na urzą-
dzeniach ani na platformach mobilnych Xboxach czy PlayStation.
Mody działają tylko dla Minecrafta w wersji Java Edition,
która jest także nazywana wersją Windows Minecrafta. Wersja
Minecrafta dla systemu Windows 10 nie obsługuje jednak modów,
lecz ich nową postać nazywaną dodatkami (add-ons). Ale bez oba-
wy! Będziemy korzystać z ATLaunchera, aby pobierać i instalo-
wać właściwe wersje Minecrafta.
ZAKUP MINECRAFTA ONLINE
Chociaż ATLauncher i ComputerCraft są bezpłatne, Minecraft
jest sprzedawany przez Mojang (teraz jego właścicielem jest Mi-
crosoft). Można go kupić za pośrednictwem internetu na stronie
https://www.minecraft.net/ po utworzeniu bezpłatnego konta
Mojang. Po dokonaniu zakupu nie należy pobierać Minecrafta
z jego witryny. Zamiast tego użyjemy oprogramowania ATLaun-
cher, aby pobrać i zainstalować Minecrafta na komputerze. (Jeśli
masz już zainstalowanego Minecrafta, to dalej postępuj według
instrukcji instalowania Minecrafta przy użyciu ATLaunchera.)
UWAGA Dbaj o bezpieczeństwo i tajność swojego konta Mojang. Nie udo-
stępniaj go swoim przyjaciołom lub ludziom, którzy twierdzą, że
są pracownikami Mojanga. Używaj go tylko do logowania się do
programu ATLauncher lub do witryny https://www.minecraft.
net/ i żadnych innych. Jeśli uważasz, że ktoś mógł zalogować się
do twojego konta, to natychmiast zmień swoje hasło.
POBIERANIE I INSTALOWANIE ATLAUNCHERA
Program ATLauncher ułatwia dodawanie modów do Minecrafta.
Na rysunku 1.1 pokazano, jak pobierać go bezpłatnie ze strony
2
Rozdział 1
Pobierz darmowy fragment (pdf)