Çö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

Hectopat
Katılım
9 Haziran 2020
Mesajlar
6
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
Vezirin gidebildiği yerler derken? Vezir her yöne gider, bu yüzden gidişatınız yanlış.
 
Son düzenleyen: Moderatör:
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

Yardımınız için çok teşekkür ederim kodunuzu deneyeceğim
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…