LINUX.ORG.RU

Сообщения demensdeum

 

Cube Art Project - кубический 3D редактор

Продолжаю познавать портируемость С++, думаю некоторым любителям Emscripten, fcgi и C++ будет интересно посмотреть на мой кубический 3D редактор - Cube Art Project. В интерфейсе поддерживаются 16 цветов спектрума, на практике есть поддержка RGB, просто добавьте пикер цветов :-) Все это делается ради Open Source и фана.

Только клиент https://demensdeum.com/games/CubeArtProjectWEB/?mario

Клиент-сервер с возможностью сохранения на VPS: http://192.243.103.70/cgi-bin/cubeArtProject/cubeArtProjectServer.fcgi?5

Исходный код https://gitlab.com/demensdeum/cube-art-project-bootstrap

Поддерживаются сборки для HTML5 (Emscripten), Windows (mingw), macOS (osxcross), Linux (native), Android (ndk), теоретически под остальные SDL платформы, однако нужно писать скрипты сборки и проводить адаптацию. Конструктивная и деструктивная критика приветствуется.

 , , ,

demensdeum
()

Death-Mask киберпанк rogue-like в разработке

В свободное время занимаюсь разработкой своего движка и игры рогули под названием Death-Mask. Сделал упор именно на портирование C++ кода под HTML5, трансляцию через Emscripten. В игре нужно найти артефакт Маску Смерти которая дает владельцу бессмертие, в бесконечно генерируемом лабиринте. На Game Over вылетает, но можно просто перезагрузить страницу, разница не велика.

Скриншот: http://demensdeum.com/games/deathMask/screenshot.jpg

Поиграть можно тут: https://demensdeum.com/games/deathMask/ https://www.newgrounds.com/portal/view/738737

Посмотреть исходный код, лицензия MIT: https://gitlab.com/demensdeum/Death-Mask

 

demensdeum
()

Создание микроклассов и антипаттерн полтергейст

В книге «Clean Code: A Handbook of Agile Software Craftsmanship» от Robert C. Martin есть такой пример плохого, неочевидного кода:

private void printGuessStatistics(char candidate, int count) {
    String number;
    String verb;
    String pluralModifier;
    if (count == 0) {
      number = "no";
      verb = "are";
      pluralModifier = "s";
    } else if (count == 1) {
      number = "1";
      verb = "is";
      pluralModifier = "";
    } else {
      number = Integer.toString(count);
      verb = "are";
      pluralModifier = "s";
    }
    String guessMessage = String.format(
      "There %s %s %s%s", verb, number, candidate, pluralModifier
    );
    print(guessMessage);
  }

Автором предлагается переделать этот код в отдельный класс:

public class GuessStatisticsMessage {
  private String number;
  private String verb;
  private String pluralModifier;
  public String make(char candidate, int count) {
    createPluralDependentMessageParts(count);
    return String.format(
      "There %s %s %s%s", 
       verb, number, candidate, pluralModifier );
  }
  private void createPluralDependentMessageParts(int count) {
    if (count == 0) {
      thereAreNoLetters();
    } else if (count == 1) {
      thereIsOneLetter();
    } else {
      thereAreManyLetters(count);
    }
  }
  private void thereAreManyLetters(int count) {
    number = Integer.toString(count);
    verb = "are";
    pluralModifier = "s";
  }
  private void thereIsOneLetter() {
    number = "1";
    verb = "is";
    pluralModifier = "";
  }
  private void thereAreNoLetters() {
    number = "no";
    verb = "are";
    pluralModifier = "s";
  }
}

Как вы считаете насколько это оправдано на самом деле? Ведь налицо использование антипаттерна полтергейста, когда создается микрокласс с несколькими простейшими функциями.

 ,

demensdeum
()

RSS подписка на новые темы