December 13, 2009

Şimdi g++ 4.3.3 ile de derleniyor. tar ve zip dosyalarını da bir düzey yukarıya yerleştirdim:

http://acehreli.org/turkcecpp/programlar/pisti/

Oynarken kendi düşünce seçeneğiniz için "0: Size sorsun"u seçmek gerekiyor. Yoksa öteki seçenekler, sizin yerinize de bilgisayarı oynatıyor.

davranis.h dosyasındaki ayarlarla oynayarak da programın davranışı değiştirilebiliyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 13, 2009

Alıntı (canalpay):

>

Ama şu sorun var bazı kartların özel puanları var.

Ben sinek ikiliyi '2*' olarak, karo onluyu da '0*' olarak gösterdim.

Alıntı:

>

Onun için bence bir kağıt çizmek gerekiyor. Bunun için ncurses'ten yararlanırsak daha iyi olur gibime geliyor.

Ama ncurses yine de konsol karakterleri kullanacak. Ama çok iyi olur, çünkü masanın dört tarafını da gösterebiliriz. Ayrıca Unicode'da kağıt oyunu renk karakterleri de var: ♠♡♢♣; ve ters olarak: ♤♥♦♧.

Alıntı:

>

Ama şimdilik ncurses projesini gerçekleştirelim. Her ne kadar ben nasıl yardım edeceğimi bilmesem de :-)

Ben de aynı durumdayım... ;)

O zaman şöyle düşünelim: Kağıt oyunlarına yönelik oyun masası kütüphanesi nasıl olur? (Bu da kesin vardır aslında. :) ) ncurses'i kullanarak ekrana masa çizen ve oyun motorundan aldığı komutlarla kağıtları yere atan, toplayan, vs. bir kütüphane. Örneğin bizim oyun kütüphaneye şöyle bir şey söyler:

masa.açarak_at(kağıt);

Oyun mantığı ile masa gösterimini böyle ayırmak güzel bir amaç...

Şöyle bir şey buldum:

http://drac-cardlib.sourceforge.net/

Onun ncurses kullananı gibi yani.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 13, 2009

Alıntı (canalpay):

>

TAmam ama asıl sorun ncurses'i nasıl D'de kullanacağız ?

Herhangi bir C kütüphanesini D'de kullanabilmek için şu adımlar gerekiyor:

  1. O kütüphanenin C başlıkları D programlarında "#include edilemeyecekleri" için, onlara karşılık gelen D iliştiricisinin yazılması gerekiyor.

  2. Programı derlerken komut satırına o kütüphane de ekleniyor

Ben bunu bir örneğini şu konuda yapmıştım:

http://ddili.org/forum/thread/31

Orada hem soruyu sormuşum, hem de ncurses için minicik bir örneği başarmışım.

Yalnız ben onu yazdıktan sonra önemli bir gelişme olmuş: O iliştirici artık çalışmıyor; çünkü D, 2.030'dan bu yana daha güvenli hale gelmiş ve bütün globalleri artık normalde TLS (thread local storage) bölgesine yerleştiriyormuş. Yani artık özellikle belirtilmezse, bütün evrensel değişkenler kendi iş parçacığına özel oluyor (veya yerel oluyor).

[O konuya ek yaparak bu durumu düzelttim.]

Bu konu şurada anlatılıyor:

http://www.digitalmars.com/d/2.0/migrate-to-shared.html

Ben de yakında kendi anladıklarımı yazacağım.

Alıntı:

>

Eğer öğle bir iş yapamazsak kendimiz sadece kağıtları renkleriyle çizen bir kütüphane yaparız.

Ben şöyle anlıyorum: ncurses'ciler zaten "ekranın şu noktasına şunu yaz" veya "şunu çiz" gibi işlevler yazmışlar.

Biz, o işlev ailesinin üstüne bir örneğin "oyun masası çiz" veya "güneydeki kağıt atsın" gibi işlevlerin olduğu bir katman yazacağız.

Böylece kağıt oyunu programları hiç ncurses ile ilgilenmeden ve onu bilmek zorunda olmadan, bizim katmanımızı kullanarak kağıtlarin ve oyuncuların etkileşimlerini gerçekleştirecekler.

Bu kütüphanenin denemesi olarak pişti oyunu düşünmüştüm ama daha da kolay bir şey olabilir. Hatta "papaz kaçtı" bile olur. :)

Alıntı:

>

Belki sonrada geliştiririz ve ncurses'e benzer bir kütüphane olur.

