OpenSource Satranç Projesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

OpenSource Satranç Projesi

Mesaj gönderen mussimsek »

Merhaba,

karflake arkadaşımız bu açık kaynak kodlu projesini bana gönderdi ve forumdaki arkadaşların da mevcut kodlara katkılarıyla projeyi daha da geliştirmek istediğini söyledi.

Kodları http://www.delphiturkiye.com/dsplus/m.php?p=satranc.zip linkinden indirebilirsiniz. Pakette projenin kaynak kodları yer alıyor. Ayrıca "benioku.txt" isimli dosyada detaylar var.

karflake arkadaşımız gerekli izahatları verecektir.

Katılımlarınızı ve varsa benzer projelerinizi bekliyoruz :)

Kolay gelsin.
En son mussimsek tarafından 07 Mar 2006 01:49 tarihinde düzenlendi, toplamda 3 kere düzenlendi.
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Açıklama

Mesaj gönderen karflake »

İyi günler.
Arkadaşlar yukarıdaki linkten kaynak kodlarına ulaşabileceğiniz programın amacı şudur:

Satranç oynarken hamleleri daha sonra inceleyebilmek için kaydetmek gerekir. Bu kaydetme işleminin yaygın olarak kullanılan iki yolu var.

Bildiğiniz gibi satranç tahtası 8 satır ve 8 sütundan oluşur. Satırlar 1-8 arası rakamlarla, sütunlar ise A-H arası harflerle tanımlanır. Örneğin satranç tahtasının sol alt köşesindeki karenin koordinatları A1'dir. Bir satranç tahtasının doğru olarak konumlanabilmesi için her vezir kendi rengindeki karede bulunur ve sağ alt köşede her zaman beyaz karenin olması gerekir.

Hamleleri kaydetmenin ilk yolu, taşın bulunduğu hücrenin ve taşın gideceği hücrenin koordinatlarını yazmaktır.
ÖR: b1-c3 //vezir tarafındaki atı oynamak için

Yukarıdaki hamleyi yazmanın diğer yolu da, hareket eden taşın adının kısaltmasını ve taşın gideceği yeri yazmaktır.
ÖR: Ac3 //At c3 karesine gider

Satranç programlarının çoğu standart olarak 2. yolu benimsemişlerdir ve bu şekilde oluşturulan dosyalara PGN adı verilmektedir.

Fakat internet üzerinde satranç oynanan bir çok yerde(mesela Yahoo Games) hamleler ilk yolla kaydedilmekte. Bunun sonucunda siz bu hamleleri bilgisayarınızda analiz edebilmek için satranç programızı açıp, hamleleri teker teker girmelisiniz.

İşte yukarıdaki linkten indirebileceğiniz program, 1. yolla yazılmış hamleleri 2. yolla yazılmış hale çeviriyor. PGN formatında taşların isimleri İngilizce. Aşağıdaki hangi taşların hangi harfle simgelendiği yer almakta(Büyük yazılan harf, taşın simgesidir.)

Piyon: pawn (piyon hamlelerinde taşın adı yazılmaz.)
Kale: Rook
At: kNight
Fil: Bishop
Vezir: Queen
Şah: King

Yukarıdaki kurallara ek olarak, her iki hamle yazma yazımında da yeme işlemi x il belirtiliyor.
ÖR: b1xc3 //1.yol
ÖR: Nxc3 //2.yol
Küçük ve büyük rok her iki biçimde de o-o ve o-o-o ile gösteriliyor.

Yukarıdaki zip dosyasının içinde gerekli örnekler yer almakta.

Program şu an işini yapabiliyor, ama geliştirilecek çok yönü var. Bununla ilgili ayrıntılar da zip dosyasının içinde. Kodların bu sitede yayınlanmasının amacı da gönüllü bir çalışma grubu oluşturarak programı geliştirmek. Her türlü görüşlerinizi bekliyorum.

Ayrıca yukarıdaki kodlar -acemice yazılmış da :cry: - olsa yeni başlayanlara da yardım edebilir.

Eğer programı geliştirmeyi deneyecekseniz size şimdiden iyi eğlenceler, çünkü ben kodları yazarken çok eğlendim...

Herkese iyi çalışmalar.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

OpenSource Satranc

Mesaj gönderen Kuri_YJ »

Merhaba,

Maalesef ben source'u açamadım :!: Bende Delphi 5.0 var Form1'deki Label1 ile ilgil hatalar veriyor başkaları için de veriyor ve ben de Ignore dedim belki açar diye maalesef açmadı.

Yanlış Nerede?

Kolay Gelsin.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

kodlarda bir sıkıntı yok. Ben Delphi 7 ile açtım.

Bir ihtimal dfm dosyasındaki Türkçe karakterler sıkıntı yapıyor olabilir. Sadece dfm dosyasını açıp, burdaki aşağıdaki örnekte olduğu gibi gözüken karakterleri İngilizce harflerle değiştir.

