gpt4 book ai didi

c - 黑白棋有效移动算法

转载 作者:行者123 更新时间:2023-11-30 16:58:10 26 4
gpt4 key购买 nike

我现在遇到的问题是我不确定我的代码在逻辑上是否正确,所以我寻求帮助和意见

dir 是枚举方向的枚举。基本上有八个方向exp:北,西北,东北等。

因此,每个方向,我都会扫描是否有玩家的、对手的 token 或空白的 token

y 是 y 坐标,x 是 x 坐标。在此代码中,我正在查看玩家坐标的北部。

for(dir = NORTH; dir <= SOUTH_WEST; dir++){
if(dir == NORTH){
for(int i = 1; i <= BOARD_HEIGHT - y; i++){
//If there is no token, it would return false
if(board[y+1][x] == BLANK){
return FALSE;
}
//if there is the player's token, it would return false
if else(board[y+1][x] == player_token){
return FALSE;
}
//if there is the opponents token, it would continue up till it finds the player's token, if not then it would return false.
if else(board[y+i][x] != player_token){
if(board[y+i][x] == player_token){
captured_pieces++;
}
else{
return FALSE;
}

}

}
}
}

如果有任何需要改进的地方,请告诉我

最佳答案

前两个 if 语句可以移到内部 for 循环之外。

if else 替换为 else if(您应该从编译器中收到错误)。

对玩家/对手 token 的检查根本不检查对手的棋子。我建议重写如下:

//if there is the opponents token, it would continue up till it finds the player's token, if not then it would return false.
switch (board[y+i][x]){
case opponent_token:
// Another token potentially captured
captured_pieces++;
case player_token:
// Stop counting
break;
default:
// Empty square
return FALSE;
}

}

在内循环之后,您需要检查是否确实存在 player_token。如果循环因到达棋盘末尾而终止,则返回 FALSE。

关于c - 黑白棋有效移动算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39074091/

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