เกมของฉันมีสองคลาสที่มีประโยชน์มาก แต่ก็ค่อยๆเจ็บปวด ข้อความและคุณสมบัติ (คุณสมบัติเป็นส่วนประกอบหลัก)
พวกเขาทั้งคู่มาจากคลาสพื้นฐานและมีสแตติก id เพื่อให้ระบบสามารถให้ความสนใจกับสิ่งที่พวกเขาต้องการ มันทำงานได้ดีมาก ... ยกเว้น ...
ฉันกำลังสร้างประเภทข้อความและประเภทคุณสมบัติใหม่อยู่ตลอดเวลาขณะที่ฉันขยายเกม ทุกครั้งที่ฉันต้องเขียนไฟล์ 2 ไฟล์ (hpp และ cpp) และสำเร็จรูปจำนวนมากเพื่อให้ได้ classID และหนึ่งหรือสองชนิดข้อมูลมาตรฐานหรือตัวชี้
มันเริ่มที่จะทำให้การเล่นและการทดสอบความคิดใหม่ ๆ เป็นงานที่น่าเบื่อ ฉันต้องการเมื่อฉันต้องการสร้างข้อความใหม่หรือประเภทคุณสมบัติฉันต้องการให้สามารถพิมพ์บางสิ่งเช่น
ShootableProperty: int gunType, float shotspeed;
ItemCollectedMessage: int itemType;
แทนการสร้างไฟล์ส่วนหัวและ cpp เขียนตัวสร้างรวมถึงผู้ปกครองชั้น ฯลฯ ฯลฯ
มันอยู่ที่ประมาณ 20 - 40 บรรทัด (รวมถึงยามและทุกอย่าง) เพื่อทำในสิ่งที่เป็นตรรกะใน 1 หรือ 2 บรรทัดในใจของฉัน
มีรูปแบบการเขียนโปรแกรมเพื่อหลีกเลี่ยงปัญหานี้หรือไม่?
เกี่ยวกับการเขียนสคริปต์ (ซึ่งฉันไม่รู้อะไรเลย) ... มีวิธีกำหนดคลาสเรียนที่เกือบจะเหมือนกันหรือไม่?
นี่คือลักษณะของคลาสที่หนึ่ง:
// Velocity.h
#ifndef VELOCITY_H_
#define VELOCITY_H_
#include "Properties.h"
#include <SFML/System/Vector2.hpp>
namespace LaB
{
namespace P
{
class Velocity: public LaB::Property
{
public:
static const PropertyID id;
Velocity(float vx = 0.0, float vy = 0.0)
: velocity(vx,vy) {}
Velocity(sf::Vector2f v) : velocity(v) {};
sf::Vector2f velocity;
};
} /* namespace P */
} /* namespace LaB */
#endif /* LaB::P_VELOCITY_H_ */
// Velocity.cpp
#include "Properties/Velocity.h"
namespace LaB
{
namespace P
{
const PropertyID Velocity::id = Property::registerID();
} /* namespace P */
} /* namespace LaB */
ทั้งหมดนี้เป็นเพียงเวกเตอร์ 2 มิติและรหัสที่บอกว่าคาดหวังเวกเตอร์ 2 มิติ (ได้รับคุณสมบัติบางอย่างมีองค์ประกอบที่ซับซ้อนมากขึ้น แต่เป็นความคิดเดียวกัน)