Ark wrote:
Hi.
I programmed a simple tic tac toe game in python. I already finished it, but I'm not pleased with the way I used to identify a line. I used a list (with lists inside) to represent the board. And to identify a winning line I used many if's, like this one:
def line(board):
    if board[0][0] == board[1][1] == board[2][2]:
        return True
    ...
    ...
    return False

#Assuming you number the board positions as:
#board = [ [0,1,2],
#          [3,4,5],
#          [6,7,8] ]

#then you could define the winning combinations as:

winners = [ (0,1,2),(3,4,5),(6,7,8), #rows
            (0,3,6),(1,4,7),(2,5,8), #cols
            (0,4,8),(6,4,2)          #diags
            ]

#and return all these combinations from the current board with:

def mapped(board):
    return [ (board[i/3][i%3],board[j/3][j%3],board[k/3][k%3])
             for i,j,k in winners]

#and finally, assuming you're using X's and Y's,
#identify a winning line with:

def line(board):
     if ( ('X','X','X') in mapped(board) or
          ('Y','Y','Y') in mapped(board) ):
         return True
     return False

#now two test cases
board = ([['X','Y','Y'],
          ['Y','X','X'],
          ['Y','X','Y']
         ])

print line(board)

board = ([['X','Y','Y'],
          ['Y','X','X'],
          ['Y','Y','X']
         ])

print line(board)

HTH,

Emile



It's only an examble, but I did it that way.
I did not like using all those if's, and I would like to hear suggestions to find a line in the board, maybe a more intelligent approach. I would like a solution using lists because it would be useful for example in C too, but I have been thinking about another way to represent a board.

Ark


------------------------------------------------------------------------

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to