Tôi là người mới bắt đầu cả về phát triển và lập trình trò chơi.
Tôi đang cố gắng học một số nguyên tắc trong việc xây dựng một công cụ trò chơi.
Tôi muốn tạo một trò chơi đơn giản, tôi đang ở điểm mà tôi đang cố gắng thực hiện công cụ trò chơi.
Vì vậy, tôi nghĩ rằng công cụ trò chơi của tôi nên kiểm soát những thứ này:
- Moving the objects in the scene
- Checking the collisions
- Adjusting movements based on collisions
- Passing the polygons to the rendering engine
Tôi đã thiết kế các đối tượng của mình như thế này:
class GlObject{
private:
idEnum ObjId;
//other identifiers
public:
void move_obj(); //the movements are the same for all the objects (nextpos = pos + vel)
void rotate_obj(); //rotations are the same for every objects too
virtual Polygon generate_mesh() = 0; // the polygons are different
}
và tôi có 4 đối tượng khác nhau trong trò chơi của mình: máy bay, chướng ngại vật, người chơi, viên đạn và tôi đã thiết kế chúng như thế này:
class Player : public GlObject{
private:
std::string name;
public:
Player();
Bullet fire() const; //this method is unique to the class player
void generate_mesh();
}
Bây giờ trong công cụ trò chơi tôi muốn có một danh sách đối tượng chung, nơi tôi có thể kiểm tra ví dụ về va chạm, di chuyển đối tượng, v.v., nhưng tôi cũng muốn công cụ trò chơi sẽ nhận lệnh người dùng để điều khiển người chơi ...
Đây có phải là một ý tưởng tốt?
class GameEngine{
private:
std::vector<GlObject*> objects; //an array containg all the object present
Player* hPlayer; //hPlayer is to be read as human player, and is a pointer to hold the reference to an object inside the array
public:
GameEngine();
//other stuff
}
nhà xây dựng GameEngine sẽ như thế này:
GameEngine::GameEngine(){
hPlayer = new Player;
objects.push_back(hPlayer);
}
Thực tế là tôi đang sử dụng một con trỏ là vì tôi cần gọi cái fire()
đó là duy nhất cho đối tượng Người chơi.
Vì vậy, câu hỏi của tôi là: nó là một ý tưởng tốt? Là sử dụng thừa kế của tôi sai ở đây?