Your winner function has a hard time finding a winner because it just looks at the top left 4 by 4 square. You need to find a way to look at the whole rows and columns for 4 equal in a row.
This code part could check the rows.
for row in range(7):
i = 0
last = ''
for col in range(7):
this = board[row][col]
if this == " ":
i = 0
continue
if this == last:
i+= 1
else:
i = 1
if i >= 4:
return this
last = this
You could gain performance by only checking the column and row of the latest inserted brick.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…