Caption = 'D'#246'n'#252'st'#252'r'#252'c'#252


Mesela burda Dönüştürücü yazıyor, sen Donusturucu yap.

Kolay gelsin.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

karflake arkadaşımız güzel bir hareketle kodunu bizlerle paylaştı ama gördüğüm kadarıyla pek rağbet yok. Bence sizin için de iyi bir tecrübe olur. İş hayatında çok karşılacaksınız çünki :) Başkalarının kodunu anlayıp, çözüp geliştirmeniz gerekecek.

Benim aklıma ilk gelen satranç tahtası ve piyon, at gibi taşların hareketinin grafik olarak gösterilmesi geldi. Hem programa güzel bir hava katar, daha estetik olur.

:idea: Katılımlarınızı bekliyoruz.

İyi günler.
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Mesaj gönderen karflake »

Merhaba.
Program işinize yarıyor mu?
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

hocam üzülerek belirtiyorum ki bu saate kadar pek talep olmadı, bu saatten sonra olacağını da sanmam. Bence bu işi unutalım. 5-6 senedir bu işte olan biri olarak pek birşey çıkacağını sanmıyordum zaten :(

Maalesef genel karakteristik bu. Bir kısım sadece işi düştüğü zaman uğrarken, bir kısımda çok yoğun çalışıyor.

En iyisi senin bazı özellikler belirleyip, aşama aşama kendin yapman. İlk etapta dediğim gibi tahtayı ve hamleleri grafiksel olarak gösterme işini yapabilirsin. Takıldığın noktalarda yardımcı olmaya çalışırım.

Kolay gelsin.
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

İnanın ben bu başlığı yeni gördüm. Bilmiyorum ne kadar doğru ama kodları incelemeye başlayacağım.
Belki boş zamanlarımda bişeyler yapabilirim.
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Arkadaslar bir aralar bir satranc bileseni bulmustum (free)
ama bilesen deyip gecmeyin aslında bir program gibi bir sey
eger birseyler yapılacaksa bu belki bir fikir verebilir.
http://www.resplendence.com/chessbrd

benimde gecenlerde aklıma soyle birsey gelmisti.
yahoo satranc ortamını bilenler bilir. orası kadar kapsamlı olmasada basitce,
bir lan ag icinde bir server program idaresi ile clientlar satranc musabakası yapacaklar, oyunlar database e yazılacak puanlama vs. olacak
eski oyunlar tekrar izlenebilecek. isin gorsel kısmı linkte gonderdigim tahta bileseni. kullanımı da cok raht
bir inceleyin derim
vaktim oldugunca boyle bir proje yapmak isterim.
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- Sohbet bölümündeki diyalogdan verdiğin link sayesinde burayı farkettim ve örneği incelemek üzere indirdim... Ellerine sağlık güzel çalışma olmuş... :wink:
@karflake yazdı:Bildiğiniz gibi satranç tahtası 8 satır ve 8 sütundan oluşur. Satırlar 1-8 arası rakamlarla, sütunlar ise A-H arası harflerle tanımlanır. Örneğin satranç tahtasının sol alt köşesindeki karenin koordinatları A1'dir. Bir satranç tahtasının doğru olarak konumlanabilmesi için her vezir kendi rengindeki karede bulunur ve sağ alt köşede her zaman beyaz karenin olması gerekir.
- Programı çalıştırdığımda ekran düzenini bu açıklamana göre karşılaştırdım.

- Buradaki açıklaman doğru olmasına rağmen -sağdaki beyaz taş dizilişine göre- sol alt kare A1 değil, A8 oluyor... şöyle ki...

- Hareketlerin doğruluğu adına adım adım elle ilerlemek adına Cevir procedure'ünü değiştirip Cevir2 ismiyle variable yaptım. Sonra da ListBox üzerinde mouse ile click ettiğim harekete kadar olan kısmı emule etmesini sağladım...

- Gördüm ki, ilk hamleler olan d2-d4 g8-f6 hamle-karşıhamlesine karşılık, d7-d5 g1-f3 gibi bir hareketlenme ile tepki aldım...

- Uzun lafın kısası, rakamlar 1..8 değil de 8..1 olursa doğru kodlama ile doğru hamleler örtüşüyor.

Kod: Tümünü seç

procedure TForm1.LstYahooClick(Sender: TObject);
begin
  lstdene.Clear;
  // cevir;
  Cevir2(5, lstyahoo.ItemIndex);
end;

Kod: Tümünü seç

procedure Tform1.cevir2(Basla, Bitis : Integer);
var
  say:byte;
  tut,tut1,tut2:string;
begin
  say:=0; //lstdene.Clear;
  baslangic_konumu;
  lstdene.items.Add('[Event "'+'Yahoo Chessgame'+'"]');
  lstdene.items.Add('[Site "'+'Yahoo'+'"]');
  lstdene.items.Add('[Date "'+datetostr(date)+'"]');
  lstdene.items.Add('[Round "-"]');
  lstdene.items.Add('[White "'+copy(lstyahoo.Items[1],8,lstyahoo.Items.Count-8)+'"]');
  lstdene.items.Add('[Black "'+copy(lstyahoo.Items[2],8,lstyahoo.Items.Count-8)+'"]');
  tut1:=lstyahoo.Items[lstyahoo.Items.Count-1];
//Aşağıdaki kısım tam doğru çalışmıyor olabilir.
  if tekrar_sayisi(tut1,'+',false)>=2 then
  begin
    if length(tut1)<=12 then
    lstdene.items.Add('[Result "1-0"]')
    else lstdene.items.Add('[Result "0-1"]');
  end
  else lstdene.items.Add('[Result "1/2-1/2"]');
  lstdene.items.Add('');
  for i:=Basla to Bitis do
  begin
    say:=say+1;
    tut:=lstyahoo.Items[i];
    tut:=copy(tut,pos(' ',tut)+1,length(tut)-pos(' ',tut));
    tut1:=beyaz_hamle(copy(tut,1,pos(' ',tut)-1));
    tut1:=degisen_piyon(tut1);
    tut2:=siyah_hamle(copy(tut,pos(' ',tut)+1,length(tut)-pos(' ',tut)));
    tut2:=degisen_piyon(tut2);
    tekrar_sayisi(tut1,'P',true);
    tekrar_sayisi(tut2,'P',true);
    lstdene.Items.Add(inttostr(say)+'. '+tut1+' '+tut2);
    goster;
    if ChkBgoster.Checked then ShowMessagePos(inttostr(say)+'. Hamle',250,200);
  end;
  lstdene.Items[lstdene.Items.Count-1]:=TrimRight(lstdene.Items[lstdene.Items.Count-1])+'#';
  lstdene.Items.Add('');
  calisma:=calisma+1;
  if k>1 then
  cok_oyun_isle(calisma);
end;
:arrow: Tahtadaki renkler için ise aşağıdaki ekleme yapılınca biraz görsellik kattık...

Kod: Tümünü seç

procedure TForm1.durumDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  // StringGrid2.DefaultDrawing:=false; yaptık
  with TStringGrid(Sender), TStringGrid(Sender).Canvas do
  begin
    If ((ACol div 2) * 2 <> ACol) AND ((ARow div 2) * 2 <> ARow) OR
       ((ACol div 2) * 2 = ACol) AND ((ARow div 2) * 2 = ARow) then
    begin
      Brush.Color := $00ECEFF0; // Açık Gri
      FillRect(Rect); 
    end
    else
    begin
      Brush.Color := clWhite;
      FillRect(Rect);
    end;
    Font.Style := [fsBold];
    TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow])
  end;
