RedHelium RedHelium

Jusper, Планируется в стим, но под издательством кого-нибудь. На счёт портирования на мобильные платформы пока не планировал

Jusper Jusper

RedHelium,

Игра планируется на стим? Если на телефон, то пост-эффекты будут лагать как сволочь)

RedHelium RedHelium

Jusper, Также немного переработан персонаж, некоторые объекты окружения. Помимо этого планируется ещё добавление различных интерактивных предметов и дополнительная работа над дизайном уровня! Также есть дополнительные пост...

Jusper Jusper

Я большую разницу в работе со светом.
Не понимаю, наверное это еще постэффекты.

alexprey alexprey

А вот и результаты первого забега.

...
Dreaman Dreaman

TheDarkestRed,

Красивый и атмосферный получился :)

RedHelium RedHelium

alexprey, Спасибо, рад стараться :)

TheDarkestRed TheDarkestRed

Концепт арт лесной локации The Darkest Red 🎮 🌲 🌘

...
id66243826 id66243826

Первый трейлер игры, больше похоже на нарезку но все же =) Так же было выпущено обновление, и теперь есть возможность покупать персонажей.
Решил немного разнообразить механики, добавлены двери и ключи,...

...
alexprey alexprey

RedHelium, стиль необычайно хорош)

RedHelium RedHelium

Вновь взялся за свой проект под названием "Stalkmech". Понемногу начал перерабатывать уровни, а также интерфейс.
Моя группа ВК: https://vk.com/redheliumgames

Jusper Jusper

Закрепили с GenElCon успех боем на островной карте.

  • Против нас были: Турция и Россия (на сложности Невозможный)
  • Время ненападения: Отсутствует
  • ...
ruggaraxe ruggaraxe

alexprey, будем ждать фидбэк! Я надеюсь вы заметите множество улучшений! 😎

alexprey alexprey

Ура! Обязательно поиграем. Но блиииннн... Опять пауки... Арахнофобия и в играх не дает покоя 😂
Режимы это круто, мне не хватало лайт версия для побродить!

Jusper Jusper

alexprey,

надеюсь в мою хату завезут нормальный интернет и у меня получится постримить :D

Jusper Jusper

Перенес в проект, вместо раздела game-design. Завтра заценим, че как :)

alexprey alexprey

ruggaraxe, это вообще одна из моих первых игр, после дума конечно же 😂😂😂

Сейчас в стиме по скидосу, прикупил,надеюсь свезет и поучавствую в подобной движухе)

Jusper Jusper

ruggaraxe, они, собственно, и сделаны были на основе 1-й части, можно сказать энтузиастами студии, которые топили за геймплей первой части. Вторая радикально отличалась и темпом геймплея, и сложностью освоения...

ruggaraxe ruggaraxe

Крутяк! 15 лет назад была любимой стратегией. 3 часть выглядит круто, стиль такой же как и во всех первых частях.

Логотип проекта Программирование

Достойный аналог friend-классам в C#

В С++ была очень удобная штука - ключевое слово *friend*.

К примеру, имеем мы класс "Group" - группа студентов, "Student" - студент;
В классе "Group" имеем массив студентов, т.е. экземпляров класса "Student". А в классе "Student" имеем поле "Name" - разумеется, закрытое(_private_) от использования вне методов этого класса.

Предположим, мы реализовываем метод поиска студента по имени(т.е полю "Name") в массиве студентов. Разумеется, метод принадлежит классу "Group", так как в поле данного класса - массиве студентов мы будем искать студента с указанным нами именем.

Но: При проверке имени нам нужно использовать

Massiv[index].Name
  • поле класса "Student", доступ к которому можно получить только из методов класса "Student", но у нас то метод класса "Group"!

Делать поле открытым и тем самым рушить постулаты ООП? Делать в "Student" отдельный метод для проверки имени и вызывать его каждый раз при переборе студентов в массиве, что жутко неэффективно с точки зрения времени выполнения по сравнению с простым сравнением строк?

Ответ

Не понимаю зачем делать студенту приватное поле имени. И вообще вложенные типы делать не рекомендуется, это не универсально. За исключением некоторых ситуаций, когда данный тип специфичен. В данном случае нет. Чтобы правильно организовать доступы надо использовать свойства. Вот например хочешь ты, чтобы никто не мог изменить кроме студента свое имя, ну так и сделай:

public class Student 
{
    private string name;
    public string Name { get { return name; } }

    public Student(string name) 
    {
        this.name = name;
    }
}

А еще есть такая классная штука, как автосвойства. Они намного упрощают жизнь для написания таких конструкций. Вот, смотри пример:

public class Student
{
      public string Name { get; private set; } // Доступ на чтение из-вне есть, а на запись только внутри этого класса

      public Student(string name) 
      {
           this.Name = name;
      }
}

GeneralElConsul, пишешь про постулаты ООП, но сам не можешь правильно собрать архитектуру) Ничего, это приходит со временем. Я конечно не супер архитектор, но продумывать архитектуру умею.


И да не торопись закрывать вопрос раньше времени

Смотрите также:


Комментарии



Использовать такую возможность C#, как вложенные типы. В данном случае - вложенный класс.

class Group
{   ...
    ...
         class Stident
         {
            ...
            ...
         }
   ...
}

И поле "Name" сделать public. Тогда в методе "Group" будет доступно после "Student.Name" и в тоже время недоступно вне методов этих двух классов.

Если при этом у вас возникли какие-либо ошибки "несовместимость по доступности" у меня так было в индексаторе класса "Group" и при передаче параметра params Student[] надо приписать к классу "Student" спецификаторы "internal" или "public" и подобных ошибок не будет.

Не понимаю зачем делать студенту приватное поле имени. И вообще вложенные типы делать не рекомендуется, это не универсально. За исключением некоторых ситуаций, когда данный тип специфичен. В данном случае нет. Чтобы правильно организовать доступы надо использовать свойства. Вот например хочешь ты, чтобы никто не мог изменить кроме студента свое имя, ну так и сделай:

public class Student 
{
    private string name;
    public string Name { get { return name; } }

    public Student(string name) 
    {
        this.name = name;
    }
}

А еще есть такая классная штука, как автосвойства. Они намного упрощают жизнь для написания таких конструкций. Вот, смотри пример:

public class Student
{
      public string Name { get; private set; } // Доступ на чтение из-вне есть, а на запись только внутри этого класса

      public Student(string name) 
      {
           this.Name = name;
      }
}

GeneralElConsul, пишешь про постулаты ООП, но сам не можешь правильно собрать архитектуру) Ничего, это приходит со временем. Я конечно не супер архитектор, но продумывать архитектуру умею.


И да не торопись закрывать вопрос раньше времени

Возможность добавлять комментарии была ограничена