O da olur. Konsol kodlarını öğrenip belirli satırlara ve renkli yazdırmayı filan öğrenebiliriz. Yani ncurses'ün işini kendimiz yazarım ama yalnızca kendi işimize yarayan kadarını.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 23, 2009

Evet projeyi düşünüyordum ve aklıma ncurses gibi bir kütüphane yapıp o kütüphaneyi kullanan bir yama ile pişti kağıtlarının çizimini yapmak daha iyi olacağı geldi. Ama başka bir proje daha aklıma geldi.

Öğrenci Bilgilendirme sistemi.
1.Ders programını girecek.(Program otomatik olarak dersleri tanıyacak ve matematik ile Matmatiki aynı ders olup olmadığını sorabilecek.)
2.Ders programına hangi saatte dersin başlayıp başlanmadığı girilebilecek.
3.Dersten kaç aldığını ve sözlü notlarını girebileceksin ve istediğin zaman sorabileceksin(Derslerin ortalamasını alabilecek. Sana karne verebilecek...)
4. Hem günü(Daha doğrusu tarihi) hemde dersi belirterek ödev yazabileceksin ve istersen ders olarak ödev soracaksın yada şu tarihte ne var diye.
5. Not(NOTE) yazabileceksin.
------------------------DAHA SONRA OLABİLECEKLER---------------------------------
6. Derslerin öğretmenlerini ve arkadaşlarının adını filan yazıp onlar hakkında durumunu belirtip not verebileceksin.

Bunları sınıflar ile yapabiliriz. Veritabanı gerekir ama D ile Nasıl bir veritabanına bağlanır bilmiyorum. O yüzden dosya olarak yazdırıp onu okuyabiliriz. Falan filan. Bence öğrenciler için çok güzel bir program olabilir ve buna karşın konsoldan kontrol edilmesi sorun oluşturmaz.

Php ile çalışırken hep bunu yapmak istemişimdir.(Hatta oldukça ilerledim sayılırdı.)
matematik ile MAthemmatik yada matemtik'i ayırt etme işininde kabacasını python3.0'da yapmıştım. Bence güzel bir proje. Bu yapacağımız programı konsol kullanmasını bilen her öğrenci için yararlı olacaktır.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 23, 2009

Hem öğrencilerin hem de öğretmenlerin kullanabilecekleri bir program, değil mi?

Anlattıklarının içinde şu isimleri (sınıfları) görüyorum:

Öğrenci
Ders
Saat
DersProgramı
DersNotu
Karne
Ödev
BilgiNotu

İşlemler:

Ders programı düzenleme
Ders raporu
Ödev çözümü girebileceksin (yanlış anlamadıysam)

Bence uygun. Eğer senin ve şu sıralar sıfır kadar olan diğerleri için de heyecan vericiyse başlayalım. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 24, 2009

Öğretmenlerin kullanabileceğinden emin değilim. Onların e-okulu var her şeyi orada hallediyorlardır. Bizde sözde e okulda notlarımızı görebiliyoruz ama dersleri geç giriyorlar veya yanlış notlar girebiliyorlar. O yüzden not sistemi ve otomatik ortalama alma işi çok yararlı olacaktır.

Ayrıca bu dediklerimiz haricinde birde okula kaç gün gitmediğini hangi günler gitmediğini, gitmediğin günlerde (saat olarakta olmalı. ÖRN 3.derse girersin 4.derse girmezsin. O zaman 4.derse girmedin diyecek ve bir yarım gün yok yazacak.) raporlu olup olmadığını yazan yazan (Raporlu ve raporsuz ayrı sayılmalı) ve raporlu veya raporsuz 15'i geçince programdan kendi adınla açtığında uyarı veren bir sistemde olmalı.

Tabii bu işlemler sınıf ile yapılacaktır tahminim. Çünkü aslında proje çok geniş. Ama sınıf derslerini daha yazmadınız ve bende sınıfları çok iyi bilmiyorum. (Şuan sınıf ile bilgim sadece php4(5 bile değil ) sınırlı. Ve sınıflı yapı ayrı bir düşünce sistemi gerektiriyor. Bu yüzden beni biraz zorlayabilir.) Bu yüzden ben projeyi 2 kere yapmayı düşünüyorum. Örneğin ilk başta yarı yıl tatiline kadar projeyi gerçekleştireceğiz. Tabii derslerim olduğu için çok fazla ilgilenemeyeceğim. Sonra projenin ikinci sürümüne atlayıp en baştan önceki deneyimlerimiz ile geliştireceğiz.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 24, 2009

