Minecraft 2 на C# (20 строк кода)

в 8:37, , рубрики: 30 строк, game development, ненормальное программирование, метки: , , ,

Уважаемые читатели, прошу обратить внимание что это «ненормальное программирование» во избежании недопониманий.

Для тех кто видел мою предыдущую версию Minecraft сразу скажу, что это не развитие предыдущего безумия, это совершено новое и еще более безумное безумие, детали которого я раскрою под катом. В этот раз я старался вести себя поспокойнее и исправно пил лекарства чтобы санитары незападозрили неладное.
Для тех же кому понравился сам Minecraft я тоже приготовил сюрприз, добавил огонь, который так просили некоторые читатели.

В игре присутствуют следующие блоки:

  • Воздух
  • Земля
  • Огонь (с анимацией)
  • Вода
  • Любовь Лестница
  • Коренная порода

Возможности:

  • Вода растекается и тушит огонь
  • Огонь поджигает лестницы
  • Гравитация
  • Создание блоков
  • Разрушение блоков земли

Картинка для привлечения внимания:

Minecraft 2 на C# (20 строк кода)

Управление:

  • W S A D — движение персонажа
  • W S A D + Shift — удаление блоков в соответствующем направлении
  • 1 2 3 4 5 — создание блоков воздуха, земли, лестницы, воды и огня
Бинарник

Бинарник
Для компиляции использовал VisualStudio 2013.

Итак, вдохните глубже, отложите помидоры и яйца, они Вам еще пригодятся и взгляните на код:
Исходный код

Я думаю многие догадались что за способ уменьшения кода тут используется. Тут реализована простейшая виртуальная машина (виртуальный процессор) с минимальным набором команд, а код самой игры написан на байткоде этой машины и лежит в данных!

Поддерживаемые команды:

  • Сложение двух чисел
  • Копирование блока данных
  • Сравнение двух блоков данных и условный переход
  • Позиционирование курсора в консоли
  • Вывод в консоль блока данных
  • Чтения нажатой клавиши

Чтобы писать код, пришлось написать свой компилятор(транслятор) и уже на нем писать саму игру.

Для тех кто интересуется подробностями:

Всем спасибо за внимание!

Автор: mynameco

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js