1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

C# Minecraft

Тема в разделе "Оффтопик", создана пользователем master_crafter, 15 янв 2014.

  1. Автор темы
    master_crafter

    master_crafter Старожил Пользователь

    Баллы:
    153
    Skype:
    mr_ddclash
    Имя в Minecraft:
    ddclash_and_SeJIyA
    Всем хай! Спустя долгие дни шары на хабре, я набрел на раздел "Ненормальное программирование" где наткнулся на Minecraft на языке C#. Код:
    Код:
    class Program
    {
            static void Main(string[] args)
            {
            begin:
                    // Вывод логотипа и карты с одновременной подстановкой персонажа
                    System.Console.SetCursorPosition(0, 0);
                    System.Console.WriteLine(new string(map).Remove((offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))), 1).Insert((offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))), "8"));
                    // Расчет новой позиции персонажа на основе нажатых клавиш
                    var key = System.Console.ReadKey(true);
                    position = (((!(map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '+' || map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '~') && !(map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '@' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '#' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '+')) ? (((position >> shift) & mask)) : ((key.Modifiers != System.ConsoleModifiers.Shift && key.Key == System.ConsoleKey.A && (map[offset + ((position & mask) * (width + 1) + (((position >> shift) & mask) - 1))] == ' ' || map[offset + ((position & mask) * (width + 1) + (((position >> shift) & mask) - 1))] == '~' || map[offset + ((position & mask) * (width + 1) + (((position >> shift) & mask) - 1))] == '+') && ((map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '+' || map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '~') || (map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '@' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '#' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '+'))) ? (((position >> shift) & mask) - 1) : ((key.Modifiers != System.ConsoleModifiers.Shift && key.Key == System.ConsoleKey.D && (map[offset + ((position & mask) * (width + 1) + (((position >> shift) & mask) + 1))] == ' ' || map[offset + ((position & mask) * (width + 1) + (((position >> shift) & mask) + 1))] == '~' || map[offset + ((position & mask) * (width + 1) + (((position >> shift) & mask) + 1))] == '+') && ((map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '+' || map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '~') || (map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '@' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '#' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '+'))) ? (((position >> shift) & mask) + 1) : (((position >> shift) & mask))))) << 8) | ((!(map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '+' || map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '~') && !(map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '@' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '#' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '+')) ? ((position & mask) + 1) : ((key.Modifiers != System.ConsoleModifiers.Shift && key.Key == System.ConsoleKey.W && (((map[offset + (((position & mask) - 1) * (width + 1) + ((position >> shift) & mask))] == ' ' || map[offset + (((position & mask) - 1) * (width + 1) + ((position >> shift) & mask))] == '~' || map[offset + (((position & mask) - 1) * (width + 1) + ((position >> shift) & mask))] == '+') && (map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '#' || map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '+')) || ((map[offset + (((position & mask) - 1) * (width + 1) + ((position >> shift) & mask))] == ' ' || map[offset + (((position & mask) - 1) * (width + 1) + ((position >> shift) & mask))] == '~' || map[offset + (((position & mask) - 1) * (width + 1) + ((position >> shift) & mask))] == '+') && (map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '+' || map[offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))] == '~') && (map[offset + (((position & mask) - 1) * (width + 1) + ((position >> shift) & mask))] == '+' || map[offset + (((position & mask) - 1) * (width + 1) + ((position >> shift) & mask))] == '~')))) ? ((position & mask) - 1) : ((key.Modifiers != System.ConsoleModifiers.Shift && key.Key == System.ConsoleKey.S && (map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == ' ' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '~' || map[offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))] == '+')) ? ((position & mask) + 1) : ((position & mask)))));
                    // 1 и 2 проход - обработка воды, 3 проход - установка и разрушение блоков
                    for (int index = 0; index < ((map.Length - offset) * 3); index++)
                            map[offset + (index % (map.Length - offset))] = ((((index / (map.Length - offset)) == 0) && map[offset + (index % (map.Length - offset))] == ' ' && (map[offset + (index % (map.Length - offset)) - (width + 1)] == '~' || map[offset + (index % (map.Length - offset)) - 1] == '~' || map[offset + (index % (map.Length - offset)) + 1] == '~')) ? ('.') : (((index / (map.Length - offset)) == 1) && (map[offset + (index % (map.Length - offset))] == '.') ? ('~') : ((((index / (map.Length - offset)) == 2) && key.Key == System.ConsoleKey.D1 && (offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))) == (offset + (index % (map.Length - offset))) && (map[offset + (index % (map.Length - offset))] == '+' || map[offset + (index % (map.Length - offset))] == '~')) ? (' ') : ((((index / (map.Length - offset)) == 2) && key.Key == System.ConsoleKey.D2 && (offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))) == (offset + (index % (map.Length - offset))) && (map[offset + (index % (map.Length - offset))] == ' ' || map[offset + (index % (map.Length - offset))] == '~')) ? ('#') : ((((index / (map.Length - offset)) == 2) && key.Key == System.ConsoleKey.D3 && (offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))) == (offset + (index % (map.Length - offset))) && (map[offset + (index % (map.Length - offset))] == ' ' || map[offset + (index % (map.Length - offset))] == '~')) ? ('+') : ((((index / (map.Length - offset)) == 2) && key.Key == System.ConsoleKey.D4 && (offset + ((position & mask) * (width + 1) + ((position >> shift) & mask))) == (offset + (index % (map.Length - offset))) && map[offset + (index % (map.Length - offset))] == ' ') ? ('~') : ((((index / (map.Length - offset)) == 2) && key.Modifiers == System.ConsoleModifiers.Shift && key.Key == System.ConsoleKey.A && (offset + ((position & mask) * (width + 1) + (((position >> shift) & mask) - 1))) == (offset + (index % (map.Length - offset))) && (map[offset + (index % (map.Length - offset))] == '#' || map[offset + (index % (map.Length - offset))] == '+')) ? (' ') : ((((index / (map.Length - offset)) == 2) && key.Modifiers == System.ConsoleModifiers.Shift && key.Key == System.ConsoleKey.D && (offset + ((position & mask) * (width + 1) + (((position >> shift) & mask) + 1))) == (offset + (index % (map.Length - offset))) && (map[offset + (index % (map.Length - offset))] == '#' || map[offset + (index % (map.Length - offset))] == '+')) ? (' ') : ((((index / (map.Length - offset)) == 2) && key.Modifiers == System.ConsoleModifiers.Shift && key.Key == System.ConsoleKey.W && (offset + (((position & mask) - 1) * (width + 1) + ((position >> shift) & mask))) == (offset + (index % (map.Length - offset))) && (map[offset + (index % (map.Length - offset))] == '#' || map[offset + (index % (map.Length - offset))] == '+')) ? (' ') : ((((index / (map.Length - offset)) == 2) && key.Modifiers == System.ConsoleModifiers.Shift && key.Key == System.ConsoleKey.S && (offset + (((position & mask) + 1) * (width + 1) + ((position >> shift) & mask))) == (offset + (index % (map.Length - offset))) && (map[offset + (index % (map.Length - offset))] == '#' || map[offset + (index % (map.Length - offset))] == '+')) ? (' ') : (map[offset + (index % (map.Length - offset))])))))))))));
                    goto begin;
            }
            private static int mask = 255, shift = 8, width = 79, offset = 800, position = (25 << 8) | 4;
            private static char[] map = "    ###`  ##``##``##`  ##``######  ######  ######``######``######`#######    \n    ###`` ###``##``###``##``##````  ##````  ##``##``#````#``##````````##``    \n    ###```###``##``###``##``##````  ##````  ##``#```#````#``##````````##`    \n    `########```##``##`####``######  ##````  #####```##```#``#######```###    \n    ###`##`##``##``###`####``##````  ##      ##``##``######``###````````##    \n  `##``#``##``##``##```###``##````  ##      ##``##``###`##```##```  ```##`    \n  ##``````##``##``##```##```#####`  ######  ##``##``###``##``##``  ```###    \n  ##`````###``##``##```##````#####  ######  `#``###``##``##``##`    ````##    \n  `````  ````````````  ```````````  ``````  ``  ```````````````      `````    \n    ````  ```````````  ``````````  ``````  ``  `` ```````````      ````    \n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@                                                                            @\n@            ###+                                    +#########+            @\n@            ####+                                +###############+        @\n@            +++++                                +#####        ####+        @\n@#            +###+  +##### #+        ++        +####        #########++##@\n@##~~~~~~~~~~~+###+######### ##+        +#+      +#####          #######  +##@\n@###~~~~~~~~~~####+######### ###+      +##+ +##########            #####  +###@\n@###~~~~~~~~~~####+######### ####+    +################                  +####@\n@###### ##########+######### ######+##################  +##~~~~~~~###########@\n@###### ##########+## +####  #####+##############      +#####~~~~############@\n@#      ####    ##+## +###        +  ###########    +######################@\n@####+            +  +        +#####+                +#######################@\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@".ToCharArray();
    Эта штуковина содержит всего 19 СТРОК КОДА!
    Давайте покажу как все работает!

    После запуска нас встречает мир который генерируется не случайно, а стандартно заложен в коде.
    upload_2014-1-15_17-16-24.png
    Восьмерка-я
    #-блоки земли
    +-блоки лестницы
    @-бедрок (ломать нельзя)
    ~-вода
    Но больше всего меня удивили возможности:
    Вода растекается по доступной поверхности
    На персонажа действует гравитация
    Персонаж может создавать все блоки, кроме коренной породы
    Персонаж может разрушать землю и лестницы


    Управление:
    W S A D - движение персонажа
    W S A D + Shift - удаление блоков в соответствующем направлении
    1 2 3 4 - создание блоков воздуха, земли, лестницы и воды
    1-создание блока воздуха (Непонятно зачем).
    2-создание блока земли.
    3-создание блока лестницы.
    4-создание блока воды.

    Пост на Хабре:
    http://habrahabr.ru/post/202840/


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


    Вот например название нашего любимого форума прямо в этом Minecraft C# :)
    upload_2014-1-15_17-35-35.png
     
    Fabrialien, Fabiraneen, Hephest и ещё 1-му нравится это.
  2. caNek

    caNek Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    AddyCool
    Вы оказываете эти услуги ?
    (Пошучено)
     
    leon0399, Hephest, AlexMerser и ещё 1-му нравится это.
  3. Автор темы
    master_crafter

    master_crafter Старожил Пользователь

    Баллы:
    153
    Skype:
    mr_ddclash
    Имя в Minecraft:
    ddclash_and_SeJIyA
    Да, конечно. У меня есть полное музыкальное образование по баяну. Вот одна из моих работ
    Пошучено x2
     
    Dereku нравится это.
  4. Leonfuerst

    Leonfuerst Активный участник Пользователь

    Баллы:
    58
    Имя в Minecraft:
    Leonfuerst
    Этот пост еще моя бабушка видела.
     
    caNek нравится это.
  5. caNek

    caNek Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    AddyCool
    Если не ошибаюсь, пост сподвиг спартанцев на войну.
     
  6. Leonfuerst

    Leonfuerst Активный участник Пользователь

    Баллы:
    58
    Имя в Minecraft:
    Leonfuerst
    По последним сведениям этот пост способствовал началу эволюцию обезьяны в человека.
     
    caNek нравится это.
  7. Fabiraneen

    Fabiraneen Новичок

    Баллы:
    17
    Имя в Minecraft:
    Fabiraneen
    А мне норм. Я не видел этого поста, и меня с ним познакомили. @master_crafter спасибо!
    http://ru.wikipedia.org/wiki/Спарта
     

Поделиться этой страницей