在我的player_player函数中,我想调用check_win函数,这样我就可以在这个连接四的游戏中宣布胜利者。我认为,我设置代码的方式只有在输入某个参数时才有效。我想知道是否可以只在代码中输入变量令牌的值。(对不起,如果这是个多余的问题,我是python的初学者)
def check_win(token, i, j):
if i-3 in range(0, 6) and j+3 in range(0,5):
if board[i][j] == token and board[i-1][j+1] == token and board[i-2][j+2] == token and board[i-3][j+3] == token:
return True
if i-3 in range(0, 6) and j-3 in range(0,5):
if board[i][j] == token and board[i-1][j-1] == token and board[i-2][j-2] == token and board[i-3][j-3] == token:
return True
if j+3 in range(0, 5):
if board[i][j] == token and board[i][j+1] == token and board[i][j+2] == token and board[i][j+3] == token:
return True
if i-3 in range(0, 6):
if board[i][j] == token and board[i-1][j] == token and board[i-2][j] == token and board[i-3][j] == token:
return True
else:
return False发布于 2017-04-17 20:40:04
使用三个参数定义函数check_win,但使用一个参数调用它。正如注释中已经提到的那样,我猜想您要寻找的是使用i和j在for循环中而不是作为参数的东西。也许是这样的:
def check_win(token):
for i in range(0, 6):
for j in range(0, 6):
if i-3 in range(0, 6) and j+3 in range(0,6):
if board[i][j] == token and board[i-1][j+1] == token and board[i-2][j+2] == token and board[i-3][j+3] == token:
return True
if i-3 in range(0, 6) and j-3 in range(0,6):
if board[i][j] == token and board[i-1][j-1] == token and board[i-2][j-2] == token and board[i-3][j-3] == token:
return True
if j+3 in range(0, 6):
if board[i][j] == token and board[i][j+1] == token and board[i][j+2] == token and board[i][j+3] == token:
return True
if i-3 in range(0, 6):
if board[i][j] == token and board[i-1][j] == token and board[i-2][j] == token and board[i-3][j] == token:
return True
else:
return False发布于 2017-04-17 21:08:21
这是我的check_win版本
def check_win(token):
token = [token]*4
l1 = lambda i, j:[ board[i-p][j+p] for p in range(4)]
l2 = lambda i, j:[ board[i-p][j-p] for p in range(4)]
for i in range(5,-1,-1):
c = 0
for k in range(4):
if board[i][k:k+4] == token:
return True
if i > 2:
for k in range(6):
if [sub[k] for sub in board[i-3:i+1]] == token:
return True
for k in range(4):
if l1(i,k) == token:
return True
if l2(i,k+3) == token:
return True
return False样本板:
board = [['.', '.', '☼', '.', '.', '.', '.'],
['.', '○', '☼', '○', '○', '.', '.'],
['.', '○', '☼', '○', '○', '.', '.'],
['○', '○', '○', '○', '☼', '.', '.'],
['○', '☼', '○', '☼', '○', '○', '☼'],
['○', '☼', '○', '☼', '○', '☼', '☼']]https://stackoverflow.com/questions/43458972
复制相似问题