[英]Python Connect four Diagonal Checking
我在启动代码时遇到了问题。 我的编程课有一个Connect 4项目,我有一个非常愚蠢的问题。 我不明白对角线检查。 他给了我们一个例子,但老实说我不明白。
def CheckForWinner(board, playerName, playerChar):
diagonal = board[2][0] + board[3][1] + board[4][2] + board[5][3]
if playerChar * 4 in diagonal:
return playerName
这是一块42空间板(7x6)
1 2 3 4 5 6 7
_ _ _ _ _ _ _
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
我只是站在它正在检查的东西上遇到困难。 我不是要求你给我代码。 请解释一下。 :)
它正在构建一个存储在对角线中的字符串。 例如,如果董事会是:
1 2 3 4 5 6 7
_ _ _ _ _ _ _
|_|A|_|_|_|_|_|
|_|_|B|_|_|_|_|
|_|_|_|C|_|_|_|
|_|_|_|_|D|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
然后是以下行:
diagonal = board[2][0] + board[3][1] + board[4][2] + board[5][3]
将值ABCD
分配给变量diagonal
,因为它将board[2][0]
( A
), board[3][1]
( B
)等中的字符连接成一个字符串: ABCD
。
if
语句组成一个4字符的玩家角色字符串,并检查它是否在diagonal
字符串中。 例如,如果玩家的角色是X
,则if
评估是否检查XXXX
是否在ABCD
。 如果这是True
,它将返回玩家的名字,这意味着他们已经获胜。
(当然,我的例子中A,B,C和D的实际位置取决于列表列表代表董事会的方式)
1 2 3 4 5 6 7
_ _ _ _ _ _ _
|_|_|_|_|_|_|_|
|_|_|_|_|_|_|_|
|_|_|_|_|W|_|_|
|_|_|_|Z|_|_|_|
|_|_|Y|_|_|_|_|
|_|X|_|_|_|_|_|
x = 2,0
y = 3,1
z = 4,2
w = 5,3
它可能在播放器1中使用1,在播放器2中使用2,因此电路板看起来像一个数组(请注意,数组可能(行)从显示的网格中反转。)
player = 2
the_board = [[0,0,2,0,0,0,0],
[0,0,0,2,0,0,0],
[0,0,0,0,2,0,0],
[0,0,0,0,0,2,0],
[0,0,0,0,0,0,0],
[0,0,0,0,0,0,0]]
print the_board[2][0] #2
diagonal = the_board[2][0] + the_board[3][1] + the_board[4][2] + the_board[5][3] # 2+2+2+2 = 8
player * 4 == diagonal # 2*4 =?= 2+2+2+2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.