Site icon IT Tutorial

ATIN SATRANÇ TAHTASI ÜZERİNDE Kİ 64 HAREKETİ

Satranç tahtası üzerinde atın L hareketi yaparak 64 kareyi tekrar etmeksizin gezmeyi amaçlayan bir algoritmadır. Aşağıda C++ kodu verilmiştir anlaşılmayan yerleri sorabilirsiniz.

#include<iostream>
using namespace std;

int p[8][8],atama=1;
int seviye=8;
int x,y;
int recursive(int f,int g)
{
int a=f,b=g;
int count=0;

if((a>=0&&b>=0)&&(a<8&&b<8))
{
if((a-2>=0&&b+1<=7)&&(p[a-2][b+1]==0))
count++;
if((a-2>=0&&b-1<=7)&&(p[a-2][b-1]==0))
count++;
if((a-1>=0&&b+2<=7)&&(p[a-1][b+2]==0))
count++;
if((a-1>=0&&b-2<=7)&&(p[a-1][b-2]==0))
count++;
if((a+2>=0&&b+1<=7&&a+2<=7)&&(p[a+2][b+1]==0))
count++;
if((a+1>=0&&b+2<=7&&a+1<=7)&&(p[a+1][b+2]==0))
count++;
if((a+1>=0&&b-2<=7&&a+1<=7)&&(p[a+1][b-2]==0))
count++;
if((a+2>=0&&b-1<=7&&a+2<=7)&&(p[a+2][b-1]==0))
count++;
}
// a=f,b=g;
if(count<seviye)
{
seviye=count;
x=f;
y=g;
}
}

void appointment(int i,int j)
{
int a=i,b=j;
if(atama<=64)
{
if(p[a+2][b-1]==0)
if(!(a+2<0||a+2>=8))
if(!(b-1<0||b-1>=8))
recursive(a+2,b-1);
if(p[a+2][b+1]==0)
if(!(a+2<0||a+2>=8))
if(!(b+1<0||b+1>=8))
recursive(a+2,b+1);
if(p[a-1][b+2]==0)
if(!(a-1<0||a-1>=8))
if(!(b+2<0||b+2>=8))
recursive(a-1,b+2);
if(p[a+1][b+2]==0)
if(!(a+1<0||a+1>=8))
if(!(b+2<0||b+2>=8))
recursive(a+1,b+2);
if(p[a-2][b+1]==0)
if(!(a-2<0||a-2>=8))
if(!(b+1<0||b+1>=8))
recursive(a-2,b+1);
if(p[a-2][b-1]==0)
if(!(a-2<0||a-2>=8))
if(!(b-1<0||b-1>=8))
recursive(a-2,b-1);
if(p[a+1][b-2]==0)
if(!(a+1<0||a+1>=8))
if(!(b-2<0||b-2>=8))
recursive(a+1,b-2);
if(p[a-1][b-2]==0)
if(!(a-1<0||a-1>=8))
if(!(b-2<0||b-2>=8))
recursive(a-1,b-2);

p[i][j]=atama++;
seviye=8;
appointment(x,y);
}

}

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

main()
{
appointment(7,7);
print();
system (“pause”);
}

 

Atın 64 hareketinin C++ kodlanmış projesi aşağıdaki gibidir.

https://drive.google.com/open?id=1VevlrJqtQIW7mXzK2u0XDQYmQ-VERIdV

 

Exit mobile version