क्या टुकड़े एक ही चाल में एक वर्ग से दूसरे में विभिन्न पथों का अनुसरण कर सकते हैं?

Dec 06 2020

मैं शतरंज का खेल लागू कर रहा हूं। मुझे नियमों की जानकारी है लेकिन मैंने इसे ज्यादा नहीं खेला है। मुझे एक छोटे से बिंदु पर स्पष्टीकरण की आवश्यकता है।

मान लीजिए कि कोई खिलाड़ी कानूनी रूप से वर्ग A से वर्ग B तक एक टुकड़ा ले जाता है, तो इस चाल के दौरान इस टुकड़े के पथ पर विचार करें। क्या यह टुकड़े के प्रकार के आधार पर भिन्न हो सकता है?

मैं इस तरह का मामला नहीं ढूंढ पा रहा हूं।

संपादित करें: - मैं इंटरफ़ेस कोड जोड़ रहा हूं जो मैं इसे अधिक स्पष्ट बनाने के लिए काम कर रहा हूं क्योंकि कुछ लोगों द्वारा अधिक संदर्भ देने के लिए कहा गया है।

public class Chess {

    ChessBoard chessBoard;
    Player[] player;
    Player currentPlayer;
    List<Move> movesList;
    GameStatus gameStatus;

    public boolean playerMove(CellPosition fromPosition, CellPositionb toPosition, Piece piece); 
    public boolean endGame();
    private void changeTurn();

}
public abstract class Piece {

Color color;
public boolean validate(CellPosition fromPosition, CellPositionb toPosition);
}

public class Knight extends Piece {
public boolean validate(CellPosition fromPosition, CellPositionb toPosition);

}

इसी तरह नाइट के रूप में अन्य टुकड़ों के लिए कक्षाएं होंगी। अब यदि कोई खिलाड़ी किसी स्थिति X से शतरंज में दूसरी स्थिति Y में स्थानांतरित करना चाहता है, तो टुकड़ा का मान्य () विधि प्लेयर शतरंज के खिलाड़ी () से पुकारा जाएगा, मान्य () केवल जांच कर सकता है कि चाल वैध है या नहीं। दिए गए टुकड़ों के लिए, नाइट कहो, यह जाँच करेगा कि दिए गए स्थान से, गंतव्य 8 वैध चालों में से एक है। इसके लिए यह चार दिशाओं में से कोई भी एक हो सकता है।

खिलाड़ीमूव () फ़ंक्शन कॉल को पी.एल.वलीडेट () फ़ंक्शन बनाता है और तब यह पता चलता है कि यह एक वैध चाल है। जिस समस्या को मैं संबोधित करने की कोशिश कर रहा हूं, अब एक बार शतरंज में प्लेयरमूव कार्य करता है, जानता है कि यह मान्य है चलते हैं, यह नहीं जानते कि दिए गए स्थान से गंतव्य तक के बीच कोई टुकड़ा है या नहीं? क्योंकि उस टुकड़े में बोर्ड का संदर्भ नहीं है, वह इस बात का पता नहीं लगा सकता है और इसे chess.So के कार्य में किया जाना है। स्रोत से गंतव्य तक शामिल होने वाले संभावित वर्गों की सूची बनाने के लिए यहां एक कोड लिखेंगे। क्या वर्गों की सूची हमेशा अद्वितीय होगी? या क्या यह अलग-अलग टुकड़े के लिए अलग हो सकती है? क्योंकि नाइट के अलावा, सभी सीधे या विकर्ण में चलते हैं इसलिए यह अद्वितीय होना चाहिए, इसलिए मैं इस पर स्पष्ट करना चाहता हूं। अगर अभी भी प्रश्न स्पष्ट नहीं है, तो कृपया मुझे बताएं। लेकिन

जवाब

4 BrianTowers Dec 06 2020 at 04:55

रानियों, बिशपों और बदमाशों के लिए वर्ग ए से वर्ग बी में जाने का केवल एक ही तरीका है कि इस कदम को बनाया जा सकता है और उस कदम को कानूनी बनाने के लिए बीच में सभी वर्गों को खाली होना चाहिए।

वर्ग ए से वर्ग में जाने वाले नाइट के लिए आम तौर पर दो तरीके होते हैं लेकिन यह अप्रासंगिक है क्योंकि नाइट्स रास्ते में टुकड़ों पर कूद सकते हैं।

