83 lines
1.9 KiB
Python
83 lines
1.9 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
from board2 import Board
|
||
|
from pos import TwoDPos
|
||
|
from pos import TwoDUtils
|
||
|
|
||
|
piecemaps = {
|
||
|
0: '.',
|
||
|
1: 'x',
|
||
|
2: 'o',
|
||
|
}
|
||
|
mappings = TwoDUtils.reverse
|
||
|
|
||
|
def render(board):
|
||
|
print("123 456 789")
|
||
|
moves = board.possible()
|
||
|
moves = [i.glob() for i in moves]
|
||
|
for i in range(9):
|
||
|
buf = []
|
||
|
for j in range(9):
|
||
|
ri = mappings[i]
|
||
|
string = ''.join([ri, str(j + 1)])
|
||
|
pos = TwoDPos(TwoDPos.g, string)
|
||
|
item = board.get(*pos.local())
|
||
|
if string in moves:
|
||
|
buf.append('?')
|
||
|
else:
|
||
|
buf.append(piecemaps[item])
|
||
|
if j in [2, 5]:
|
||
|
buf.append(" | ")
|
||
|
if j == 8:
|
||
|
buf.append(" " + ri)
|
||
|
print(''.join(buf))
|
||
|
if i in [2, 5]:
|
||
|
print("----+-----+----")
|
||
|
|
||
|
print("to play: " + str(board.turn))
|
||
|
|
||
|
def help():
|
||
|
print("m - make a move")
|
||
|
print("p - see coordinates of legal moves")
|
||
|
print("t - see whose turn it is")
|
||
|
print("r - render the board to the screen")
|
||
|
print("q - quit program")
|
||
|
print("h - show help (this list)")
|
||
|
|
||
|
def move(board, move):
|
||
|
move = TwoDPos(TwoDPos.g, move)
|
||
|
print(move)
|
||
|
board.append(move)
|
||
|
|
||
|
def possibilities(board):
|
||
|
print(board.possible())
|
||
|
|
||
|
def turn(board):
|
||
|
print("to play: " + str(board.turn))
|
||
|
|
||
|
def main():
|
||
|
b = Board()
|
||
|
print("type h for help")
|
||
|
while True:
|
||
|
try:
|
||
|
cmd = input("> ")
|
||
|
spl = cmd.split(' ')
|
||
|
if spl[0] == "m":
|
||
|
move(b, spl[1])
|
||
|
elif spl[0] == "p":
|
||
|
possibilities(b)
|
||
|
elif spl[0] == "t":
|
||
|
turn(b)
|
||
|
elif spl[0] == "r":
|
||
|
render(b)
|
||
|
elif spl[0] == "h":
|
||
|
render(b)
|
||
|
elif spl[0] == "q":
|
||
|
break;
|
||
|
except:
|
||
|
print("error occured")
|
||
|
return
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|