首页 > 编程知识 正文

如何用Python制作井字棋棋盘

时间:2023-11-22 10:27:23 阅读:287556 作者:NDAB

本文将介绍如何用Python语言制作井字棋棋盘,从棋盘的创建到游戏规则的实现,逐一阐述。

一、创建棋盘

要制作井字棋游戏,首先需要一个棋盘。我们可以使用二维列表来实现棋盘的创建:

board = [['-', '-', '-'],
         ['-', '-', '-'],
         ['-', '-', '-']]

以上代码创建了一个3 x 3的棋盘。我们可以使用一个嵌套循环来将其打印出来:

for i in range(3):
    for j in range(3):
        print(board[i][j], end=' ')
    print()

通过以上代码,我们可以得到如下输出:

- - -
- - -
- - -

此时的棋盘为空,每个格子都用“-”表示。

二、游戏规则

接下来,我们需要实现游戏规则。井字棋游戏的规则非常简单明了:

1. 井字棋游戏需要两个玩家参与,分别执黑棋和白棋。

2. 游戏开始时,棋盘为空。

3. 黑棋先行,轮流下子。

4. 下子必须落在空格上。

5. 落子后,判断是否分出胜负,如果有,则结束游戏;否则,轮到下一位玩家。

6. 如果棋盘已满,但是未分出胜负,则宣布平局。

三、下子

在规则中提到了下子,因此我们需要实现下子的操作。下子需要玩家输入行数和列数,判断该位置是否为空。如果为空,我们就将该位置的棋子颜色设为当前玩家的颜色,否则提示玩家重新输入行数和列数。

def place_piece(board, row, col, piece):
    if board[row][col] == '-':
        board[row][col] = piece
        return True
    else:
        print("该位置已被占据,请重新输入")
        return False

以上代码实现了下子的操作。函数接收了三个参数:棋盘、行数、列数和当前玩家的棋子颜色。如果该位置为空,则将棋子颜色设为当前玩家的颜色;否则提示玩家重新输入。

四、判断胜负

井字棋游戏的胜负判断非常简单,只需要判断某一行、某一列或者某一斜线上是否存在三枚同色棋子即可。我们可以定义一个判断胜负的函数:

def check_win(board):
    # 判断行是否相等
    for i in range(3):
        if board[i][0] == board[i][1] == board[i][2] and board[i][0] != '-':
            return True

    # 判断列是否相等
    for j in range(3):
        if board[0][j] == board[1][j] == board[2][j] and board[0][j] != '-':
            return True

    # 判断斜线是否相等
    if board[0][0] == board[1][1] == board[2][2] and board[0][0] != '-':
        return True
    if board[0][2] == board[1][1] == board[2][0] and board[0][2] != '-':
        return True

    return False

以上代码定义了一个名为check_win的函数,接收一个参数board,即棋盘。函数通过两个for循环以及两次if语句来判断是否存在三个相邻的、同色的棋子。如果存在,则返回True,表示该玩家获得胜利。

五、完整代码

最后,我们将以上的代码整合在一起,可以得到如下的完整代码:

def display_board(board):
    for i in range(3):
        for j in range(3):
            print(board[i][j], end=' ')
        print()

def place_piece(board, row, col, piece):
    if board[row][col] == '-':
        board[row][col] = piece
        return True
    else:
        print("该位置已被占据,请重新输入")
        return False

def check_win(board):
    # 判断行是否相等
    for i in range(3):
        if board[i][0] == board[i][1] == board[i][2] and board[i][0] != '-':
            return True

    # 判断列是否相等
    for j in range(3):
        if board[0][j] == board[1][j] == board[2][j] and board[0][j] != '-':
            return True

    # 判断斜线是否相等
    if board[0][0] == board[1][1] == board[2][2] and board[0][0] != '-':
        return True
    if board[0][2] == board[1][1] == board[2][0] and board[0][2] != '-':
        return True

    return False

board = [['-', '-', '-'],
         ['-', '-', '-'],
         ['-', '-', '-']]

display_board(board)

while True:
    # 黑方下子
    row = int(input("请输入行数(0~2):"))
    col = int(input("请输入列数(0~2):"))
    if place_piece(board, row, col, 'X'):
        display_board(board)
        if check_win(board):
            print("黑方获胜!")
            break

    # 白方下子
    row = int(input("请输入行数(0~2):"))
    col = int(input("请输入列数(0~2):"))
    if place_piece(board, row, col, 'O'):
        display_board(board)
        if check_win(board):
            print("白方获胜!")
            break

    # 判断平局
    if all(all(row) for row in board):
        print("平局")
        break

以上代码实现了井字棋游戏的核心功能,包括创建棋盘、下子和判断胜负等。通过以上代码,我们可以在控制台中打印出井字棋棋盘,并在游戏中体验其中的乐趣。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。