- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

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

Управление:

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

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

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

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

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

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

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

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

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

Автор: mynameco

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/game-development/49472

Ссылки в тексте:

[1] Minecraft: http://habrahabr.ru/post/202840/

[2] Бинарник: https://dl.dropboxusercontent.com/u/37191968/Minecraft20.zip

[3] Исходный код: http://code.google.com/p/minecraft-19lines/source/browse/trunk/Minecraft20/Program.cs

[4] Развернутая виртуальная машина: http://code.google.com/p/tiny-virtual-machine/source/browse/trunk/tiny-virtual-machine/TestVm1.cs

[5] Код игры: http://code.google.com/p/tiny-virtual-machine/source/browse/trunk/tiny-compiler/GameCode.cs

[6] Проект компилятора: http://code.google.com/p/tiny-virtual-machine/source/browse/trunk/#trunk%2Ftiny-compiler%253Fstate%253Dclosed

[7] Источник: http://habrahabr.ru/post/203982/