Subject: Oyunun çizilmesi
Can'dan şimdiye kadar duyduğumuz tasarımlar oyunun görüntülenmesini dışarıda bıraktıklarına göre, o konuyu onun tasarımlarından bağımsız olarak düşünmeye başlayabiliriz.
Oyunun nasıl görüntüleneceğini düşünelim. Bunun için birden çok ortam kullanabileceğimizi biliyoruz: GtkD, QtD, konsol ekranı, vs. Bunların hepsi ile de uyumlu olan nasıl bir arayüz düşünebiliriz?
Programı hangi ortamda çalıştığımızdan bağımsız olarak işleteceğiz, ve örneğin çiz() diyerek oyunun belirli bir anının görüntülenmesini sağlayacağız. Bunun için, ortamdan bağımsız bir arayüz tasarlamak gerekiyor.
Sesli düşünüyorum...
Bu sınıf, Can'ın Masa'sı tarafından kullanılabilir ve ortama uygun olarak çalışır.
Tabii aslında bu sınıftan türetilen bir çizici kullanılır. Bunu en kolay olarak konsol ortamında yazabiliriz:
KonsolOyunÇizici.çiz işlevi çok çok kolay olarak, tuval'in satırlarını art arda ekrana yazar. Ve örneğin şöyle bir çıktı elde edilir:
(Tabii tasarıma göre masada başka oyun nesneleri de bulunabilir.)
Ne dersiniz? Can'dan başkaları öncelikli olacak şekilde
bu konuda çalışmak isteyen var mı? 
Aslında aynı fikirden İşlevler dersinin 3 numaralı probleminde de söz etmiştim:
http://ddili.org/ders/d/islevler.html
Tabii başka birisi de GtkD veya QtD veya başka bir ortam için de yazabilir. Yukarıdaki kodlar da tamamen taslak...
Yazmaya başladıkça değişmesi gerekecektir...
Ali
Oyunun nasıl görüntüleneceğini düşünelim. Bunun için birden çok ortam kullanabileceğimizi biliyoruz: GtkD, QtD, konsol ekranı, vs. Bunların hepsi ile de uyumlu olan nasıl bir arayüz düşünebiliriz?
Programı hangi ortamda çalıştığımızdan bağımsız olarak işleteceğiz, ve örneğin çiz() diyerek oyunun belirli bir anının görüntülenmesini sağlayacağız. Bunun için, ortamdan bağımsız bir arayüz tasarlamak gerekiyor.
Sesli düşünüyorum...
class OyunÇizici { int yükseklik; int genişlik; // vs. this(int yükseklik, int genişlik, /* vs. */) { // ... } // masayı boşaltır abstract void sil(); // masaya bir nesne yerleştirir abstract void yerleştir(Konum konum, OyunNesnesi nesne); // bütün masayı gösterir ortama uygun olarak gösterir abstract void çiz(); // insan oyuncuyla etkileşir ve eldeki kağıtlardan hangisinin // seçildiğini döndürür abstract int kağıtSeç(OyunKartı[] el); }
Bu sınıf, Can'ın Masa'sı tarafından kullanılabilir ve ortama uygun olarak çalışır.
Tabii aslında bu sınıftan türetilen bir çizici kullanılır. Bunu en kolay olarak konsol ortamında yazabiliriz:
class KonsolOyunÇizici : OyunÇizici { dchar[][] tuval; // bütün masanın çizildiği 'resim' // ... yukarıdaki işlevleri iki boyutlu dizi içine çizecek şekilde tanımlar }
KonsolOyunÇizici.çiz işlevi çok çok kolay olarak, tuval'in satırlarını art arda ekrana yazar. Ve örneğin şöyle bir çıktı elde edilir:
Oyuncu 1
Oyuncu 2 Oyuncu 3
Ali
5♢ K♡ K♠ 4♡
(Tabii tasarıma göre masada başka oyun nesneleri de bulunabilir.)
Ne dersiniz? Can'dan başkaları öncelikli olacak şekilde
bu konuda çalışmak isteyen var mı? 
Aslında aynı fikirden İşlevler dersinin 3 numaralı probleminde de söz etmiştim:
http://ddili.org/ders/d/islevler.html
Tabii başka birisi de GtkD veya QtD veya başka bir ortam için de yazabilir. Yukarıdaki kodlar da tamamen taslak...
Yazmaya başladıkça değişmesi gerekecektir...Ali
acehreli
Show profile
Link to this post