Ben kendi kafama göre bir yol haritası çizdim. Sizde bu yol haritasında eksiklerimi, fazlalıklarımı belirtirseniz sevinirim.

http://img189.imageshack.us/si.php?img=dokul.png

Burada gördüğünüz gibi bir çok sınıf birbirleriyle haberdar olmak zorunda. Bunun için yüksek bir standarta ihtiyacımız var normalde.(Siz şirkette bu sorunu nasıl hallediyorsunuz bilmiyorum.) Örneğin, ben karneyi göster modülünü yazdığımda sizin ders sınıfı ve sınıftaki işlemlerin adlarını bilmeden tahmin etmeliyim. Ama şimdilik şu şekilde yapmak uygun gibi gözüküyor. İlk önce birbiri ile alakasız olan işlev yada sınıfları yazarız. Örneğin notların ortalamasını alan bir işlev yada dersin doğru yazılıp yazılmadığını belirleyen, yazılmadığını belirlerse doğrusunu tahmin eden bir sınıf gibi. Daha sonrada birbiriyle alakalı işlevleri, sınıfları beraberce yazarız ve en sonunda program yolunu bulur.

Projeyi code.google.com'da açtım. dsource'da açmayı denedim ama açamadım :-( Trileri'ye dahil olan herkesi dahil ettim ki isteyen bize bir şey sormadan programları geliştirebilsin. Zaten programı geliştirmek için D dilini bilmek gibi bir şart aranmıyor, isteyen katılabilir. ;-) Ama en azından d.ershane'yi okuyun ve biraz forumu karıştırın. Proje adresi: http://code.google.com/p/d-okul/

Şimdi proje olarak aklıma takılan tek bir iş var. Veritabanı ne olacak ? Metin belgesi bunun için sizce yeterli mi ? Yoksa bir mysql gibi veritabanı gerekir mi ? (D'de nasıl kullanırız yada, kullanabilir miyiz ? Eğer kullanabiliyorsak bence gerekli. )

Eğer metin belgesi yeterli derseniz metin belgesi nasıl olacak ? Benim fikrim 1.öğrenciAdı adlı metin belgesi(.txt'nin dokul sürümü .dok :-) ) oluşturulur. Ama daha sonrası nasıl yapılandırılır ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 24, 2009

Alıntı (canalpay):

>

kendi adınla açtığında

Eğer kişisel bir programsa, tek bir bilgisayarda mı çalışır? Yoksa birden fazla kullanıcı nasıl bağlanacak?

Alıntı:

>

Tabii bu işlemler sınıf ile yapılacaktır tahminim.

Verinin türüne göre hangisi uygunsa. Bazı veriler sınıf olamayacak kadar "veri"dirler. (Stroustrup zamanında herşeyin sınıf olmasını savunurdu.)

Alıntı:

>

Çünkü aslında proje çok geniş.

Bana da öyle geliyor. ;) Küçükten başlamak gerek. İlk hali dersleri listeleyen bir program olabilir.

Ama bunlara geçmeden önce şimdilik akla gelen bütün kullanıcı hareketlerini (use case) belirlemek gerek:

  • Kullanıcı bağlanınca, okula gitmediği dersleri görecek
  • Gitmediği günler sınırın yüzde bilmem kaçıysa bir uyarı belirecek
  • Belirli bir ders için not ekleyebilecek
  • vs.

Ondan sonra, bütün bu hareketler önem sırasına dizilerek teker teker eklenir.

Alıntı:

>

Ve sınıflı yapı ayrı bir düşünce sistemi gerektiriyor

Sınıfların yapılardan birinci üstünlükleri, türüne göre davranışı çalışma zamanında belirleyebilmeleridir (çokşekillilik, polymorphism). Eğer hayvan.şarkıSöyle() dendiğinde hayvanın çalışma zamanındaki türüne göre davranmak gerekiyorsa, sınıflar büyük yarar sağlar.

Onun dışında da bir çok ayrıntı olanak var ama benim özümsediğim bu... Ana amaç çokşekillilik.

Yani sınıf düşünce tarzı o... :)

Alıntı:

>

ilk başta yarı yıl tatiline kadar projeyi gerçekleştireceğiz. Tabii derslerim olduğu için çok fazla ilgilenemeyeceğim

Benzer sıkışıklık burada da var. ;) Projenin olanaklarını küçücük küçücük yukarıdaki gibi sıralarsak yavaş yavaş ilerler.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 24, 2009

Alıntı (canalpay):

>

bu yol haritasında eksiklerimi, fazlalıklarımı belirtirseniz sevinirim.

http://img189.imageshack.us/si.php?img=dokul.png

