Forum: Projeler Genel RSS
Kağıt oyunu masası kütüphanesi
Sayfa:  1  2  sonraki 
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4391 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Kağıt oyunu masası kütüphanesi
Pişti oyununu D'de yazmaya ne dersiniz? Daha önce C++'ta yazmıştım.

Oyunun kuralları oldukça kolay. Bilgisayara pişti oynatmak ilginç olabiliyor. Bilgisayar farklı şekillerde akıl yürütebiliyor:

- rastgele kağıt atan
- valeyi hemen oynayan
- vs.

D'de de ilginç olacağını düşünüyorum.

Ama öncelikle bir kağıt oyunu masası kütüphanesi olmalı. Kağıt oyunu programları o kütüphaneye "kuzeyde oturan kişi sinek ikiliyi attı" diyebilmeli ve kütüphane de kağıdı masaya açmalı.

Bu kütüphane, oyundan bağımsız olmalı ve yalnızca kağıtların ekrandaki görünümlerini halletmeli.

Başka dillerde böyle kütüphaneler olduğundan eminim ama hiç bakmadan kendimiz yapalım mı? İlgilenir misiniz?

Ali
canalpay (Moderatör) #2
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Benden eveti aldı. Ama bunun için çok az bir zaman daha bekleyelim.

Benim D bilgilerimi güncellemem gerekecek. Çoğu şeyi unutmuşum. Yada siz başlayın ben gelirim.
canalpay (Moderatör) #3
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ama öncelikle bir kağıt oyunu masası kütüphanesi olmalı.

Yani iki ayrı proje şeklinde ilerleyecek.

Projenin biri giriş çıkışları halledecek. Yani görselliği o proje yapacak. Arka plandaki işleride başka bir proje. O görselliği sağlayacak olan projeyi curses ile mi yazacağız ?
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4391 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Evet, ncurses uygun olabilir, ama GtkD veya başkası da olabilir. Bir kere "şu oyuncu elindeki şu kağıdı masaya atsın" gibi istekler belirtebilsek, ve asıl program mantığında onu çağırabilsek, aynı oyun birden çok ortamda oynanabilir.

Hatta, yukarıdakilerden çok daha basit iki yöntem daha var:

- Programın çıktışı iki boyutlu bir dchar dizisi olarak durur ve bütün değişiklikler bu "ekranda" yapılır. Her seferinde de bütün satırlar çıktıya writeln ile yazdırılırlar. Eğer kendi penceremizin büyüklüğünü tam ona göre ayarlarsak, yeni çizilen çıktı öncekileri yukarıya ittirir ve sanki ncurses gibi çalışır. :) Çok ilkel ama öyle çalışan konsol programları olmuştu.

- Programın çıktısı bir log gibi olur ve bir radyoda anlatılıyor gibi "şu oyuncu yere sinek 3 attı" gibi alt alta bilgi verir. :) Çok kullanışsız olur ama olur...

Ali
canalpay (Moderatör) #5
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
GtkD'de ncurses'de öğrenilmesi zor olur.

Biz kendimiz basit olarak konsola yazdırırız.

- Programın çıktısı bir log gibi olur ve bir radyoda anlatılıyor gibi "şu oyuncu yere sinek 3 attı" gibi alt alta bilgi verir. :) Çok kullanışsız olur ama olur...

Olur ama ne olursa olsun elimizde hangi kağıtlar var ve yerde hangi kağıtlar var ekrana bakarak bilmeliyiz.

Siz zaten c++ yazmıştınız. Onun görselliğini tam hatırlamıyorum ama yeniden kurup bakarım. Onun görselliği yeterince iyi idi.
canalpay (Moderatör) #6
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Şim piştinize baktım daha iyisini daha kolay yapabiliriz. Unicode ile nasıl olsa kart şekilleri çıkarabiliyoruz.

Şu şekilde çıkışa göndeririz.

Yerdekiler:
 ♠5  ♠4♡2♢4♣4(soldaki en son atılan)

Elinizdekinler:
 ♠4 ♠5  ♠6  ♠7

Hangisini atmak istesiniz ? 4ağaç

 ♠4 atıldı. gibi
Bu mesaj canalpay tarafından değiştirildi; zaman: 2010-06-10, 09:08.
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4391 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #5
canalpay:
Biz kendimiz basit olarak konsola yazdırırız.

Ben de aynı fikirdeyim. :D GtkD olanını başkaları yapsın! :p

Şimdi önemli olan, masadaki işlemlerle oyundaki işlemleri birbirlerinden güzel bir çizgiyle ayırmak. Ne masanın oyundan haberi olmalı, ne de oyunun masadan.

Kavramlar şöyle mi olmalı acaba:

- Oyuncu: eldeki kağıtlara göre akıl yürütür ve hangi kağıdı attığını bildirir

