Редстоун у Minecraft діти зазвичай освоюють як набір трюків: тут двері відчиняються, тут лампа загоряється. Трюки працюють, але не складаються — варто змінити умову, і схему доводиться вигадувати заново. Складаються вони тоді, коли за ними видно логіку: ту саму, з якої потім збирається будь-яка програма.
Логічних схем усього кілька, і кожна відповідає на просте питання про сигнали. Нижче — довідник із них: що кожна робить, з чого збирається і де її видно у звичайній грі. Це той матеріал, після якого дитина перестає копіювати чужі конструкції з відео і починає складати свої.
Спочатку про сам сигнал
Редстоуновий пил передає силу сигналу від 15 до нуля, а не просту відповідь «є струм чи немає». На кожному блоці шляху сила падає на одиницю, тому доріжка довша за п'ятнадцять блоків гасне сама собою. Повторювач повертає сигналу повну силу і заодно пропускає його тільки в один бік.
| Деталь | Що робить |
|---|---|
| Редстоуновий пил | веде сигнал, втрачаючи одиницю на блок |
| Редстоуновий факел | горить, поки блок під ним не під напругою |
| Повторювач | підсилює до 15, пропускає в один бік, додає затримку |
| Компаратор | порівнює два сигнали або віднімає один з іншого |
| Важіль, кнопка, пластина | джерела сигналу з різною поведінкою |
| Редстоуновий блок | постійне джерело на 15 |
Найважливіший рядок тут — про факел. Він поводиться задом наперед: світиться, коли сигналу немає, і гасне, коли сигнал приходить. Саме ця «неправильність» робить його головною деталлю всієї логіки.
НЕ: перевертач
Поставте факел на бічну грань блока і подайте на цей блок сигнал. Факел згасне. Приберіть сигнал — загориться знову. Це і є схема НЕ: на виході завжди протилежне тому, що на вході.
Сама по собі вона потрібна рідко, зате без неї не збирається нічого іншого. Корисний побутовий приклад: двері, які стоять відчиненими і зачиняються при натисканні кнопки, замість звичного навпаки.
АБО: просто з'єднати
Найпростіша схема взагалі не потребує деталей. Зведіть дві доріжки пилу в одну — і сигнал піде далі, якщо працює хоч одне джерело. Світло в кімнаті, яке вмикається двома різними важелями біля двох дверей, — це вже схема АБО, навіть якщо будівник про неї не думав.
І: обидва разом
Тут починається цікаве. Прямого способу сказати «пропусти, тільки якщо обидва» в грі немає, і його збирають обхідним шляхом: перевернути кожен вхід окремо, з'єднати перевернуті, а результат перевернути ще раз.
Звучить заплутано, але перевіряється на пальцях. Якщо увімкнені обидва важелі, обидва перші факели згасли, у спільну доріжку не йде нічого, останній факел горить — сигнал є. Варто вимкнути один важіль, і його факел спалахне, подасть напругу на спільну лінію, останній факел згасне — сигналу немає. Рівно те, що потрібно.
Цей прийом — перевернути, об'єднати, перевернути — варто показати окремо. Це перший випадок, коли дитина будує не копію побаченого, а конструкцію з правила, і працює те саме правило в програмуванні.
Таблиця схем
| Схема | Сигнал на виході, коли | З чого збирається |
|---|---|---|
| НЕ | на вході нічого немає | факел на блоці |
| АБО | працює хоч один вхід | дві доріжки в одну |
| І | працюють обидва входи | два НЕ, АБО, ще одне НЕ |
| НЕ-АБО | не працює жоден | АБО плюс факел |
| НЕ-І | працюють не обидва | І плюс факел |
| XOR | працює рівно один | АБО і НЕ-І, зведені через І |
Остання схема — виключне АБО — найкорисніша в побуті й найчастіше потрібна дітям, хоча вони про це не здогадуються. Це двері, які відчиняються важелем і зсередини, і зовні: натиснули будь-який один — відчинилися, натиснули другий — зачинилися. Логіка тут саме «рівно один», а не «хоч один».
Збирається вона з уже знайомих частин: окремо рахуємо «хоч один увімкнений» і окремо «увімкнені не обидва», а потім вимагаємо, щоб виконалося і те, і те. Коли дитина один раз пройде цей ланцюжок сама, решта схем перестають бути магією.
Поршень, лампа і двері: куди це все веде
Логіка сама по собі нічого не робить — вона тільки вирішує, пускати сигнал чи ні. Далі потрібен виконавець, і їх небагато: лампа світиться, двері відчиняються, поршень штовхає блок, роздавач кидає предмет, динаміт вибухає. Будь-яку схему можна перевірити на лампі, а потім підставити на її місце що завгодно інше — вхід у виконавця однаковий.
Порядок роботи з цього і складається: спершу зібрати логіку й переконатися на лампі, що вона міркує правильно, і тільки потім чіпляти поршні з дверима. Діти зазвичай роблять навпаки — одразу будують красивий механізм, у ньому щось не працює, і незрозуміло, де саме: у логіці чи в тому, як поставлений поршень. Розділити ці два шари — половина успіху.
Затримка і пам'ять
Повторювач, окрім підсилення, дає затримку: його можна клацнути до чотирьох положень, кожне додає трохи часу. З цього збираються послідовності — коли одна дія має відбутися після іншої, а не разом з нею.
Два повторювачі, спрямовані один на одного, дають схему з пам'яттю: вона запам'ятовує, який сигнал прийшов останнім, і тримає його після того, як кнопку відпустили. Це рівно та ідея, яку в програмуванні називають змінною — місце, де зберігається стан. Для дитини корисно побачити її спочатку в блоках: далі слово «змінна» на уроці Python не викликає порожнечі в очах.
Компаратор: коли важливо не «є», а «скільки»
Усі схеми вище відповідають на питання «так чи ні». Компаратор працює з величиною: він дивиться на силу сигналу і вміє порівнювати її з бічною або віднімати бічну з основної. Перемикається між двома режимами клацанням, і видно це по вогнику спереду.
Найнаочніше його застосування — скриня. Поставте компаратор упритул до скрині, і він видасть сигнал тим сильніший, чим повніша скриня. Порожня дає нуль, одна річ — одиницю, забита по вінця — п'ятнадцять. Звідси збирається сортувальник, сигналізація «склад заповнений» і лічильник предметів у фермі.
Для дитини це важливий перехід: раніше сигнал був перемикачем, а тепер став числом, яке можна порівнювати. У програмуванні ця ж різниця живе між перевіркою «файл існує» і перевіркою «у списку більше десяти елементів».
Як перевіряти схему, не вгадуючи
Коли схема не працює, більшість дітей починають переставляти блоки навмання. Швидше інший шлях, і він теж повністю переноситься в програмування: перебрати всі можливі стани входів по порядку.
У схеми з двома важелями таких станів рівно чотири: обидва вимкнені, перший, другий, обидва. Пройдіть їх по черзі й запишіть, що на виході. Три правильні відповіді з чотирьох одразу показують, у якому саме місці ламається логіка, і далі шукати доводиться не по всій конструкції, а в одному вузлі.
Звичка пробувати всі варіанти, а не той один, який спав на думку, — чи не найкорисніше, що редстоун дає до програмування. Саме так потім перевіряють код.
Три речі, через які схема не працює
Перша: сигнал згас дорогою. Доріжка довша за п'ятнадцять блоків без повторювача просто не доносить напругу, і виглядає це так, ніби зламалася кінцева деталь. Якщо схема перестала працювати після того, як її подовжили, — справа майже завжди в цьому.
Друга: сигнал пішов назад. Пил проводить в обидва боки, і дві сусідні схеми починають впливати одна на одну. Повторювач пропускає тільки вперед, і одна така деталь на виході кожного вузла знімає більшість таких загадок.
Третя: факел згорів. Якщо схема перемикається занадто швидко сама на себе, факел починає блимати і на якийсь час вимикається зовсім — гра захищається від нескінченного циклу. Поява такого блимання майже завжди означає, що вихід схеми випадково заведений на її ж вхід.
Коли логіка зрозуміла, наступний крок — зібрати на ній щось працююче: ферму, двері з паролем, лічильник. Команди для цього є в довіднику команд, назви потрібних блоків — у довіднику ID, а як це пов'язано з текстовим кодом, розібрано в матеріалі про Python у Minecraft.