用python写一个井字棋游戏
时间: 2023-03-26 12:01:14 浏览: 70
你好,我是 CSDN 开发的 C 知道,关于你的问题,我可以回答。以下是用 Python 编写井字棋游戏的代码示例:
```python
# 定义棋盘
board = [' ' for x in range(10)]
# 绘制棋盘
def draw_board(board):
print(" " + board[1] + " | " + board[2] + " | " + board[3] + " ")
print("-----------")
print(" " + board[4] + " | " + board[5] + " | " + board[6] + " ")
print("-----------")
print(" " + board[7] + " | " + board[8] + " | " + board[9] + " ")
# 判断是否有胜者
def is_winner(board, player):
return ((board[1] == player and board[2] == player and board[3] == player) or
(board[4] == player and board[5] == player and board[6] == player) or
(board[7] == player and board[8] == player and board[9] == player) or
(board[1] == player and board[4] == player and board[7] == player) or
(board[2] == player and board[5] == player and board[8] == player) or
(board[3] == player and board[6] == player and board[9] == player) or
(board[1] == player and board[5] == player and board[9] == player) or
(board[3] == player and board[5] == player and board[7] == player))
# 判断是否有空位
def is_space_free(board, position):
return board[position] == ' '
# 获取玩家输入的位置
def get_player_move(board):
position =
while position not in range(1, 10) or not is_space_free(board, position):
position = int(input("请输入一个空位(1-9): "))
return position
# 判断是否平局
def is_board_full(board):
return ' ' not in board[1:]
# 主函数
def main():
print("欢迎来玩井字棋游戏!")
while True:
# 重置棋盘
board = [' ' for x in range(10)]
player1_marker, player2_marker = input("玩家1,请选择 X 或 O: ").upper(), ''
if player1_marker == 'X':
player2_marker = 'O'
else:
player2_marker = 'X'
turn = 'player1'
game_on = True
while game_on:
if turn == 'player1':
draw_board(board)
position = get_player_move(board)
board[position] = player1_marker
if is_winner(board, player1_marker):
draw_board(board)
print("恭喜,玩家1获胜!")
game_on = False
else:
if is_board_full(board):
draw_board(board)
print("平局!")
break
else:
turn = 'player2'
else:
draw_board(board)
position = get_player_move(board)
board[position] = player2_marker
if is_winner(board, player2_marker):
draw_board(board)
print("恭喜,玩家2获胜!")
game_on = False
else:
if is_board_full(board):
draw_board(board)
print("平局!")
break
else:
turn = 'player1'
if not input("是否再来一局?(Y/N)").lower().startswith('y'):
break
if __name__ == "__main__":
main()
```
希望这个代码示例能够帮助到你,如果你还有其他问题,欢迎随时提出。