Как сделать транзистор в майнкрафте
как создать настоящий компьютер в Minecraft: о возможностях красного камня
Энтузиасты и профессионалы строительства в знаменитой Minecraft ударными темпами двигают эту популярную игру к новым высотам. И вполне успешно, надо сказать. Недавно геймеры умудрились смоделировать в игре рабочие компоненты компьютера. Проще говоря, создали почти компьютер внутри компьютера.
На днях дуэт особо продвинутых Майнкрафт-мастеров официально объявил о создании в игре функциональных жестких дисков, которые способны считывать и записывать данные. Один из таких дисков (придуманный юзером smellystring) может сохранять до 1KB данных, а еще один — творение The0JJ — до 4KB. В этой связи уже появилось мнение, что теперь СкайНет и Матрица — не такая уж и фантастика. По крайней мере, день, когда появятся первые виртуальные модели полнофункциональных вычислительных машин, подчиняющиеся законам физического мира, точно стал ближе.
На самом деле, в Майнкрафт игроки уже давно работали над созданием внутриигровых компьютеров, точнее так называемых алгоритмических логических устройств. В игре строились гигантские виртуальные конструкции, основанные на бинарной логике вычислений и имитирующие основные компоненты настоящих компьютеров. В основе такого рода изобретений — один из компонентов, который в Minecraft называется «красный камень» (redstone), и благодаря которому энергией можно «заряжать» различные устройства. Т.е. схемы из «красного камня» — это нечто вроде аналога электрических цепей в реальном мире (подробнее о Майнкрафт в двух измерениях).
Каким образом удалось использовать возможности Redstone для создания устройств хранения данных в Майнкрафт? «Камень» применяется для приведения в действие поршней, воспроизводящих истинные и ложные значения двоичной системы, обычно представляемые 1 и 0. Принцип действие устройства его создатели иллюстрируют вот такой анимашкой:
По сути, за счет большого количества таких поршней, циклично перенаправляющих сигнал «красного камня» между твердым и пустым блоками, пользователь килобайтного диска может сохранять данные в двоичном коде, используя твердый блок как 1, а пустой — как 0.
Однако не может не возникать еще один вопрос, и даже два: что это за данные и каким образом их можно использовать в Minecraft? Тема, безусловно, интересная, хотя по понятным причинам и малоизученная. Тем не менее, кое что уже можно спрогнозировать. К примеру, так как в Майнкрафт запасы того или иного игрока сохраняются в виде игровых данных различного объема, то сам геймер описанным способом вполне мог бы сохранить тестовый или даже аудиофайл, если имеющийся в его распоряжении виртуальный диск будет достаточно вместительным и он найдет возможность преобразовать информацию в двоичный код. По словам одного из создателей жесткого диска в Minecraft, метод подходит для сохранения любой информации, в объеме пока только до 1KB.
В общем, у любителей Майнкрафт, а также у всех знатоков современной компьютерной науки и логики появился еще один повод для размышлений.
В своем посте один из геймеров как-то написал: «Однажды мы построим настоящий компьютер в Minecraft, чтобы играть на нем в Minecraft. И после этого Вселенная рухнет». Но дело в том, что и это стало реальностью: 2D-версия Майнкрафт, где в Minecraft можно играть на Редстоун-компьютере, уже существует.
Настоящий компьютер в Майнкрафте
План:
Вступление
Здравствуйте, в этой статье я подробно расскажу о том, как можно собрать свой собственный 4-битный сумматор в игре «майнкрафт». Так что если вы далеки от радиоэлектроники, это отличный шанс узнать для себя что-то новое. WELCOME.
Логические операторы
Не для кого не секрет, что все процессы, которые протекают в компьютере это пачки логических нулей «0» и единиц «1». Но несмотря на такой скудный набор параметров это неплохой способ для управления всеми необходимыми компонентами компьютера.
0 (логический ноль) — тока нет
1 (логическая единица) — ток есть
ток есть и тока нет 😀 но только в майнкрафте
Основных всего 3, а нам больше и не понадобится.
1. Оператор «НЕ»
потом я эту деревню взорвала пока думала
Если на входе у нас нет тока, то на выходе ток будет. И наоборот, если на входе ток есть, то на выходе его не будет.
2. Оператор «ИЛИ»
Тоже простой оператор, в котором есть два входа по которым может идти ток, и какой бы рычаг мы не включили лампочка всегда будет гореть. То есть «или-или». При этом она так же будет работать если оба провода будут пропускать ток. И не работать если тока в них нет.
3. Оператор «И»
Данный оператор немного посложнее. Его реализация в майнкрафте выглядит вот так. Суть в чем: у него есть два входа по которым может идти ток, но лампочка загорится только в том случае, если оба провода будут проводить ток и никак иначе
Вот и всё, что нам понадобится для того, чтобы собрать сумматор любой битности.
Четверть сумматор
Начнём с простого четвертьсумматора. Эта штука может суммировать числа без переноса в следующий разряд. То есть без переноса десятка.
У нас есть два входа, которые будут представлять из себя два числа, которые будут суммироваться между собой. Если лампочка горит значит сумма = 1, если лампочка не горит значит = 0.
1+1 = 10 ( но так как переноса десятка нет на выходе мы получаем логический 0 )
Она очень простая и придумать её может каждый. При суммировании единицы и нуля мы получаем единицу, при суммировании двух единиц мы получаем «ноль». Разумеется, без переноса десятка.
Воссоздав всю эту схему в майнкрафте, используя логические операторы рассмотренные ранее, мы можем получить готовый и полностью рабочий четвертьсумматор:
0 + 1 = 1
Но это лишь четвертьсумматор. Давайте соберём машину, которая сможет переносить десяток.
Полусумматор
Но реализовать перенос дело тоже не геморрное, и если посидеть подумать, то можно быстро его собрать.
У меня получилась такая схема:
выполнено в бесплатной программе logisim
Немного пошаманив с редстоуном мы получаем готовый полусумматор:
Четырёхбитный сумматор
Разберём принцип по которому оно все будет соединяться:
сделано в paint
Это общий вид и как всё это дело должно подключаться. То есть вместо второй лампочки мы просто ведём наш провод и используем его в качестве «земли». Я это покажу на примере своей схемы:
Подключая таким последовательным образом мы увеличиваем битность нашего сумматора. То есть да, так можно делать до бесконечности.
Итоговая схема получается большая поэтому сюда я её не размещу (если размещу, всё равно ничего не будет понятно), но давайте посмотрим, что вышло в майнкрафте.
Вот так это всё у меня выглядит.
Сразу обращаю внимание на то, что я вывела все лампочки в правильном порядке, чтобы оно имело читабельный для человека вид.
Обращайте внимание на редстоун, потому что у него органичная дальность работы. Где-то 15 блоков от рычага. Так что ставьте повторители.
считает он правильно. Так что смело собирайте 🙂
Заключение
Как итог могу сказать, что майнкрафт это отличная среда для подобных поделок. По крайней мере попробовать стоит.
Благодарю всех, кто дочитал эту статью до конца. В дальнейшем я выпущу ещё одну, но только уже про самодельный компьютер с шифратором, сумматором и дешифратором, а пока всем до свидания.
[Guide] Самые важные механизмы в майнкрафте
Я расскажу тебе о самых популярных механизмах в майнкрафте. Как бы не было грустно, но большинство игроков до сих пор не пользуются никакими механизмами. А зря. Они помогут вам упростить жизнь и выживание в майнкрафте, пофаниться, в конце концов, просто сэкономить ваше время.
Начнем.
Ставим липкие поршни и редстоун так, как я поставил на скрине.
Так же и с другой стороны. Проводим редстоун так, чтобы он активировал все поршни.
Соединяем редстоун под конструкцией.
Ставим липкий поршень
Ставим блок редстоуна.
Самое время красиво обнести всю конструкцию блоками. Смотрите, чтобы не прерывалась линия редстоуна.
Проводим линию редстоуна от кнопки.
Ставим вторую кнопку.
Ведем ее к тому же месту, но с другой стороны.
Опускаем на 1 блок конструкцию снизу.
Ставим поршень липкий, как показано на картинке.
Проводим редстоун к поршню (от 2-ой кнопки)
Все готово. Если ничего не работает, то кто-то криворукий, т.к. у меня все работает. Смотрим внимательно на скриншоты и читаем инструкцию-пояснения под ними. Удачи в постройке. Надеюсь, тут все понятно.
А теперь, рассмотрим другую конструкцию ворот. Такие ворота будут закрываться на ночь, защищая вас от монстров, и открываться днем. Как ни странно, строятся они легче, чем обычные ворота.
Ставим липкие поршни, как показано на картинке.
Повторяем с другой стороны.
Ставим на поршни детекторы солнечного света.
Обносим всю конструкцию блоками. Не закройте детекторы! Ночью ворота закрыты.
Полуавтоматическая ферма кактусов и тростника. Автоматическую ферму делать гораздо сложнее, нужны моды, поэтому не рассматриваем этот вариант. Смотрим, как строится полуавтоматическая.
Ясен цапень, нужен фундамент.
Ставим на блоки липкие поршни так, как показано на картинке.
Делаем для кактусов с другой стороны. Проводим редстоун.
Сажаем тростник и ставим кнопку.
Строим, как на картинке. Не забудьте поставить блоки с боков фермы, чтобы арбузы и тыквы не росли вбок.
Редстоун + кнопка, и повторитель для длинных ферм.
Строим полуавтоматическую пшеничную ферму. Можно и морковку сажать с картошкой. Не суть. Она посложнее будет.
Строим все так же, как и на картинке.
1) Яма, куда будет сбрасываться урожай.
2) Соединяем поршни с рычагом, используя редстоун и повторители.
(Как соединить поршни)
Освещаем все это дело. Вырываем где-то сбоку канаву. Воду туда.
ВАЖНО
1) Длину каждого уровня (1 блок высота) регулируйте сами.
2) Ширину тоже.
3) Не пускайте воду слишком долго. Грядки смоются и вам придется заново их вспахивать.
Клевая ловушка для игры на сервере. Построили вы дом, к вам гости ходят в алмазной броне и вас убивают. Что делать? Нет денег для торговли, но нужно позарез кое-что купить! Что делать?
Думаете это обычный дом? Нееет.
Это ловушка, она заставит ваших недругов материться долго и красочно.
Липкие поршни + редстоун и повторители, если нужно.
С другой стороны. Соединить и рычаг поставить. Готово.
Полноценный процессор в Minecraft: как он работает, как на нем программировать и для чего он?
Все, наверное, знают, что в песочнице Minecraft можно делать абсолютно всё. Различные цифровые схемы и процессоры создают в Minecaft уже с давних пор. Но тот процессор, о котором я пишу, на самом деле уникален! Его название — DjCPU8.
Почему он уникален? По многим причинам. Давайте по порядку:
1) Скорость работы. Это пока самый быстрый процессор такого уровня в Minecraft. Одна инструкция выполняется примерно 1 секунду.
2) Количество памяти. Оперативной памяти аж 256 байт. Не знаю других ЭВМ с таким объемом памяти.
3) Вычислительные способности. 42 инструкции. Работает с арифметикой, логикой, стеком, вводом/выводом, регистрами и т.д.
4) Ассемблер. В других процессорах нужно вводить программу в двоичном виде. Но в DjCPU8 можно вводить ее текстом.
5) Простота. Ни с какой другой ЭВМ невозможно так просто и приятно работать.
6) Широта применения. Порты ввода/вывода можно создавать в любом месте.
Характеристики процессора DjCPU8:
1) Разрядность — 8 бит;
2) Архитектура Фон Неймана;
3) RAM 256 байт;
4) Без тактового генератора. Среднее время выполнения операции — 1 сек;
5) Стек данных — 9 байт;
6) 2 регистра общего назначения (РОН);
7) 42 инструкции;
8) Система ошибок;
9) 1 пользовательский ввод;
10) 16 портов вывода;
11) Ассемблер.
Анатомия процессора
На картинке разными цветами показаны функциональные блоки в процессоре:
— ОЗУ
— Устройство управления (УУ)
— Устройство чтения/записи ОЗУ
— устройство подачи сигнала на чтение инструкции, ее декодирование и обнуление необходимых регистров.
— вывод в порты вывода
— физически реализованный ассемблер
— стек
— система обнаружения ошибок
— различные вычислительно-преобразовательные блоки.
И еще есть несколько мелких блоков.
Дабы вас не утомлять, этот подзаголовок будет очень коротким.
Так как архитектура DjCPU8 фоннеймановская, то ясно, что инструкции и данные находятся в одной памяти. В момент запуска процессора сразу происходит полный сброс всех регистров и стека. Затем устройство подачи сигналов (выделен голубым цветом) подает сигнал на чтение данных из ОЗУ. Полученное число интерпретируется как инструкция. Это число подается на УУ (желтый цвет), где происходит выполнение инструкции.
Давайте возьмем для примера инструкцию load. Эта инструкция читает число из памяти и помещает его в регистр А. Итак, сначала мы прочитали из памяти число 3. Число 3 подается в УУ. УУ декодирует это число и понимает, что это инструкция load. Затем УУ начинает выполнять заданную последовательность действий. Сначала значение регистра программного счетчика увеличивается на 1. Затем читается второе число, которое интерпретируется как адрес. Допустим, адрес равен 4. Потом УУ посылает сигнал на чтение третий раз. Достается число из ячейки 4. Это число помещается в регистр А. Подается сигнал на чтение следующей инструкции. Всё, инструкция выполнена. Только представьте, за одну секунду процессор успел обратится к памяти 3 раза!
Есть инструкции сложные, и есть простые. Чем проще инструкция, тем быстрее она выполняется. Но средняя скорость примерно равна 1 Hz.
Как на нем программировать?
Вот небольшая табличка с описанием всех инструкций:
0 stop — Остановка ЦП
1 load RAM — Читает число из RAM и помещает его в А
2 loadC const — Помещает конкретное число const в А
3 store RAM — Сохраняет А в RAM
4 rand — Генерирует случайное число в A (0..255)
5 add RAM — К значению А прибавляет значение из RAM
6 sub RAM — От значения А отнимается значение из RAM
7 mult RAM — Умножает А на значение из RAM
8 div RAM — Делит А на значение из RAM
9 and RAM — Побитовая операция “И”: A и значение из RAM
10 or RAM — Побитовая операция “ИЛИ”: A и значение из RAM
11 not — Побитовая операция “НЕТ” А
12 2x — Делит А на 2
13 x/2 — Умножает А на 2
14 compare RAM — F = А — RAM
15 jump to A — Безусловный переход к ячейке, адрес которой в А
16 del RAM — Очищает ячейку в RAM
17 say — Выводит в чат значение A
18 A-R1 — Пересылка из A в R1
19 A-R2 — Пересылка из A в R2
20 R1-A — Пересылка из R1 в A
21 R2-A — Пересылка из R2 в A
22 inc — Увеличиват А на 1
23 dec — Уменьшает А на 1
24 push — Переместить число из А в стек
25 pop — Переместить число из стека в А
26 pushC const — Засунуть const в стек (А становится равный const)
27 in — ЦП на паузу, читает число из порта чтения в А
28 out — Пересылка числа из А в порт Port
29 setPort const — Установка значения порта Port в const
30 print — Посылает число в порт Port 0
31 jump const — Безусловный переход в ячейку const
32 jump if A const — Если A > 0 переход в ячейку const, иначе к следующей ячейке
33 jump if F const — Если F ≠ 0, переход в ячейку const, иначе — к следующей ячейке
34 jump If not F const — Если F = 0, переход в ячейку const, иначе — к следующей ячейке
35 storeR1 — Сохраняет значение А в памяти по адресу, которое в R1
36 storeR2 — Сохраняет значение А в памяти по адресу, которое в R2
37 loadR1 — Загружает значение по адресу R1 в А
38 loadR2 — Загружает значение по адресу R2 в А
39 incR1 — Увеличивает значение R1
40 decR1 — Уменьшает значение R1
41 incR2 — Увеличивает значение R2
42 decR2 — Уменьшает значение R2
Об инструкциях. Их есть два типа — с параметром и без. Параметр должен быть в следующей ячейке после инструкции. Например, loadC это инструкция с параметром. Следующее число 123 как раз параметр для loadC. А что делает loadC? Эта инструкция берет число и помещает его в регистр А. Итак, процессор загрузил число 123. Что дальше? А дальше он может делать с этим числом что угодно! Например, вывести число в чат. Команда say как раз так и делает.
А теперь о параметрах. Их тоже есть два типа — const и RAM. Параметр const — это просто конкретное число. Команда loadC как раз требует конкретное число. А параметр RAM уже более интересный. Это не просто число, это адрес места, откуда нужно достать число. Итак:
В отличии от предыдущей, эта программа будет работать совсем по другому! Инструкция load имеет другой тип параметра — RAM. Поэтому число 123 уже является адресом. Что же произойдет? Процессор, вместо того чтобы удовлетворится числом 123, теперь уже лезет в память и по адресу 123 достает число. Но так как мы туда ничего не записывали, то он достанет ноль. После выполнения этой программы регистр А станет равным нулю. Понятно?
Больше вы узнаете из моего руководства.
И вот еще более удобная табличка.
Для чего я создал этот процессор?
Заметил, что многие задают этот вопрос. И даже дополняют — «мог бы лучше деньги зарабатывать».
Ответ прост — это приносит мне удовольствие. Кто-то развлекается тем, что ПвПшит в Доту, кто-то рисует, кто-то программирует, а я делаю процессор.
И плюс к этому, во время создания своего процессора я понял, как же на самом деле работает настоящий процессор.