Я пытаюсь создать какой-нибудь игровой движок (я знаю, вместо этого следует создать настоящую игру).Печально иметь поражение в структуре проекта.это выглядит так (кадры из моей пятой попытки):
#include <iostream>
#include <vector>
#include <windows.h>
using namespace std;
class Player;
class Engine {
private:
CHAR_INFO *chiBuffer;
int width = 0;
int height = 0;
vector <Player> players;
public:
Engine(int x = 120, int y = 30) {
chiBuffer = new CHAR_INFO[x*y];
}
void addPlayer(Player player) {
players.push_back(player);
}
void render() {
for (int i = 0; i < players.size(); i++) {
Player *player = &players[i];
player->draw();
}
}
protected:
inline CHAR_INFO& getPixel(int x, int y) { return chiBuffer[x + width * y]; }
};
class Drawable : Engine {
protected:
inline CHAR_INFO& getPixel(int x, int y) { return Engine::getPixel(x, y); }
virtual void draw() = 0;
};
class Player : Drawable {
protected:
int x = 0;
int y = 0;
public:
void draw() {
getPixel(x, y).Char.UnicodeChar = L'*';
}
};
int main() {
Engine *eng = new Engine(120, 30);
Player p;
eng->addPlayer(p);
return 0;
}
Я хотел бы сделать его легко расширяемым, поэтому в моей голове родилась идея создания подкласса мастер-класса (Engine)Drawable, у которого будет метод draw (), а затем Tickable, у которого будет onTick () и т. Д. Но я уверен, что делаю это неправильно.Не могли бы вы рассказать мне лучшую идею сделать это?Или заставьте это просто работать, потому что это дает мне слишком много ошибок, чтобы написать это прямо здесь (VS 2017)