Разработка 2D-игры: координаты для игровой логики c и для рисования - PullRequest
2 голосов
/ 02 апреля 2020

Я закончил реализацию игровой логики c, теперь пришло время визуализировать ее - я выбрал SFML для этой цели. Однако я в беспорядке: как мне избежать жесткого кодирования координат игровых объектов , чтобы сделать всю систему:

  • изменяемого размера;
  • удобно подвижный с точки зрения его визуальных частей и систем единиц;
  • самоадаптирующийся для любого разумного размера экрана?

Кроме того, мне интересно , какие методы используются в «реальном» "игры и другие приложения . Лучшее решение, которое я придумал, это:

  • class Screen_promille, управляемый игровыми логами c для хранения x и y в виде int профилей использованной части экран (например, {500, 500} - это центральная точка, а {999, 999} - правая нижняя); функция
  • sf::Vector2<float> convert_to_pixels(Screen_promille const) для получения фактической позиции на экране (возможно, прямо перед рисованием); или, возможно, вместо этого сделайте Screen_promille::operator sf::Vector2<float>();
  • sf::Rect<float> const used_screen для реализации последнего.

Должно ли это быть * достаточно мудрым ?

PS:

  • Я не использую игровые движки: я хочу, чтобы текущий проект был выполнен без них;
  • Я знаю о SFML typedefs. :) Я оставил их в стороне для более широкой аудитории.

1 Ответ

1 голос
/ 02 апреля 2020

Проще говоря, это не стоит хлопот, когда вы рассматриваете все проблемы, с которыми вы можете столкнуться в будущем. Гораздо проще просто жестко закодировать координаты.

Лучшее решение проблем, о которых вы говорили, - это представление почтового ящика . Представление почтового ящика должно позволять вам удобно изменять размер игры без каких-либо визуальных искажений и должно адаптироваться к любому размеру экрана.

...