Forum: Projeler Genel RSS
Kağıt oyunu masası kütüphanesi
Page:  1  2  next 
acehreli (Moderator) #1
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Subject: 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 (Moderator) #2
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #3
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #4
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #5
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #6
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Ş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
This post was edited on 2010-06-10, 09:08 by canalpay.
acehreli (Moderator) #7
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
In reply to post #5
Quote by 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 (Moderator) #8
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #9
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
Ş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.
This post was edited on 2010-06-10, 10:11 by canalpay.
canalpay (Moderator) #10
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #11
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #12
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #13
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #14
User title: Ali Çehreli
Member since Jun 2009 · 2279 posts
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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 (Moderator) #15
User title: Can Alpay Çiftçi
Member since Jul 2009 · 1032 posts · Location: İzmir
Group memberships: Genel Moderatörler, Üyeler
Show profile · Link to this post
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.
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please note the verification code from the picture into the text field next to it.
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Page:  1  2  next 
Forum: Projeler Genel RSS
Not logged in. · Lost password · Register
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Current time: 2012-05-18, 09:44:41 (UTC -07:00)