• Как с помощью ООП смоделировать сложный игровой мир?

    riky
    @riky
    Laravel
    наверное можно было бы сделать это аналогично тому как в Unity у GameObject назначаются компоненты. то есть универсальные объекты для всего всего и к ним добавляются любые компоненты которые модифицируют их поведение.
    Ответ написан
    3 комментария
  • Как с помощью ООП смоделировать сложный игровой мир?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ну, чтобы можно было камень с земли подобрать, кинуть в кого-то, или, например, ножку от стула оторвать, да пришить негодяя, либо снега отведать (почему нет?) и многое другое.

    1. Решите проблему обработки объекта, как составного элемента из разных материалов, включая все физические и химические взаимодействия.
    2. Оцените текущие ПК, возможности движков, затрачиваемые ресурсы и мощности видео-карт на один усреднённый объект.
    3. Оцените трудозатраты на создание прототипа такого объекта: погреться у гитары и т.п.
    4. Если желание не пропадёт, а мощности позволят - нужно будет много РАСПРЕДЕЛЁННЫХ человеко-ресурсов для наполнения мира такими предметами.
    Объём работы - огромный!

    Про код:
    Объект - это коллекции экземпляров объектов "атомных классов", имеющий собственное "дерево" зависимостей и список состояний (гитара, дрова, линейка, пулемёт и т.д.) и принимающий в конкретный момент времени одно из этих состояний.
    Состояния могут быть обратимыми и не обратимыми (поэтому "дерево" зависимостей): т.е., на поломанной на дрова гитаре, сыграть - нельзя, и из дров собрать рабочую гитару - тоже.
    Ответ написан
    2 комментария
  • C#: Как правильно прочитать и записать объекты в ArrayList?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Не стоит использовать ArrayListбез весомой на то необходимости. Поэтому компилятор не смог вас предупредить, что ArrayListсостоит из ArrayList'ов, в котором строки (двумерный массив строк), а не просто строк.

    Вместо ArrayListнеобходимо использовать типизированный динамический массивList<string>.

    public void Click_OpenFile()
    {
        string fileName = form1.OpenFie();
    
        IList<string[]> aL = ParseFile(fileName);
    
        foreach (var line in aL)
        {
            // Снова собираем токены в строки
            MessageBox.Show(string.Join(" ", line));
        }
    }
    
    // Читаем файл и построчно парсим его
    private IList<string[]> ParseFile(string fileName)
    {
        if (string.IsNullOrEmpty(fileName))
        {
            throw new ArgumentNullException(nameof(fileName));
        }
        if (!File.Exists(fileName))
        {
            throw new ArgumentException($"There is no file {fileName}!");
        }
    
        string[] fileContent = File.ReadAllLines(result);
        var aL = new List<string[]>(fileContent.Length);
        foreach (var line in fileContent)
        {
            aL.Add(ParseString(line));
        }
        return aL;
    }
    
    // Разбиваем строки на токены
    private string[] ParseString(string s)
    {
        const char delimiter = '|';
        return s.Split(delimiter);
    }
    Ответ написан
    Комментировать