Hi ! I have a C source code of Knight' Tour like
#include <stdio.h>
#include <winbgim.h>
#include <stdlib.h>
#include <conio.h>
#define N 8
void alternatif_bul(int,int);
void alt_say_hesapla();
int yeni_konum_bul();
void alt_dizi_sifirla();
int board[N][N]={0}; //satranç tahtası
int alt_x[8]={0}; //gidilebilecek alternatif karelerin X konumlarini tutuyor
int alt_y[8]={0}; //gidilebilecek alternatif karelerin Y konumlarini tutuyor
int alt_cikis[8]={0}; //alternatiflerden çıkışların sayılarını tutuyor
int fark_x[8]={-2,-1,1,2,2,1,-1,-2};//saat yonunde olusan farklar
int fark_y[8]={1,2,2,1,-1,-2,-2,-1};
int main(){
int i,j,sayac=1,gosterge;
int konum_x,konum_y,x,y,hareket;
int a[N];
printf("ilk konumu giriniz (X--satir 0-8) :\n");
scanf("%d",&konum_x);
printf("ilk konumu giriniz (Y--sutun 0-8):\n ");
scanf("%d",&konum_y);
if(konum_x<0 || konum_x>N-1 || konum_y<0 || konum_y>N-1)
{ //girilen konum değerleri matris içinde mi?
printf("girilebilecek degerler 0-%d arasinda olmali!",N);
return 0;
}
x=konum_x;
y=konum_y;
while(!(board[konum_x][konum_y])) //döngü,gidilecek kare ziyaret edilmediği sürece devam eder
{
board[konum_x][konum_y]=sayac++;
alternatif_bul(konum_x,konum_y);
alt_say_hesapla();
gosterge=yeni_konum_bul(); //gosterge degiskeni yeni_konum_bul fonksiyonundan dönen indisi tutuyor
if(gosterge!= -1)
{
konum_x=alt_x[gosterge];
konum_y=alt_y[gosterge];
}
alt_dizi_sifirla();
}
hareket=sayac-1;
for(i=0;i<8;i++) //eğer gosterge nin degeri -1 ise ve hala çıkış var ise(at sondan bir önceki hamlede ise)
if(konum_x+fark_x[i]>-1 && konum_x+fark_x[i]<N && konum_y+fark_y[i]>-1 &&konum_y+fark_y[i]<N && board[(konum_x+fark_x[i])][(konum_y+fark_y[i])]==0)
{
board[(konum_x+fark_x[i])][(konum_y+fark_y[i])]=sayac; //sayacın son degerini son kareye ata
hareket++;
}
printf("At %d,%d karesinden baslarsa,%d hamle yapar\n",x,y,hareket);
for(i=0;i<8;i++)
printf("%5c",'a'+i);
for(i=0;i<8;i++)
{
printf("%5d",i);
printf("\n");
for(j=0;j<8;j++)
printf("%5d",board[i][j]);
}
printf("Bir tusa basin!\n");
getch();
return 0;
}
void alternatif_bul(int x,int y)
{ /*atın bulunduğu kareden gidebileceği konumları bulur,X konumlarını alt_x dizisine,Y konumlarını alt_y dizisine atar.*/
int i;
for(i=0;i<8;i++)
{
alt_x[i]=x+fark_x[i];
alt_y[i]=y+fark_y[i];
}
}
void alt_say_hesapla(){/*alt_say_hesapla fonksiyonu alternatif karelerden gidilebilecek karelerin sayılarını (kareler daha önce gezilmemiş ve matris içinde //ise)alt_cikis dizisine atar.*/
int i,j,tmp_x,tmp_y;
for(i=0;i<8;i++)
if(alt_x[i]>-1 && alt_y[i]>-1 && alt_x[i]<N && alt_y[i]<N && !(board[alt_x[i]][alt_y[i]])) /*alternatif çıkış gezilmemiş ve */
for(j=0;j<8;j++) // tahta içinde mi?
{
tmp_x=alt_x[i]+fark_x[j];
tmp_y=alt_y[i]+fark_y[j];
if(tmp_x>-1 && tmp_y>-1 && tmp_x<N && tmp_y<N && !(board[tmp_x][tmp_y])) /* alternatif çıkış*/
alt_cikis[i]++; /*gezilmemiş ve tahta içinde ise çıkışa ait alternatif sayısını 1 arttır*/
}
}
int yeni_konum_bul(){ //alt_cikis dizisinin 0 hariç en küçük elemanının indisini döndürür.
int i,sayi=9,ind=-1;
for(i=0;i<8;i++)
if(alt_cikis[i]) //çıkış 0 ise döngüden çık
if(sayi>alt_cikis[i]){//çıkış 9 dan küçük ise
sayi=alt_cikis[i]; //sayıyı çıkış sayısına eşitle
ind=i; //ind değişkenine indisi ata
}
return ind; //indisi döndür
}
//alt_dizi_sifirla fonksiyonu yeni konum belirlendikten sonra alt_cikis dizisinin elemanlarına 0 atar.
void alt_dizi_sifirla(){
int i;
for(i=0;i<8;i++)
alt_cikis[i]=0;
Then I want to make graphics, ı mean ı want to show moves in Chess Board , are there any source code of this ?