📜  谜题 38 | (井字游戏)(1)

📅  最后修改于: 2023-12-03 15:41:48.511000             🧑  作者: Mango

谜题 38 | (井字游戏)

介绍

谜题38,也称为井字游戏,是一种双人对弈的游戏。游戏中,有一张3*3的棋盘,两个玩家轮流落子,先将自己的棋子连成一条线的玩家获胜。

游戏规则
  • 两个玩家轮流落子,玩家1执 X ,玩家2执 O 。
  • 落子后,不能在已经有棋子的格子上再次落子。
  • 先将自己的棋子在横向、纵向或对角线连成一条线的玩家获胜。
  • 如果棋盘被填满,仍未分出胜负,游戏结束,平局。
实现思路
1.棋盘的数据结构

我们可以使用一个3*3的二维数组来表示棋盘。数组的值可以是空格、X或O。

board = [
    [' ', ' ', ' '],
    [' ', ' ', ' '],
    [' ', ' ', ' ']
]
2.游戏开始和落子

玩家可以通过输入行号和列号来指定落子的位置。

def play(board, row, col, player):
    if board[row][col] == ' ':
        board[row][col] = player
        return True
    else:
        return False
3.判断胜负

判断胜负可以根据棋盘上的行、列、对角线来判断。我们可以使用一个函数来检查某个玩家是否赢了:

def check_win(board, player):
    for row in range(3):
        if board[row][0] == board[row][1] == board[row][2] == player:
            return True
    for col in range(3):
        if board[0][col] == board[1][col] == board[2][col] == player:
            return True
    if board[0][0] == board[1][1] == board[2][2] == player:
        return True
    if board[0][2] == board[1][1] == board[2][0] == player:
        return True
    return False
4.游戏流程

游戏的流程可以在一个while循环中完成。首先判断当前玩家是谁,让其输入落子位置。然后检查游戏是否结束,如果结束,输出胜负结果并退出游戏。

while True:
    player = 'X' if turn % 2 == 0 else 'O'
    print(f"Player {player}'s turn.")
    row = int(input("Enter row number: "))
    col = int(input("Enter column number: "))
    if play(board, row, col, player):
        draw_board(board)
        if check_win(board, player):
            print(f"Player {player} wins!")
            break
        if turn == 8:
            print("It's a draw!")
            break
        turn += 1
    else:
        print("Invalid move. Please try again.")
总结

谜题38,也称为井字游戏,是一款简单但富有趣味的双人对弈游戏。本文介绍了井字游戏的规则和实现思路,通过实现一个简单的井字游戏,我们可以加深对Python基础语法的理解,并锻炼编程思维。