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

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

05.11.2016, 22:29. Показов 615. Ответов 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 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru