为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建包含对手牌的黑白棋功能?

如何创建包含对手牌的黑白棋功能?

小唯快跑啊 2021-12-29 20:10:35
我有一个编程单元的任务,要求这个:根据以下规范创建表示黑白棋规则的函数 enclosure(board, player, pos, direct)。棋盘位置由一对 (r, c) 表示,其中 r 和 c 分别是范围 range(8) 中的整数,分别表示行索引和列索引。例如,位置\b3" 用(2, 1) 表示。\b3" 样式的行和列顺序和位置的规范是相反的。这是因为以这样的方式构造列表列表是很自然的,即外部列表对应于行,内部列表位置对应于列位置,所以我们先行引用它们,然后是列。这一行、列约定在数学和计算机科学中很常见。方向由一对 (dr, dc) 表示,其中 dr 和 dc 分别是集合 f-1, 0, 1g 中的整数。例如,\horizontal to the left"由(0, -1)描述,\diagonal to the right and down"由(1, 1)描述,依此类推。函数 enclosure(board, player, pos, dir) 表示将玩家的棋子放在给定位置是否会在给定方向上包围一条直线:输入:棋盘配置棋盘,来自集合 f1, 2g 的整数玩家,棋盘位置 pos 和方向 dir。输出:如果棋盘包含从位置 pos 方向为 dir 的玩家的棋子,并且该棋子和 pos 之间的直线上的所有位置都包含其他玩家的棋子,并且直线上至少有一颗属于其他玩家的棋子,则为真线; 否则为假。这就是我所拥有的:def enclosing(board, player, pos, direct):    if player == 1:        a = direct[0]        b = direct[1]        i = 1        while i < 8:            newpos = (pos[0] + i*a , pos[1] + i*b)            if board[newpos[0]][newpos[1]] == 1:                return True            elif board[newpos[0]][newpos[1]] == 2:                    i = i + 1            else:                return False还要记住,这是一门初学者课程,我有大约一个月的 Python 经验。
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

您编辑中的代码看起来不错,这就是我所得到的。祝项目的其余部分好运!

几个边缘情况:

  1. board[newpos[0]][newpos[1]] 会越界

  2. 在这种情况下XOOOOX,您的函数将返回 True ,这不是黑白棋规则的捕获(不确定您的赋值是否以不同方式定义它

我强烈建议您编写几个简单的测试,以确保您的代码正常工作。他们不需要涵盖所有案例,也不需要成为全董事会。它通常不是必需的,但更容易评估:只需点击“运行”,而不是试图通过您的代码进行推理。

下面是一个例子:

def test():    
assert enclosing([[0, 0, 0], [0,0,0],[0,1,2]], 1, (0,2), (1,1)) == True


查看完整回答
反对 回复 2021-12-29
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信