कास्ट करने के लिए केवल एक ही तरीका है कि राजा ए से बी तक जा सकता है और कानूनी रूप से उस कदम के लिए हस्तक्षेप करने वाला वर्ग खाली होना चाहिए और राजा को पहले स्थानांतरित करना होगा। कास्ट करने के लिए केवल एक ही तरीका है कि बदमाश ए से बी तक जा सकता है और उस चाल के लिए राजा के अलावा सभी वर्गों को खाली होना चाहिए।

3 MikeD Dec 06 2020 at 04:42

नहीं, यह स्वाद का मामला है कि नाइट स्क्वायर से शुरू होने वाले अंत तक यात्रा कैसे करता है, लेकिन अंतिम वर्ग के लिए यह कैसे लिखा जाता है, इस पर कुछ भी नहीं लिखा गया है। कास्टलिंग के लिए वही है, जो कि गंतव्य चौक पर कैसे आता है, क्योंकि उसे राजा से आगे निकल कर वहां जाना पड़ता है, जो कि सिर्फ दो वर्ग की चाल है।

1 Acccumulation Dec 07 2020 at 11:04

विशेष मामलों पर विचार करने के लिए नाइट मूव्स, कास्टलिंग और प्यादा चालें हैं। शूरवीरों के पास वास्तव में एक रास्ता नहीं है; आप उन्हें अपने गंतव्य के लिए teleporting के रूप में सोच सकते हैं। कब्जे वाले वर्गों के माध्यम से आगे बढ़ने पर प्यादों और कलाकारों को समान प्रतिबंधों का पालन करना पड़ता है (उनके पास समान वर्ग हैं जो "उसी स्रोत और गंतव्य वर्गों के साथ किसी अन्य सामग्री के रूप में" से गुजरते हैं), लेकिन अतिरिक्त प्रतिबंध भी हैं। जब भी कोई राजा कास्ट करने के अलावा कहीं जाता है, तो वह किसी भी वर्ग से "नहीं गुजरता" है, इसलिए आपका सवाल वास्तव में सही नहीं है।

हर दूसरी चाल या तो एक चाल है या एक बिशप चाल है। जब भी कोई रानी चलती है, वह या तो एक चाल चलती है या एक बिशप चलती है। जब एक रानी एक बिशप चलती है, तो वह बिशप को हिलाने के समान नियमों का पालन करती है, और जिस रास्ते पर ले जाती है वह बिशप के समान है। जब यह एक बदमाश चाल चलता है, तो यह एक रूक के रूप में एक ही नियम का पालन करता है (उपरोक्त उल्लिखित कास्ट के अलावा)।

koedem Dec 08 2020 at 01:58

उन टुकड़ों के लिए जो शूरवीर नहीं हैं, वास्तव में जांच के लिए केवल एक ही रास्ता है। बदमाश, बिशप और रानी के लिए आप एक "रे" का पता लगाते हैं, एक राजा केवल एक वर्ग को चलाता है और शूरवीर अन्य टुकड़ों के बारे में परवाह नहीं करता है ताकि रास्ते में कोई फर्क न पड़े। तो यह जाँचने के लिए आपको यह सत्यापित करना होगा कि गंतव्य वर्ग एक अनुकूल टुकड़ा नहीं है (जैसा कि आप अनुकूल टुकड़ों को पकड़ नहीं सकते हैं) और किरणों को हिलाने वाले टुकड़ों के लिए कि बीच में सभी वर्ग खाली हैं।

बेशक यह एक विशेष मामला है क्योंकि यह अलग-अलग तरीके से पकड़ता है क्योंकि यह चलता है, मुझे आशा है कि आप इससे अवगत हैं। :

नोट: एक चाल के लिए कानूनी होने के लिए आगे बढ़ने वाले खिलाड़ी की चाल के बाद जांच नहीं होनी चाहिए। इसलिए आपको यह भी सत्यापित करना होगा। ऐसा करने का एक संभावित तरीका यह दिखावा है कि आगे बढ़ने वाले खिलाड़ी का राजा एक बदमाश है और देखें कि क्या यह दुश्मन के किसी बदमाश को पकड़ सकता है, तो वह दुश्मन बदमाश वास्तव में चेक दे रहा है। (अन्य टुकड़ों के लिए समान है और निश्चित रूप से एक बार फिर प्यादों के साथ सावधान रहें)

मैं यह भी नोट करूंगा कि मैं इसे बहुत अलग तरीके से लागू करूंगा लेकिन मुझे लगता है कि यह एक सीखने की परियोजना है, इसलिए ठीक होना चाहिए।