Program Papan Catur 8 * 8 Untuk Langkah Kuda (Knight)
PROGRAM PAPAN CATUR 8*8 UNTUK LANGKAH KUDA (KNIGHT) DARI KOORDINAT AWAL SAMPAI AKHIR YANG BELUM PERNAH DISINGGAHI
Program papan catur yang menggambarkan langkah kuda berpindah dari suatu koordinat awal ke koordinat akhir yang belum pernah disinggahinya sampai kuda tersebut tidak dapat berjalan lagi.
Hint: Gunakan Rekursi, Papan Catur 8 x 8 fixed
Algoritma Program :
1. Program menampilkan instruksi kepada user untuk memasukkan koordinat x awal kuda.
2. Program menampilkan instruksi kepada user untuk memasukkan koordinat y awal kuda.
3. Program mengisi kotak catur yang sesuai dengan koordinat dengan angka 1 sebagai detektor.
4. Program memanggil fungsi awal.
5. Fungsi awal akan membersihkan layar dan menampilkan koordinat kuda yang telah ditentukan user.
6. Fungsi awal akan menampilkan papan catur dengan dimensi 8 x 8 dan menampilkan karakter ’o’ pada koordinat yang telah ditentukan dan telah berisi angka1.
7. Program memanggil fungsi rekursi.
8. Fungsi rekursi akan memeriksa koordinat sesuai dengan 8 prioritas gerakan kuda yang telah ditentukan programmer secara berurutan dan berisi angka 0.
9. Jika koordinat tersebut telah memenuhi syarat, fungsi rekursi akan mengisi koordinat tersebut dengan angka 1. Kemudian fungsi rekursi akan memanggil fungsi sekarang.
10. Fungsi sekarang akan membersihkan layar, menampilkan koordinat kuda yang telah memenuhi syarat, dan papan catur dengan karakter ’o’ pada koordinat tersebut dan telah berisi angka 1, karakter ‘x’ pada koordinat lain yang telah berisi angka 1 saja, dan mengisi spasi pada koordinat lainnya.
11. Fungsi rekursi akan melakukan rekursi berulang kali hingga koordinat yang telah memenuhi syarat tidak bisa didapatkan lagi. Selanjutnya fungsi rekursi akan menampilkan informasi bahwa kuda tidak dapat bergrak lagi dengan statemen “There’s no way out for the knight>>”.
Source Code Program :
#include
#include
#include
int kotak[8][8];
void awal(int x1,int y1)
{
int a,b;
//system("cls");
clrscr();
printf("Koordinat awal kuda adalah : %d,%d\n",(x1+1),(y1+1));
printf(" 1 2 3 4 5 6 7 8 x\n");
printf(" --- --- --- --- --- --- --- ---\n");
for(a=0;a<=14;a++)
{
if(a%2==1)
printf(" --- --- --- --- --- --- --- ---\n");
else
{
printf("%d ",(a+2)/2);
for(b=0;b<=7;b++)
{
printf("|");
if(kotak[b][a/2]==1 && b==x1 && a/2==y1)
printf(" o ");
else
printf(" ");
}
printf("|\n");
}
}
printf(" --- --- --- --- --- --- --- ---\n");
printf("y\n");
getch();
}
void sekarang(int x1,int y1)
{
int a,b;
//system("cls");
clrscr();
printf("Koordinat kuda sekarang adalah : %d,%d\n",(x1+1),(y1+1));
printf(" 1 2 3 4 5 6 7 8 x\n");
printf(" --- --- --- --- --- --- --- ---\n");
for(a=0;a<=14;a++)
{
if(a%2==1)
printf(" --- --- --- --- --- --- --- ---\n");
else
{
printf("%d ",(a+2)/2);
for(b=0;b<=7;b++)
{
printf("|");
if(kotak[b][a/2]==1 && b==x1 && a/2==y1)
printf(" o ");
else
if(kotak[b][a/2]==1)
printf(" x ");
else
printf(" ");
}
printf("|\n");
}
}
printf(" --- --- --- --- --- --- --- ---\n");
printf("y\n");
getch();
}
void rekursi(int x2,int y2)
{
if(x2+1<=7 && y2+2<=7 && kotak[x2+1][y2+2]==0)
{
kotak[x2+1][y2+2]=1;
sekarang(x2+1,y2+2);
rekursi(x2+1,y2+2);
}
else
if(x2+2<=7 && y2+1<=7 && kotak[x2+2][y2+1]==0)
{
kotak[x2+2][y2+1]=1;
sekarang(x2+2,y2+1);
rekursi(x2+2,y2+1);
}
else
if(x2+2<=7 && y2-1>=0 && kotak[x2+2][y2-1]==0)
{
kotak[x2+2][y2-1]=1;
sekarang(x2+2,y2-1);
rekursi(x2+2,y2-1);
}
else
if(x2+1<=7 && y2-2>=0 && kotak[x2+1][y2-2]==0)
{
kotak[x2+1][y2-2]=1;
sekarang(x2+1,y2-2);
rekursi(x2+1,y2-2);
}
else
if(x2-1>=0 && y2-2>=0 && kotak[x2-1][y2-2]==0)
{
kotak[x2-1][y2-2]=1;
sekarang(x2-1,y2-2);
rekursi(x2-1,y2-2);
}
else
if(x2-2>=0 && y2-1>=0 && kotak[x2-2][y2-1]==0)
{
kotak[x2-2][y2-1]=1;
sekarang(x2-2,y2-1);
rekursi(x2-2,y2-1);
}
else
if(x2-2>=0 && y2+1<=7 && kotak[x2-2][y2+1]==0)
{
kotak[x2-2][y2+1]=1;
sekarang(x2-2,y2+1);
rekursi(x2-2,y2+1);
}
else
if(x2-1>=0 && y2+2>=0 && kotak[x2-1][y2+2]==0)
{
kotak[x2-1][y2+2]=1;
sekarang(x2-1,y2+2);
rekursi(x2-1,y2+2);
}
else
printf("\n<
}
main(void)
{
int x,y,x0,y0;
printf("Masukkan koordinat x awal kuda : ");
scanf("%d",&x);
printf("Masukkan koordinat y awal kuda : ");
scanf("%d",&y);
x0=x-1;
y0=y-1;
kotak[x0][y0]=1;
awal(x0,y0);
rekursi(x0,y0);
getch();
}
Kelebihan dan Kelemahan Program :
• Kelebihan Program
1. Program Catur Kuda yang telah kami buat ini dapat menampilkan program sesuai dengan contoh program Catur Kuda pada soal praktikum.
2. Pada program ini, kuda dapat berjalan layaknya kuda pada permainan catur.
3. User dapat menentukan sendiri posisi kuda yang diinginkan.
• Kelemahan Program
1. Program Catur Kuda yang telah kami buat ini belum dapat berjalan dengan cara berjalan kuda secara bergantian.
2. Kuda tidak dapat berjalan hingga koordinat terakhir. Dengan kata lain kuda akan menemukan jalan buntu sebelum semua koordinat terisi.
Kesimpulan :
Walaupun program masih jauh dari kesempurnaan, tetapi program ini sudah dapat berjalan layaknya jalan kuda pada permainan catur dan user bisa memanfaatkan program ini sekedar untuk mengenal gerakan – gerakan kuda pada permainan catur. Selain itu, kami telah mendapatkan tambahan ilmu dari materi yang diberikan kakak asisten serta pengalaman (jam terbang) dalam membuat program ini serta program lain dalam modul ini yang mempunyai materi String dan Rekursi.
Nama : Rina Yuliana Siagian
Kelas : 3IA07
NPM : 50407731
0 Response to "Program Papan Catur 8 * 8 Untuk Langkah Kuda (Knight)"
Posting Komentar