SEKİZ (8) VEZİR OYUNUNUN C++ TA GERÇEKLENMESİ

Yayınlandı: Haziran 21, 2010 / Algoritmalar, C/C++
Etiketler:, , , , , , , , , , , ,

SEKİZ VEZİR,SATRANÇ TAHTASI ÜZERİNDE HİÇ BİR VEZİRİN BİRBİRLERİNİ TEHDİT ETMEYECEK ŞEKİLDE 8*8 LİK BİR MATRİS ÜZERİNDE DİZİLMESİYLE GERÇEKLENEN BİR OYUNDUR BURDA BEN RANDOM OLARAK YER BULMAYA ÇALIŞTIĞIM İÇİN BAZEN SONUÇ ÇIKMAYABİLİR BUNUN İÇİN BİR KAÇ DEFA KOŞTURULMASI GEREKEBİLİR.ANLAŞILMAYAN YERLERİ SORABİLİRSİNİZ.

#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;

char p[8][8];

void isaretle(int a,int b)
{
    int c=b;
    if(a==7)
     return;
    
     if(b==0&&a<7)
     {
        for(int i=a+1;i<8;i++)
           p[i][++b]=’,’;            
     for(int i=a+1;i<8;i++)
        p[i][0]=’,’;   
     }
     else if(b==7&&a<7)
     {
       for(int i=a+1;i<8;i++)
           p[i][–b]=’,’;     
        for(int i=a+1;i<8;i++)
        p[i][7]=’,’;   
     }
     else if(b!=0&&b!=7&&a<7)
     {
          for(int i=a+1;i<8;i++)
          {
           b++;      
           if(b<8)      
           p[i][b]=’,’;    
           else
           break;
           }
          b=c;
         for(int i=a+1;i<8;i++)
           p[i][b]=’,’;
           b=c;
         for(int i=a+1;i<8;i++)
         {
            b–;    
           if(b>=0)     
           p[i][b]=’,’;   
           else
           break;
           }
     }  
}

void deveci()
{
           for(int i=0;i<8;i++)
           for(int j=0;j<8;j++)        
           p[i][j]=’.’;    
}

bool okay(int a)
{
     int count=0;
     for(int j=0;j<8;j++)
     if(p[a][j]==’.’)
     count++;
    
     if(count==0)
     return false;
     else
     return true;   
}

void start()
{
     int y,count=0;

     for(int i=0;i<8;i++)
     {
        y:    
          int x=rand()%8;
             if(p[i][x]!=’.’)
                goto y;
         
          if(okay(i)==true)
          {    
           p[i][x]=’V’;
            isaretle(i,x);    
          }
          else
          {
          count++;
          break;
          }
     }    

}

void print()
{
    for(int i=0;i<8;i++)
    {
       for(int j=0;j<8;j++)           
        cout<<p[i][j]<<”  “;
        cout<<endl<<endl;   
    }  
    
}

main()
{
      srand(time(NULL));
      deveci();
      start();
      print();
     
     
     
system (“pause”);     
}

MEHMET SALİH DEVECİ

YAZILIM MÜHENDİSİ

Reklamlar
yorum
  1. Hakan dedi ki:

    Merhaba çok güzel bir konu teşekkürler..;)

    Benim bir sorum olucaktı? C#’Da console ekranında yazmak istiyorum yardımcı olursanız sevinirim.. :/

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      Aslında kodların tamamını C# ekranına entegre etmeniz çok kolaydır…zaten bu kod genel anlamda programlanmıştır bu yüzden C# a entegresi çok kolaydır sanırım kısa sürede gerçekleştirebilirsiniz.

  2. Hasan dedi ki:

    bu s,stemi console uygulamasına aktaramadım c# kullanıyorum . Bu konuda yardımcı olursanız çok sevinirim. Benim için önemli bir ödev

  3. hasan dedi ki:

    bu sanırım c++ da yazılmış. bunu c# a nasıl geçirebiliriz acaba.bilmediğim cok terim var ondan sanırım yardımcı olabilirseniz çok sevinirim yada bir iletişim bilgisi verirseniz size ulsassam

  4. Merve dedi ki:

    Ya benim bunu C de yazmam lazım :S C++ değil 🙂 ama nasıl yapıcamı bi türlü çözemedim yani mantığını anlamadım :SYardım ederseniz çok sevinicem :S

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      Merhaba merve hanım….Sadece bu uygulama için konuşuyorum Bu uygulama için yazdığım kod içerisinde sadece cout ve cin için printf ve scanf kullanmanız bununla beraber kütüphane olarak ise #include yerine #include ve #include kullanmanız yeterlidir…Bu değişiklikleri yaptıktan sonra ortaya çıkacak kod C ile yazılmış bir 8 vezir oyunu olmuş olacaktır…

  5. yusuf dedi ki:

    1 aydır c# da ugraşıyorum ve yapamadım artık aptal olduguma inanmaya başladım :S
    ne yaptıysam olmuyor ..

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      Estafirullah Yusuf bey…Öncellikle şunu söyliyeyim 8 vezir in C# lık tarafı pek yok çünkü algoritmik bir problemdir…O yüzden öncellikle problemin algoritmasını çıkarıp ardından kodlasanız iyi olur…

  6. yusuf dedi ki:

    abi yok ya bıktırdı beni artık ..ama ugraşıyorum yinede neden ugraşıyorsam..bir gün biiznillah bu soruyu cözücem cok yakında ..c# da yeni başladım belki bir türlü o yüzden cözemiyorum ama bilmiyorum artık kafayı yetirdi abi..

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      Dostum sen algoritmayımı çözemedin yoksa C# tarafındamı problem yaşıyosun???

  7. yusuf dedi ki:

    algoritmayı cözemedim galiba eger genelde tek algoritmamı kullanılır ? tam olarak bir bilgim yok mehmet abi bu arada meslek lisesi okuyorum..

    • yusuf dedi ki:

      meslek lisesi okuyorum dememin sebepi algoritmalar ve sayre konusu işlemedik abi daha yeni yeni yazılıma girdik .. acaba bu soruyu cözmek icin bir algoritmamı bilmek lazım..

      • BİLGİSAYAR MÜHENDİSİ dedi ki:

        EEE yusuf tabiki bu problem sadece algoritmik bir problemdir..İşin matematiğini algoritmasını çözdükten sonra programlaman iyise 1-2 saatte kodlarsın bu problemi…Zaten bu problemdeki en büyük şey Algoritmadır…

  8. yusuf dedi ki:

    ilk veziri koydugum yere göre bazen 8 tane vezir diziyor bazen de sıkışıyor 7 tane yada daha sacma birşey cıkartıyor acaba nasıl bir algoritma izlemeliyim cözüm icin abi ?

  9. yusuf dedi ki:

    tmm rabbime cok şükür yaptım..:) bir count degişkeni ile 8 vezirden fazla vezir varsa bir daha random üretiyor.bu sefer başarılı olunuyor : )

  10. yusuf dedi ki:

    rabbe hamd-ü senalar olsun diyelim..bu arada sen bende eklisin ama hic acmıyorsun abi : ) haberin olsun..

    • BİLGİSAYAR MÜHENDİSİ dedi ki:

      neyi hiç açmıyorum Face imi Msn imi??? Msn i ben nerdeyse hiç kullanmıyom ama face sürekli açık…

  11. guest dedi ki:

    iyi günler 8 vezir problemi konusunda sormam gereken bazı seyler var yardımcı olabilirseniz cok sevinirim

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s