- 论坛徽章:
- 0
|
偶的。参照了lz给的作业说明,没有用到类。
仔细看来那个作业说明,说得已经比较详细了。
- #! /usr/bin/env python
- # tictactoe.py
- def init(marks):
- for i in range(9):
- marks.append(' ')
- def drawBoard(marks):
- """ Output the board represented by marks. """
- sepRows = ['- - -\t- - -', '- - -\t- - -', '']
- print
- for i in range(3):
- numbers = []
- currBoard = []
- for k, m in enumerate(marks[3*i:3*i+3]):
- numbers.append(3*i+k)
- currBoard.append(m)
- row = numbers + currBoard
- print '%s|%s|%s\t%s|%s|%s' % tuple(row)
- print sepRows[i]
- def setPosition(pos, mark, marks):
- marks[pos] = mark
- return marks
- def playerTurn(player, marks):
- while (True):
- pos = raw_input('Player %s, choose where to place your mark (0-8): ' % player)
- if int(pos) not in range(9):
- print 'Invalid selection. Enter an integer from 0 to 8.'
- elif marks[int(pos)] != ' ':
- print 'Invalid selection. You may only choose an unoccupied position.'
- else:
- break
- return setPosition(int(pos), player, marks)
- def singleWinCheck(marks, p1, p2, p3):
- """
- Check if the same symbol occurs at all three positions.
- """
- return marks[p1] == marks[p2] == marks[p3]
-
- def winCheck(marks):
- win = [ [0, 1, 2],
- [3, 4, 5],
- [6, 7, 8],
- [0, 3, 6],
- [1, 4, 7],
- [2, 5, 8],
- [0, 4, 8],
- [2, 4, 6],]
- for p1, p2, p3 in win:
- if singleWinCheck(marks, p1, p2, p3):
- if marks[p1] == ' ' or marks[p2] == ' ' or marks[p3] == ' ':
- continue
- print '\n----------------'
- print '%s is the winner!' % marks[p1]
- print '----------------\n'
- return True
- return False
- def allFull(marks):
- return ' ' not in marks
- def main():
- marks = []
- players = ['X', 'O']
- init(marks)
- drawBoard(marks)
- gameOver = False
- while (not gameOver):
- for p in players:
- marks = playerTurn(p, marks)
- if winCheck(marks):
- gameOver = True
- break
- elif allFull(marks):
- print "\nIt's a cat's game!"
- gameOver = True
- break
- else:
- drawBoard(marks)
- drawBoard(marks)
- if __name__ == '__main__':
- main()
复制代码
[ 本帖最后由 wolfg 于 2006-3-4 00:20 编辑 ] |
|