Dominion oyununun bilgisayar versiyonunu yazıyorum . Aksiyon kartları, hazine kartları ve zafer puanı kartlarının bir oyuncunun kişisel destesinde toplandığı sıra tabanlı bir kart oyunudur. Sınıf yapısını oldukça iyi geliştirdim ve oyun mantığını tasarlamaya başladım. Python kullanıyorum ve daha sonra pygame ile basit bir GUI ekleyebilirim.
Oyuncuların sıra sırası çok basit bir durum makinesi tarafından yönetilir. Saat yönünde döner ve bir oyuncu bitmeden oyundan çıkamaz. Tek bir turun oynanışı da bir durum makinesidir; genel olarak, oyuncular bir "aksiyon aşaması", bir "satın alma aşaması" ve bir "temizleme aşaması" (bu sırayla) içinden geçer. Sıra tabanlı oyun motoru nasıl uygulanır? Sorusunun cevabına dayanarak ? , durum makinesi bu durum için standart bir tekniktir.
Benim sorunum, bir oyuncunun aksiyon aşamasında, kendisi veya diğer oyunculardan biri veya daha fazlası üzerinde yan etkileri olan bir aksiyon kartı kullanabilmesidir. Örneğin, bir aksiyon kartı, bir oyuncunun mevcut turun bitiminden hemen sonra ikinci bir tur atmasına izin verir. Başka bir aksiyon kartı diğer tüm oyuncuların elinden iki kart atmasına neden olur. Yine de başka bir aksiyon kartı mevcut dönüş için hiçbir şey yapmaz, ancak bir oyuncunun bir sonraki dönüşünde ekstra kart çekmesine izin verir. İşleri daha da karmaşık hale getirmek için, oyuna sıklıkla yeni kartlar ekleyen yeni genişletmeler var. Bana öyle geliyor ki her aksiyon kartının sonuçlarını oyunun devlet makinesine kodlamak hem çirkin hem de uyumsuz olacak. Sıra Tabanlı Strateji Döngüsünün Cevabı bu sorunu çözmek için tasarımları ele alan bir ayrıntı düzeyine girmez.
Dönüş yapmak için genel modelin dönüş içinde gerçekleşen eylemlerle değiştirilebileceği gerçeğini kapsamak için ne tür bir programlama modeli kullanmalıyım? Oyun nesnesi her aksiyon kartının etkilerini takip etmeli mi? Veya, kartların kendi etkilerini uygulaması gerekiyorsa (örneğin, bir arabirim uygulayarak), onlara yeterli güç sağlamak için hangi kurulum gerekir? Bu soruna birkaç çözüm düşündüm, ancak bunu çözmek için standart bir yol olup olmadığını merak ediyorum. Özellikle, her oyuncunun oynanan bir aksiyon kartının bir sonucu olarak yapması gereken eylemleri izlemek için hangi nesnenin / sınıfın / neyin sorumlu olduğunu ve bunun normal sıradaki geçici değişikliklerle nasıl ilişkili olduğunu bilmek istiyorum. dönüş durumu makinesi.