gpt4 book ai didi

c++ - 棋子移动错误

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:54 26 4
gpt4 key购买 nike

我最近开始为一个大学项目使用 C++ 开发国际象棋引擎,但我的棋子移动功能存在问题。我知道棋子应该向前移动一格或攻击对角线一格。好吧,我的功能允许 pawn 攻击空格,我不知道为什么。我的棋盘分为两 block :一 block 记住一 block 属于哪个玩家,另一 block 有 block 的名称(如 q、Q、p、P... 和空格)。一个提示将非常受欢迎。 (对不起,我的英语水平很差)

代码如下所示:

bool move_P(int move_start_i, int move_start_j, int move_finish_i, int move_finish_j, char table[][9])
{
switch (table[move_finish_i][move_finish_j])
{
case ' ':
{
if (move_start_i - 1 == move_finish_i) // move pawn
{
return true;
}
}
default:
{
if (move_finish_i == move_start_i - 1 && move_finish_j == move_start_j - 1) // atack pawn ^<-
{
if (player[move_finish_i][move_finish_j] == player[move_start_i - 1][move_start_j - 1])
{
return false;
}
else
{
return true;
}
}
else if (move_finish_i == move_start_i - 1 && move_finish_j == move_start_j + 1) // atack pawn ->^
{
if (player[move_finish_i][move_finish_j] == player[move_start_i - 1][move_start_j + 1])
{
return false;
}
else
{
return true;
}
}
}
}
return false;
}

最佳答案

你的玩家检查有误,

player[move_finish_i][move_finish_j] == player[move_start_i - 1][move_start_j - 1]

必须是

player[move_finish_i][move_finish_j] == player[move_start_i][move_start_j]

你也应该使用

return player[move_finish_i][move_finish_j] != player[move_start_i][move_start_j];

主要问题是检查

move_start_i - 1 == move_finish_i

你必须为 j 位置添加一个检查!

关于c++ - 棋子移动错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35180300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com