तो मैं एक शतरंज खेल बना रहा हूं, हालांकि मुझे बिशप टुकड़ा सही ढंग से नहीं चल रहा है।सी ++ - शतरंज बिशप MoveCode त्रुटि?
string board[8][8] = {
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "B" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"},
{"_" , "_", "_" , "_" ,"_", "_" , "_" , "_"} };
यहाँ बोर्ड आकर्षित करने के लिए ड्रा समारोह है:
यह मेरी बिसात है।
void Draw()
{
for(int i = 0; i < 8; i++)
{
for(int j = 0; j < 8; j++)
std::cout << board[ i ][ j ] << ' ';
std::cout << '\n';
}
cout<<"\n";
}
बिशप मूवमेंट कोड अब तक।
if (board[x][y] == "B")
{ //Highlight the users chosen piece
board[x][y] = "\033[0;31mB\033[0m";
//Now showing available moves the chosen bishop can move to
for(int counter=1; counter <=7; counter++) {
if(board[x+counter][y+counter] == "_") { //if there is an empty space, then place X to show peice can move there
board[x+counter][y+counter] = "X";
}
else { //if cannot move their ,then break
break;
}
}
}
यहां मेरी समस्या है। यह एक्स स्पेस दिखाता है कि टुकड़ा बोर्ड पर कुछ स्थानों पर उपयोगकर्ता को स्थानांतरित करने में सक्षम है। हालांकि जब टुकड़ा सरणी के कुछ स्थानों में होता है जैसे वह बोर्ड कोड में होता है। यह Xs को चित्रित करने के बजाय बोर्ड के विभिन्न पक्षों पर एक्स को ओवरलैप करता है और दिखाता है जब उनका कोई "_" उपलब्ध नहीं होता है।
क्या आपने डीबगर के साथ अपने कोड से कदम उठाने का प्रयास किया था? –
आपके पास बोर्ड के सूचकांक [एक्स + काउंटर] [वाई + काउंटर] में ओवर-एंडफ्लो है। – PanicSheep
@ PanicSheep की टिप्पणी बिशप के अलावा पीछे की ओर भी चलता है। – bansi