- Hakem: oyunun kuralları işletir; örneğin atılan kağıda göre yerdekilerin hepsini bir oyuncuya verir; oyuncular "sıra_sende" der; belki kağıtları da dağıtır

- Masa: şu oyuncu şu kağıdı yere atsın gibi görsel işleri halleder

- başka?

Ali
canalpay (Moderatör) #8
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Kağıtlar: Bütün kağıtlar tanımlanır. Puanları tanımlanır.
Masa: Kağıtlar masaya gelir.(örnek dchar[] kağıt = Joker ) Ve masa kağıtları gösterir. Ve gereken diğer şeyleri.

YapayOyuncu:eldeki kağıtlara göre akıl yürütür ve hangi kağıdı attığını bildirir
Neyse aklıma şuan çok iyi gelmiyor. Kağıt kalem alıp düşünmek gerekiyor.
canalpay (Moderatör) #9
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Şuanki düşüncem:

Kart    : Kart davranışları ve puanları tanımlanacak.
 
Örnek: Vale masada açılmış ise bütün kartları vale atana aktarabilir ve valenin puanı bir puandır.

Görevli : Puanları sayacak. Puanarı oyuncuya aktaracak... Oyuncuya kart çektircek...

Spiker :
Son olayları yazı dilinde masaya aktaracak.

Hakem : Bütün işlemleri ayrıca kontro edecek. (Hatta sözleşmeli programlama filan  kullanmasak burada kontrol etsek daha iyi gibi. Yoksa okunabilirlik azalıyor.)

Masa    : Spikerin dediklerini aktaracak kartları oyuncuları gösterecek. Yani kısaca programın giriş çıkış işlemlerini halledecek.

Oyuncu: Hangi kartı oynayacağını karar verecek. Yani yapayzeka.
Bu mesaj canalpay tarafından değiştirildi; zaman: 2010-06-10, 10:11.
canalpay (Moderatör) #10
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bu arada hangi sunucu da projeyi barındıracağız ? Eğer alıştık dersek code.google.com ile devam edebiliriz. Yok başka bir heyecan arayalım dersek benim gözümde şimdiye kadarki en büyük proje barınağı sourceforge.net'te barındırabiliriz. Ayrıca orda ücretsiz olarak projenin sitesini yapabiliyorsun. Ben şimdilik pisti diye bir proje açtım:
https://sourceforge.net/projects/pisti/  Sizde üye olup üyelik adınızı bana söylemeniz ve benim eklemem gerekiyor sanırsam. Yada siz başka ad ile proje oluşturup beni(üyelik adım:canalpay) ekleyeceksiniz.
acehreli (Moderatör) #11
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4391 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
sourceforge.net olabilir. Üye olacak bir yer daha! Ah! :)

Türkçe proje siteleri var mı? Öyle bir sitede bulunursak belki başkalarının da ilgisini çekebiliriz.

Ali
canalpay (Moderatör) #12
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
sourceforge.net de sanırım google gibi servisler ile bağlanabiliyorsunuz. Yani openid connection with facebook gibi uygulamarla bağlanabiliyorsunuz. Zaten google hesabınız olduğundan yeni üyelik almanıza gerek kalmayacaktır bence.

Türkçe proje siteleri var mı? Öyle bir sitede bulunursak belki başkalarının da ilgisini çekebiliriz.
Ben şimdiye kadar bir tane görmüştüm. O da gördüğüm gün kapalı idi. Aslında sourceforge.net çok zor gözükmüyor. Ben bile kolaylıkla hesap açtım ve hemen hemen çoğu şeyi anladım.
canalpay (Moderatör) #13
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
isterseniz github'da barındıralım. Zaten Mengü Beyde github'ı seviyordu.bitbucket.org da olabilir. Yada direk code.google.com'dan devam edelim.
acehreli (Moderatör) #14
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4391 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Evet, github iyi olur. Benim gibi svn ve daha öncesindeki mantığa sahip projelerden sonra git'i anlamak gerekecek.

git'in farkının bile ne olduğunun anlaşılamadığını duyuyorum. :) Çünkü anladığım kadarıyla eksikliğini eleştirdikleri bir olanak svn'de de var ama "yok" diyorlar. :) git'çiler, svn'deki bir eksiklik olarak, bir grup dosyadaki değişikliklerin hepsinin birden tek bir değişiklik olarak ele alınamadığını söylüyorlar. Ama svn'nin sürüm numaraları o işi yapıyor işte... (?) Görüldüğü gibi ben daha git'i anlamış değilim. :)

Ali
canalpay (Moderatör) #15
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Eğer github kullanırsak bana ne yapmam gerekeceğini adım adım anlatmanız gerekecek.  Saatlerce uğraştım olmadı sonra farkettim. ssh ile ilgili birşeyler olcak. Ben de sıkıldım.
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  1  2  sonraki 
Forum: Projeler Genel RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-04-30, 15:38:52 (UTC -07:00)