end;
Resim
Resim
Resim ....Resim
Kullanıcı avatarı
vampir261
Üye
Mesajlar: 298
Kayıt: 23 Kas 2004 03:22
Konum: Denizli

Mesaj gönderen vampir261 »

başlığı yeni gördüm hemen indireceğim kusura bakmayın
:oops:
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

mussimsek yazdı:
Maalesef genel karakteristik bu. Bir kısım sadece işi düştüğü zaman uğrarken, bir kısımda çok yoğun çalışıyor.
Kolay gelsin.
başlığı yeni gördüm çünkü bir kaç gündür faruma uğrayamıyorum işlerim biraz yoğun bazen messengeri bile açamıyorum

dosyayı indirdim burda delphi olmadığı için deneyemiyorum evde deneyeceğim.
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Bende bu sabah gördüm,kusura bakmayın çalışmaktan başımı kaldırma fırsatım olmuyor fazla
Eline sağlık güzel olmuş.İncelemeye başladım bile..

Kolay gelsin.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
ASE
Kıdemli Üye
Mesajlar: 518
Kayıt: 28 Ağu 2003 03:17
Konum: samsun
İletişim:

Mesaj gönderen ASE »

Temmuz 2003 - Nisan 2005 ilginç ama hala ben dahil konuyla ilgili bişey yapan çıkmamış. Yenider Bismillah diyelim o zaman....
Allah'ım!...
Yol boyunca bırakma elimi...
Düşerim sonra...


ASE YAZILIM
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Mesaj gönderen karflake »

mrmcop yazdı:... Ellerine sağlık güzel çalışma olmuş... :wink:
Yorumunuz ve katkılarınız için çok teşekküler. En yakın boş vaktimde yaptığınız katkıları inceleyeceğim.

İnanıyorum bir gün Google'da "yahootopgn" şeklinde arama yapan satrançseverlerin karşısına Delphiturkiye çıkacak...
Cevapla