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

我有一个编程单元的任务,要求这个:


根据以下规范创建表示黑白棋规则的函数 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 经验。


小唯快跑啊
浏览 166回答 1
1回答

慕标5832272

您编辑中的代码看起来不错,这就是我所得到的。祝项目的其余部分好运!几个边缘情况:board[newpos[0]][newpos[1]]&nbsp;会越界在这种情况下XOOOOX,您的函数将返回 True&nbsp;,这不是黑白棋规则的捕获(不确定您的赋值是否以不同方式定义它我强烈建议您编写几个简单的测试,以确保您的代码正常工作。他们不需要涵盖所有案例,也不需要成为全董事会。它通常不是必需的,但更容易评估:只需点击“运行”,而不是试图通过您的代码进行推理。下面是一个例子:def&nbsp;test():&nbsp;&nbsp;&nbsp;&nbsp; assert&nbsp;enclosing([[0,&nbsp;0,&nbsp;0],&nbsp;[0,0,0],[0,1,2]],&nbsp;1,&nbsp;(0,2),&nbsp;(1,1))&nbsp;==&nbsp;True
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python