Satrançta Atın Hareketi(C++)
-
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
int tahta[8][8] = { 0 };
const int basX = 3;
const int basY = 3;
const int yatay[8] = { 1, 1, -1, -1, 2, 2, -2, -2 };
const int dikey[8] = { 2, -2, 2, -2, 1, -1 , 1, -1 };
void tahtaGoster()
{
int x;
int y;
for (x = 0;x < 8;x++)
{
for (y = 0;y < 8;y++)
{
cout << tahta[x][y] << " ";
}
cout << endl;
}
};
void hamleYap()
{
int hamle, rast;
int konumX = basX;
int konumY = basY;
int geciciX = 0;
int geciciY = 0;
while (hamle <= 64)
{
rast = rand()%8;
geciciX = konumX + yatay[rast];
geciciY = konumY + dikey[rast];
if (geciciX < 0 || geciciX > 7 || geciciY < 0 || geciciY > 7)
{ continue; }
if (tahta[geciciX][geciciY] == 0)
{
konumX = geciciX;
konumY = geciciY;
tahta[geciciX][geciciY] = 1;
system("cls");
tahtaGoster();
++hamle;
}
}
}
int main()
{
srand(time(NULL));
tahta[basX][basY] = 1;
tahtaGoster();
hamleYap();
getch();
return 0;
}Deitel'in kitabında çözüm örneği anlatıldığı şekilde bir program yazdım ama taş köşeye sıkışması olayı vs. var tamamlanamıyor tüm kareler ne yapabilirim ?
-
satranç işi çok zor iş müridim, kendini geliştirmek amaçlı tabi birşeyler yap ama fazla bulaşma derim :)
düşünüyorum birşey bulursam söylerim :D
-
Rastgele şekilde 64 kareyi gezmeye çalışıyosun sanırım sıkışma yüksek ihtimal olur zaten o şekilde sıkışma olduğunda tüm tahtayı sıfırlayıp baştan başlaman lazım ama baya uzun sürebilir.Basit bi yapay zeka algoritması kullanabilirsin hamlelere puan vererek sıkışma gerçekleşme ihtimali daha fazla olan yerleri tercih edebilirsin.
-
cplus.about.com/od/chess-engines/Source-Code-For-Chess-Engines-C-C-And-C.htm
incele.
-
geçen sene okul projemizdi C de yazdıydım ama şu anda ne yaptım ne ettiydim hatırlamıyorum bulursam atarım incelersin
-
İlgilenen arkadaşlara teşekkürler, Deitel'in kitabında seretide'nin dediği gibi bir çözüm önerisi sunmuş deniyim yapabilirsem yapıcam.