一组井字棋游戏的python实现。
创建一个三横三竖的棋盘,以小键盘数字1-9代表棋盘中的位置,玩家分别执#和0棋子。以连城一条线为胜利。
运行代码显示结果如下:
代码如下:
import copy
def creatBoard():
"""创建一个三纵三列的空白棋盘"""
board = {1: ' ', 2: ' ', 3: ' ',
4: ' ', 5: ' ', 6: ' ',
7: ' ', 8: ' ', 9: ' '}
return board
def printBoard(board):
"""显示棋盘"""
print(board[7] + '|' + board[8] + '|' + board[9])
print('-+-+-')
print(board[4] + '|' + board[5] + '|' + board[6])
print('-+-+-')
print(board[1] + '|' + board[2] + '|' + board[3])
def nextBoard(board):
"""响应用户输入,并输出新的棋盘"""
new_board = copy.copy(board)
work = False #用户是否成功输入下一步棋子的标志
while not work:
print('下一个' + turn + '棋子走在哪个位置?')
move = input()
if move == '1' and new_board[1] == ' ':
new_board[1] = turn
work = True
elif move == '2' and new_board[2] == ' ':
new_board[2] = turn
work = True
elif move == '3' and new_board[3] == ' ':
new_board[3] = turn
work = True
elif move == '4' and new_board[4] == ' ':
new_board[4] = turn
work = True
elif move == '5' and new_board[5] == ' ':
new_board[5] = turn
work = True
elif move == '6' and new_board[6] == ' ':
new_board[6] = turn
work = True
elif move == '7' and new_board[7] == ' ':
new_board[7] = turn
work = True
elif move == '8' and new_board[8] == ' ':
new_board[8] = turn
work = True
elif move == '9' and new_board[9] == ' ':
new_board[9] = turn
work = True
else:
print('请输入正确的位置')
return new_board
def check_win(board):
"""检查程序是否需要关闭"""
global active #游戏活动状态标志是全局变量
global winner #胜利玩家的标志是全局变量
number = 0 #记录被占用的格子
for v in board.values():
if v != ' ':
number += 1
if board[7] != ' ' and board[7] == board[8] == board[9]:
active = False
winner = turn
if board[4] != ' ' and board[4] == board[5] == board[6]:
active = False
winner = turn
if board[1] != ' ' and board[1] == board[2] == board[3]:
active = False
winner = turn
if board[7] != ' ' and board[7] == board[4] == board[1]:
active = False
winner = turn
if board[8] != ' ' and board[8] == board[5] == board[2]:
active = False
winner = turn
if board[9] != ' ' and board[9] == board[6] == board[3]:
active = False
winner = turn
if board[7] != ' ' and board[7] == board[5] == board[3]:
active = False
winner = turn
if board[9] != ' ' and board[9] == board[5] == board[1]:
active = False
winner = turn
elif number == 9:
active = False
def turn_player(piece):
"""更换玩家,改变输入棋子格式"""
if piece == 'x':
piece = '0'
else:
piece = 'x'
return piece
"""
下面是程序主控制部分
"""
#创建棋盘,并设置程序活动状态以及默认参数
theBoard = creatBoard()
active = True #游戏初始活动状态
turn = 'x' #执x子的玩家先行
winner = '' #存储胜利玩家的变量
while active:
printBoard(theBoard) #显示当前的棋盘
theBoard = nextBoard(theBoard) #用户输入下一步棋子,并生成相应的棋盘
check_win(theBoard) #检查是否有玩家获胜,或者是否棋盘被占满
turn = turn_player(turn) #轮换玩家
#下面的代码,显示游戏结束后的棋盘状态。再显示获胜方,或者是平局。
printBoard(theBoard)
if winner != '':
print(str(winner) + '方获取了胜利')
else:
print('平局')