Çözüldü C dilinde dosya üzerinde satranç tahtası oluşturma

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

arzeh

Decapat
Katılım
9 Haziran 2020
Mesajlar
5
Arkadaşlar C dilinde .txt uzantılı dosya üzerinde bir satranç tahtası oluşturup vezirin ulaşabildiği yerleri hesaplamaya çalışacağım. Nasıl bir döngü kurmam gerekiyor? 8x8'lik satranç tahtasında kareler 0 ile ifade ediliyor. Vezirin gidebildiği yerleri 1 ile ifade etmeye çalışacağız.
 
Son düzenleyen: Moderatör:
Çözüm
Daha şık bir çözüm bulamazsanız aşağıdaki gibi bir algoritmayla günü kurtarabilirsiniz.
Vezir, bulunduğu pozisyondan her yöne halkalar şeklinde pozisyonlarda ilerler. Genişleyen her halkada 8 nokta vardir.
Kod:
Vezir pozisyonu (x, y)

for(w = 1; w < 8; w++)
    p1(x, y-w) //güney
    p2(x, y+w) //kuzey
    p3(x-w, y) //batı
    p4(x+w, y) //doğu
    p5(x-w, y-w) //güney batı
    p6(x-w, y+w) //güney doğu
    p7(x+w, y-w) //kuzey batı
    p8(x+w, y+w) //kuzey doğu

//p noktaları oyun alanında bir noktaysa işaretle
Daha şık bir çözüm bulamazsanız aşağıdaki gibi bir algoritmayla günü kurtarabilirsiniz.
Vezir, bulunduğu pozisyondan her yöne halkalar şeklinde pozisyonlarda ilerler. Genişleyen her halkada 8 nokta vardir.
Kod:
Vezir pozisyonu (x, y)

for(w = 1; w < 8; w++)
    p1(x, y-w) //güney
    p2(x, y+w) //kuzey
    p3(x-w, y) //batı
    p4(x+w, y) //doğu
    p5(x-w, y-w) //güney batı
    p6(x-w, y+w) //güney doğu
    p7(x+w, y-w) //kuzey batı
    p8(x+w, y+w) //kuzey doğu

//p noktaları oyun alanında bir noktaysa işaretle
 
Son düzenleme:
Çözüm
Vezirin gidebildiği yerler derken? Vezir her yere gider, bu yüzden gidişatınız yanlış.

Sanırım biraz yanlış anlatmışım kusura bakmayın, yani demek istediğim şuydu aslında veziri bir konumda kabul ediyoruz ve vezir ileri geri çapraz hareketler yapabildiği için dizideki hangi bölgelerin 1 ile işaretlendiğini bulan algoritmayı yazıyoruz
Daha şık bir çözüm bulamazsanız aşağıdaki gibi bir algoritmayla günü kurtarabilirsiniz.
Vezir, bulunduğu pozisyondan her yöne halkalar şeklinde pozisyonlarda ilerler. Genişleyen her halkada 8 nokta vardir.
Kod:
Vezir pozisyonu (x, y)

for(w = 1; w < 8; w++)
p1(x, y-w) //güney
p2(x, y+w) //kuzey
p3(x-w, y) //batı
p4(x+w, y) //doğu
p5(x-w, y-w) //güney batı
p6(x-w, y+w) //güney doğu
p7(x+w, y-w) //kuzey batı
p8(x+w, y+w) //kuzey doğu

//p noktaları oyun alanında bir noktaysa işaretle

Yardımınız için çok teşekkür ederim kodunuzu deneyeceğim
 

Geri
Yukarı