• С чего начать в 30 лет?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Фундаментальная проблема - в игрострой стоит очередь фанатов с горящими глазами. Людей, которые пишут игры, играют в игры, моддят игры, хакают игры..., начиная с возраста, когда они смогли дотянуться до клавиатуры (как ваш покорный слуга). При этом, у них столько мотивации, что они могут сами поставить себе задачу, сами нагуглить все, что нужно (Спасибо дяде Немнюгину за его учебник. Это все что нужно знать о DOS, чтобы закодить dOOm) и сами все напишут и нарисуют (работая над этим сутками. Не потому что над душей стоит босс с воплями о лишении премии, а потому что им это интересно).

    И вот теперь, Андрей, который уже устал хочет встать в очередь высоко мотивированных конкурентов и попросить себе оффер. Каковы его шансы на успех?

    В играх есть много специализаций программирования - хотите графику, придется учить одно (причем на 2d и 3d это одно будет разное), хотите игровую логику и скриптинг - это номер два, хотите системную часть и бэкенд - это будет третье.

    Для универсального развития, нужно начинать с простых фиговин вроде тетриса, арканоида, бильярда и прочего (в которых однако есть все столпы игростроя - графика + логика + системный движок, можно и добавить сеть, если подумать) и потом наращивать сложность - делать платформер или RTS.
    Ответ написан
    4 комментария
  • Для чего нужен N в данных формулировках?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Для того, чтобы пользоваться этими формулировками для доказательства. Например, нам дана последовательность
    a_n = 1/n

    Докажем, что она бесконечно малая. По определению, надо для любого e > 0 найти такое N, что при всех n > N все a_n < e

    В качестве N можем взять ceil ( 1 / e ) . ceil - это так называемый "потолок". Это наименьшее натуральное число, которое больше аргумента ceil. В нашем случае, больше 1/e

    Проверяем. Пусть e=100. N = ceil(1/100) = 1. все элементы нашей последовательности, начиная со второго, меньше e=100, так что определение работает

    e=1/10 N = ceil(10) = 10

    1/10 > 1/11
    1/10 > 1/12
    ...

    тоже работает.

    Доказательстово того, это работает для любого e оставляю на ваше усмотрение.

    То есть, для доказательства того, что последовательность бесконечно малая, вам надо найти способ вычислить N из e, при котором выполняется формулировка определения, и доказать, что он работает для любого e > 0
    Ответ написан
    Комментировать
  • Как вернуть массив из структуры?

    В данном случае в вашей программе нет необходимости использовать массив, лучше завести 3 переменные в структуре ivector3d
    struct ivector3d {
      int x = 0;
      int y = 0; 
      int z = 0;
    };

    Затем обращаться к ним из функции scale.
    Если вас интересует возвращение массива из функции, то вам нужно вернуть указатель на первый элемент массива
    int* get() {
        return array;
      }

    Но это плохой способ, т.к. при таком подходе теряется информация о размере массива. Эту проблему можно решить возвращая размер массива в параметрах функции.
    int* get(int& size) {
        size = 3;
        return array;
      }

    Но, согласитесь, это не очень удобно. В таком случае предлагается изменить код на использование контейнера std::array.
    struct ivector3d {
    
      std::array<int, 3> array;
      std::array<int, 3> get() {
        return array;
      }
    };

    По итогу, программа будет выглядеть следующим образом
    #include <iostream>
    #include <array>
    
    using namespace std;
    
    struct ivector3d {
    
      std::array<int, 3> array;
      std::array<int, 3> get() {
        return array;
      }
    };
    
    void scale(ivector3d* v, int k) {
      for (int i = 0; i != 3; ++i)
        v->array[i] *= k;
    }
    
    
    int main() {
    
      ivector3d iv3d = {1,1,1};
      scale(&iv3d, 2);
    
      auto b = iv3d.get();
      for(auto i : b)
      {
          cout << i << " ";
      }
    }
    Ответ написан
    1 комментарий
  • Где изучать STL и Boost?

    @res2001
    Developer, ex-admin
    STL по сути часть языка, так что в любом учебнике по плюсам будут и основы STL.
    Boost - это такая расширенная версия STL, многие новшества перед тем как попасть в стандарт и соответственно в STL тестируются на Boost. Но в Boost содержится много того, чего нет в STL. У Boost своя хорошая документация, изучайте по ней и по примерам.
    Любые другие библиотеки изучаются по документации от разработчиков библиотеки. Если документации нет, бывает и такое, - по исходникам.
    Ответ написан
    Комментировать
  • Где изучать STL и Boost?

    Qubc
    @Qubc
    Ненавижу полисемию.
    ИМХО: thinking in c++ volume 2 и geekforgeeks.org (отсюда можно узнать, что и как (примерно) из общеизвестных алгоритмов реализовано в stl). И параллельно с этим Лафоре или Грокаем алгоритмы (отсюда можно узнать про всевозможные алгоритмы и их суть в общем виде).
    Ответ написан
    Комментировать