Tôi dường như không thể tìm thấy một lời giải thích hay về Thiết kế hướng dữ liệu cho một trò chơi zombie chung chung (đó chỉ là một ví dụ, ví dụ khá phổ biến).
Bạn có thể làm một ví dụ về Thiết kế hướng dữ liệu về việc tạo một lớp zombie chung không? Sau đây là tốt?
Lớp danh sách zombie:
class ZombieList {
GLuint vbo; // generic zombie vertex model
std::vector<color>; // object default color
std::vector<texture>; // objects textures
std::vector<vector3D>; // objects positions
public:
unsigned int create(); // return object id
void move(unsigned int objId, vector3D offset);
void rotate(unsigned int objId, float angle);
void setColor(unsigned int objId, color c);
void setPosition(unsigned int objId, color c);
void setTexture(unsigned int, unsigned int);
...
void update(Player*); // move towards player, attack if near
}
Thí dụ:
Player p;
Zombielist zl;
unsigned int first = zl.create();
zl.setPosition(first, vector3D(50, 50));
zl.setTexture(first, texture("zombie1.png"));
...
while (running) { // main loop
...
zl.update(&p);
zl.draw(); // draw every zombie
}
Hoặc có thể tạo ra một container thế giới chung có chứa tất cả các hành động từ bite(zombieId, playerId)
để moveTo(playerId, vector)
đến createPlayer()
để shoot(playerId, vector)
đến face(radians)/face(vector)
; và chứa:
std::vector<zombie>
std::vector<player>
...
std::vector<mapchunk>
...
std::vector<vbobufferid> player_run_animation;
...
là một ví dụ tốt?
Cách thích hợp để tổ chức một trò chơi với DOD là gì?