Program geliştikçe ihtiyaçlar daha iyi ortaya çıkar.

Alıntı:

>

Burada gördüğünüz gibi bir çok sınıf birbirleriyle haberdar olmak zorunda. Bunun için yüksek bir standarta ihtiyacımız var normalde.

Evet, bir çok tür birbirine bağlı.

Alıntı:

>

Örneğin, ben karneyi göster modülünü yazdığımda sizin ders sınıfı ve sınıftaki işlemlerin adlarını bilmeden tahmin etmeliyim.

Tahminden uzak durmalıyız tabii ki. :) Tanımsız bir türle derleyemeyiz bile.

Aslında çokşekillik burada da yararlı olabilir. Önce Ders diye bir arayüz (interface) tanımlanır. Karne sınıfı, o arayüzü gerçekleştiren bir TestDers sınıfıyla yazılabilir.

Alıntı:

>

İlk önce birbiri ile alakasız olan işlev yada sınıfları yazarız.

Bağımsız olarak yazılabilmeleri çok önemli. Olabildiğince küçüük ve çok az sayıda görevi olan sınıflar ve işlevler...

Alıntı:

>

dsource'da açmayı denedim ama açamadım

Yanılmıyorsam proje açılması için onlara bir mesaj atmak gerekiyordu. Zaten oradaki bütün projeler İngilizce olunca bu biraz yabancı kalırdı.

Alıntı:

>

Trileri'ye dahil olan herkesi dahil ettim ki isteyen bize bir şey sormadan programları geliştirebilsin.

Eğer veritabanı kullanılacaksa bu konuda uzman birisine de ihtiyaç var.

Alıntı:

>

Veritabanı ne olacak ? Metin belgesi bunun için sizce yeterli mi ?

Metin dosyası, yeterlidir. Eğer verilerin kaydedilmeleri yeterince bağımsız ise, zaten perde arkasında ne kullanıldığının önemi yok: ders.kaydet(kaydedici). Kaydedici olarak ne verdiğimizi program bilemez.

Yani şimdilik metin dosyası yeter. dsource'a baktım ve FileBase diye bir proje buldum. Bu iş için yararlı olabilir.

Orada başka 'database' projeleri de var.

Yalnız D2 bu konularda hâlâ biraz sorunlu: bütün o projeler D1 için yazılmış. D2 şu sıralarda dondurulunca bütün o projelerin de D2'ye dönüştürüleceğini beklerim.

Yani bir süre daha sorunlu olacağız.

Öte yandan, içine hiç bakmadım ama FileBase gibi bir dosya veritabanı yazmak da ilginç olabilir.

Alıntı:

>

Yoksa bir mysql gibi veritabanı gerekir mi ? (D'de nasıl kullanırız yada, kullanabilir miyiz ? Eğer kullanabiliyorsak bence gerekli. )

Bana da gerekli olacakmış gibi geliyor. DDBI diye bir proje birden fazla veritabanını destekliyormuş:

http://dsource.org/projects/ddbi

Son hali github'daymış:

http://github.com/aaronc/ddbi/

Alıntı:

>

Eğer metin belgesi yeterli derseniz metin belgesi nasıl olacak ? Benim fikrim 1.öğrenciAdı adlı metin belgesi(.txt'nin dokul sürümü .dok :-) ) oluşturulur. Ama daha sonrası nasıl yapılandırılır ?

Öğrenciler bir dosyaya, dersler başka dosyaya, vs. yazılabilir. Her birisinin yanında bir de numarası olur (id). Ve ayrıca hangi öğrencinin hangi dersi aldığı o numarayla belirlenir.

Tabii aynı dosyada da durabilirler:


[öğrenci]
nesne_numarası 0
isim ali
dersler 2 5

[ders]
nesne_numarası 2
isim matematik

[ders]
nesne_numarası 5
isim ingilizce

Dosyadan okurken de o nesne bağlantıları kullanılabilir. (Daha önce böyle bir şey yapmadım; tahmin ediyorum. :) )

Ama belki FileBase zaten bunu yapıyordur. Veya DDBI kullanılır ve uğraşmaya gerek kalmaz. :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

June 30, 2010

Benim aklımda konsoldan çalışan ofis programı yazılması var.Ben daha D diline yeni başladım ama hızlı gelişiyorum.Biraz beklerseniz ben ve isteyen arkadaşların katılımıyla bunu yapabiliriz.

Not:Yok eğer biz hemen D ile kodlayalım derseniz ben de Python sürümünü oluştururum.Daha sonra da D projesine katılırım.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]