Şu an temel şekillerin örneğin nokta, dikdörtgen, çizimi ile ilgili uğraşıyorum. Kodun son hali şu şekilde:
import sdl;
struct Nokta
{
int x = 0;
int y = 0;
Renk renk;
this (int x, int y, Renk renk = [0x00, 0x00, 0xff, 0x00])
{
this.x = x;
this.y = y;
this.renk = renk;
}
}
struct Dikdörtgen
{
Nokta solÜst;
int genişlik;
int yükseklik;
this(Nokta solÜst, int genişlik, int yükseklik)
{
this.solÜst = solÜst;
this.genişlik = genişlik;
this.yükseklik = yükseklik;
}
}
struct Üçgen
{
Nokta[3] Noktalar;
this(Nokta bir, Nokta iki, Nokta üç)
{
Noktalar = [bir, iki, üç];
}
}
Burada Renk yapısı şu şekilde:
struct Renk
{
Uint8 r;
Uint8 g;
Uint8 b;
Uint8 unused;
}
Burada son bileşen alpha (şeffaflık) bilgisi tutuyor.
Şimdi ben henüz bu kodu bitirmedim ama tasarımla ilgili fikirlerinizi alayım dedim. Yapmayı düşündüğüm şeylerin bir kısmını henüz denemedim.
Örneğin renkleri bir enum kullanarak yukarıdaki gibi
enum Renk { mavi, yeşil, kırmızı };
gibi yapabilirmiyiz.
İkincisi aslında bu dikdörtgenin solÜst kısmını bir Vector2 alacak şekilde değiştirmek istiyorum. Bunun nedeni her oyun nesnesi bir dikdörtgen ya da çember gibi temel bir şekile sahip olacak. Daha sonra bu kısımları kullanarak çarpışma algılamasını yapmayı düşünüyorum.
Ama güncelleme metodunda hem oyun nesnesinin konum bilgisini hem de dikdörtgenin konum bilgisini ayrı ayrı güncellemek pek iyi bir çözüm olmadığı için bunları birbirine nasıl bağlı yapabilirim diye düşünüyorum. Örneğin oyun nesnesinin konumu değiştiği zaman oyun nesnesinin sahip olduğu dikdörtgenin konum bilgisi de değişsin. Basitçe '@property' ile olur mu acaba..
Öneri, yorum ve fikirlerinizi bekliyorum! :)
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]