Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def has_three(p, board):
- """Checks if player p has three in a row"""
- # For every position on the board
- for i in xrange(6):
- for j in xrange(7):
- if board[i][j] == p:
- if i<=2 and board[i+1][j]==p and board[i+2][j]==p and board[i+3][j]==0:
- return True
- if i>=3 and board[i-1][j]==p and board[i-2][j]==p and board[i-3][j]==0:
- return True
- if j<=3 and board[i][j+1]==p and board[i][j+2]==p and board[i][j+3]==0:
- return True
- if j>=3 and board[i][j-1]==p and board[i][j-2]==p and board[i][j-3]==0:
- return True
- if i<=2 and j<=3 and board[i+1][j+1]==p and board[i+2][j+2]==p and board[i+3][j+3]==0:
- return True
- if i<=2 and j>=3 and board[i+1][j-1]==p and board[i+2][j-2]==p and board[i+3][j-3]==0:
- return True
- if i>=3 and j<=3 and board[i-1][j+1]==p and board[i-2][j+2]==p and board[i-3][j+3]==0:
- return True
- if i>=3 and j>=3 and board[i-1][j-1]==p and board[i-2][j-2]==p and board[i-3][j-3]==0:
- return True
- return False
- DIRECTIONS = [(1,0),(1,1),(0,1),(-1,1)]
- def legal_position(i, j, board):
- """Return True if position (i, j) is a legal position on 'board'."""
- return 0 <= i < len(board) and 0 <= j < len(board[0])
- def winning_move(player, move, board, n = 3):
- """Return True if 'move' is part of a line of length 'n' or longer for 'player'."""
- for di, dj in DIRECTIONS:
- line = 0
- for sign in (-1, 1):
- i, j = move
- while legal_position(i, j, board) and board[i][j] == player:
- i += sign * di
- j += sign * dj
- line += 1
- if line > n: # move was counted twice
- return True
- return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement