Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 32

Структура игровой программы

05.11.2016, 22:29. Показов 626. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть вопроса уважаемые гуру геймдева проста(использую SFML, Visual studio 15).

Имееться класс Entiti в нём храниться координаты, угол, текстура и прочее, а так же функции типа Move, или смены кадра анимации. Проблема в том что есть ещё класс Gridmap который хранит массив классов Tile(массив одномерный динамический и объявляеться(ну резервирует память вроде так это называться) во время вызова конструктора, как производить проверку на соприкосание ентити с тайлом ? В Entiti.move ? или использовать иные способы...Код прилагаю:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "gridmap.h"
#include "..\SFML\Graphics.hpp"
using namespace sf;
 
class Entiti
{
public:
    Texture texture;
    RenderStates statechar;
    int sizex, sizey;
    Vector2f cord;
    Vector2f vecdir;
    Vector2f vecnapr;
    Vector2f oldvecdir;
    VertexArray quad;
    float speed;
    float angle;
    int animstatus;
    bool animate;
    std::string filename;
 
    Entiti();
    void setEntiti(Vector2f, int, int, float, Vector2f);
    void draw(RenderWindow*);
    void updateAnimStatus(float);
    void loadTexture(std::string);
    void rotate(float);
    void move(Vector2f);
};
gridmap.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "..\SFML\Graphics.hpp"
using namespace sf;
 
class Gridmap
{
public:
    Tile* map;
    int sizex;
    int sizey;
    Texture textile;
    int blocksize = 32 + 12;
    int radius = 18;
 
 
    Gridmap();
    void setMap(int, int);
    Gridmap(int, int);
    void setTile(Vector2i, Vector2f, bool, int);
    void draw(Vector2f cord, RenderWindow*);
private:
    VertexArray tilemap;
    RenderStates state;
};
Проблему решить могу но думаю что способ не особо хороший просто создать в ентити приватную ссылку на карту, естественно подключив хидер в Entiti, но тут опять же сомнения одолевают. Надеюсь не проморгал похоже темы, ибо пролистал форум на многие страницы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2016, 22:29
Ответы с готовыми решениями:

Структура программы
Добрый день! Написан код, после компиляции выдает ошибку, которую не могу исправить. Кто разбирается в Maple, помогите пожалуйста найти и...

Структура программы
Оптимально как расположить код. Вот есть у меня например 5 строчек запроса на заполнение таблички в главном окне. И его мне нужно...

Структура программы
Уважаемые Гуру, объясните новичку... Если взять к примеру навороченную и полноценную программу после установки и запуска которой...

3
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
05.11.2016, 22:36
Я думаю проверку нужно производить в другом классе, который может принимать на себя и entity и gridmap...так будет удобнее. А так, разделяйте данные и поведение. Entity не должно двигать сам себя. Этим должен заниматься кто-то другой.
Ну а для простой системы можно проверку и в move осуществлять
0
0 / 0 / 0
Регистрация: 05.04.2015
Сообщений: 32
06.11.2016, 09:56  [ТС]
А можно сделать класс допусти AIcontroller наследующий Entiti и уже в нём проверять ?
0
Каждому свое
 Аватар для Bretbas
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
06.11.2016, 22:54
Varag, зачем наследоваться? Можно просто передавать указатель на Entity и с ним работать. А уже от Entity наследовать разные сущности - LightEntity, MeshEntity, ParticleSystemEntity, SpriteEntity и тд. И класс AIController будет их двигать, вращать и маштабировать одинаково. Но это как вариант. Я конечно бы не так все сделал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.11.2016, 22:54
Помогаю со студенческими работами здесь

структура программы
Каждое окно будет использовать файлы с диска (файл будет включать свойства всех компонентов на форме и разные другие данные). Читать файл...

Структура программы
Здравствуйте. Есть класс Form1 и еще несколько классов реализующих логику, а так же класс прослойка, т.е своего рода менеджер, к-й...

Структура программы
Что необходимо: реализовать многопоточное приложение, классическая задача "Читатели-писатели" QT организует проект с первоначальными...

структура программы
сломал мозг... есть 3 файла main.cpp #include "tools.h" int main() { int a; clear_var(a); }

Структура программы на С#?
Как можно ответить на вопрос: структура программы на С#?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru