提问人:Rum_Row 提问时间:2/8/2023 最后编辑:Ken WhiteRum_Row 更新时间:2/8/2023 访问量:61
奥赛罗 - 验证玩家移动
Othello - Validating player moves
问:
我正在使用 2D 数组重新创建奥赛罗/黑白棋。对于每个网格空间,我都存储了一个值(“Black”、“White”或“”)。从那里开始,我根据游戏规则的标准编写了应该和不应该是合法行为的代码。问题是我很难理解如何将规则转化为代码。你们中的任何人如何将奥赛罗的规则转化为基于 2D 阵列的游戏。
我对编码比较陌生,没有运气尝试翻译源代码,因为这个项目需要是我自己的 VB.net 2010 编码,任何建议都会有所帮助。
我已经尝试了所有方法,从长 if/elseif 语句、许多 2D 循环,甚至应该验证移动本身的单独数组。我尝试过的任何东西都无法在不以某种方式中断的情况下通过第一步。
答:
0赞
teapot418
2/8/2023
#1
有一些伪代码。不知道那应该是什么编程语言,我当场编造了它。
is_valid_move(x,y,color): {
if (board[x,y] != empty) return false;
for dx = -1 to 1: {
for dy = -1 to 1: { // cycle through all directions
if (dx=0 && dy=0) next;
xx = x+dx; yy = y+dy;
while (valid_coords(xx, yy) && board[xx, yy]=enemy(color)): {
// skipping over enemy stones, there has to be at least one
xx = xx+dx; yy = yy+dy;
if (valid_coords(xx, yy) && board[xx, yy]=color)
return true; // this one is ours, we have captured something
}
}
}
return false; // no capture found, this is not a valid move
}
评论