井字棋
井字棋,英文名叫Tic-Tac-Toe,是一种在3*3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。游戏需要的工具仅为纸和笔,然后由分别代表O和X的两个游戏者轮流在格子里留下标记(一般来说先手者为X),任意三个标记形成一条直线,则为获胜。
py100天day7
"""
井字棋
这个案例来自[《Python编程快速上手:让繁琐工作自动化》]
(https://item.jd.com/11943853.html)一书
(这本书对有编程基础想迅速使用Python将日常工作自动化的人来说还是不错的选择)
"""
import os
def print_board(board):
"""打印棋盘
:param board:
:return:
"""
print(board['TL'] + '|' + board['TM'] + '|' + board['TR'])
print('-+-+-')
print(board['ML'] + '|' + board['MM'] + '|' + board['MR'])
print('-+-+-')
print(board['BL'] + '|' + board['BM'] + '|' + board['BR'])
def main():
init_board = {
'TL': ' ', 'TM': ' ', 'TR': ' ',
'ML': ' ', 'MM': ' ', 'MR': ' ',
'BL': ' ', 'BM': ' ', 'BR': ' '
}
print(init_board)
begin = True
while begin:
curr_board = init_board.copy()
begin = False
turn = "x"
counter = 0
# 清屏
os.system("cls")
# 打印棋盘
print_board(curr_board)
while counter < 9:
print(curr_board)
move = input("轮到%s走棋,请输入位置:" % turn)
if curr_board[move] == " ":
counter += 1
curr_board[move] = turn
if turn == "x":
turn = "o"
else:
turn = "x"
# 清屏 打印棋盘
os.system("cls")
print_board(curr_board)
choice = input("再玩一局?(yes|no)")
begin = choice == "yes"
if __name__ == '__main__':
main()
游戏截图