Три дня борьбы - и мне удалось вытащить весь вывод графики в моей недоигре в отдельный класс.
А всё почему? Потому что изначальные ошибки конструирования (нарушение абстракций) классов потом обходятся сильно дороже.
В основном всё уперлось хранение игрового фрейма, который из себя представляет вектор строк. Почему-то не хочет этот сраный вектор храниться в качестве закрытого члена класса, а я не умею заставить. В итоге психанул, закрытый член класса сделал ссылкой на вектор, а сам вектор создал оператором New в конструкторе. А я такой охуенный программист, что деструкторов у меня нет в принципе, посему память просто утекает. Ну и хуй с ней, в современных компьютерах её много!
Сам факт того, что я дошёл до понятия "игровой фрейм", говорит о многом. В частности, о попытке реализовать уже какой-то работающий в реалтайме движок, а не просто реагирующий на ввод через консоль.
А теперь внимание - следующая задача. Вот у нас есть клетка игрового поля, на которой одновременно лежит какой-то предмет и находится персонаж. Необходимо, чтобы игра показывала значок персонажа попеременно со значком предмета. И в это же время ожилала от игрока консольный ввод. На данный момент я нашёл такой вариант решения - запускается отдельный поток, который отсчитывает 700 мс скажем, после чего прибивает объект std::cin, ожидающий ввод. Выполнение программы продолжается, рисуется следующий фрейм, снова запрашивается ввод и запускается поток.
А всё почему? Потому что изначальные ошибки конструирования (нарушение абстракций) классов потом обходятся сильно дороже.
В основном всё уперлось хранение игрового фрейма, который из себя представляет вектор строк. Почему-то не хочет этот сраный вектор храниться в качестве закрытого члена класса, а я не умею заставить. В итоге психанул, закрытый член класса сделал ссылкой на вектор, а сам вектор создал оператором New в конструкторе. А я такой охуенный программист, что деструкторов у меня нет в принципе, посему память просто утекает. Ну и хуй с ней, в современных компьютерах её много!
Сам факт того, что я дошёл до понятия "игровой фрейм", говорит о многом. В частности, о попытке реализовать уже какой-то работающий в реалтайме движок, а не просто реагирующий на ввод через консоль.
А теперь внимание - следующая задача. Вот у нас есть клетка игрового поля, на которой одновременно лежит какой-то предмет и находится персонаж. Необходимо, чтобы игра показывала значок персонажа попеременно со значком предмета. И в это же время ожилала от игрока консольный ввод. На данный момент я нашёл такой вариант решения - запускается отдельный поток, который отсчитывает 700 мс скажем, после чего прибивает объект std::cin, ожидающий ввод. Выполнение программы продолжается, рисуется следующий фрейм, снова запрашивается ввод и запускается поток.