Bu yüzden Java'da bir oyun yazmaya başladım ve oyun nesnelerini yazıyorum. Şimdi burada Evolve Your Hierarchy'da okudum, oyunlarınızı büyük bir sınıf hiyerarşisi olarak değil, besteler olarak oluşturmalısınız. Bir önceki bağlantısından bu görüntüde gibi: aslında uygulanmasına aşağı alırkenJava'da katı Saf Toplama (kompozisyon) Oyun Nesneleri nasıl yazılır?
Ancak, ben arabirimleri uygulanacağı yeri yaklaşık bir küçük sorum var.
Player adında bir sınıfınız ve hareketli ve yenileyebilir arabirimleriniz olduğunu varsayalım.
class Player {
public Moveable moveable;
public Renderable renderable;
}
class GenericMoveable implements Moveable {
// Function implementations
}
class PlayerRenderable implements Renderable {
// Function implementations
}
Yoksa denemek ve nesneye doğrudan arayüzleri uygulayarak bu yaparsınız:: Bu kullanarak kamu arayüz değişkenleri uygulamak musunuz şu anda ben ikinci yöntem daha iyi olduğunu hissediyorum Şimdi
class Player implements Moveable, Renderable {
private GenericMoveable genericMoveable;
// Non-direct Implementation of Moveable
void someMoveFunc(double x, double y) {
genericMoveable.someMoveFunc(x, y);
}
// Direct implementation of Renderable
void someRenderableFunction() {
// Player class specific code
}
}
class GenericMoveable implements Moveable {
// Function implementations
}
.
List<Renderable> renderObjects; // use this to draw all of the objects to the screen
List<Moveable> moveObjects; // use this to move all objects at once
Gerçekten sadece doğru yolda olduğumu onay almak istiyorum: Ben şu listeleri oluşturabilir, çünkü bunun için ana nedenidir. Java'daki oyunlar için oyun nesnelerine göre oyun nesneleri oluştururken, söz konusu arabirimleri doğrudan söz konusu Oyun Nesnesine uygulamak ve sonra ihtiyaç duyduğunuzda özel arabirimler kullanmak ve diğer işlevler için bu işlevlerin doğrudan uygulanmasını istediğinizden eminim. Bu doğru mu? Ve yaptığım şeyin olumlu ve olumsuz yönleri neler?
Biz buradayken, Java'daki Kompozisyonel Oyun Nesnelerinin uygulanmasında başka nelere dikkat etmem gerekiyor? Ne farklı yapmalıyım? Önceden herhangi bir cevap için teşekkürler, her türlü yardım için teşekkür ederim.
ikinci örnek çok daha güzel görünüyor Hareketli ve Yenilenebilir arayüzler.Ama hareket edebilen bir dizi sınıfım var ve ben genericMoveable.someMoveFunc (x, y) kopyasını buluyorum. ; hepsinde - bu soruna girdiniz mi? – sdasdadas
@sdasdadas Aslında şuna bir göz atmanızı öneriyorum: http://gamadu.com/artemis/ –