用python语言实现一个五子棋的游戏

该代码使用numpy库创建一个15x15的矩阵表示棋盘,0表示空位,1表示玩家1(黑子),2表示玩家2(白子)。create_board()函数用于初始化棋盘。

place_piece()函数用于在指定位置放置棋子。

is_valid_move()函数用于判断指定位置是否合法。

get_winner()函数用于检查当前游戏状态是否有胜利者,返回值为0表示游戏未结束,1表示玩家1胜利,2表示玩家2胜利。

print_board()函数将当前棋盘打印出来。

current_player变量表示当前下棋的玩家,初始值为1。程序通过循环等待用户输入行号和列号,进行下棋操作,直到游戏结束。

以下是Python实现五子棋游戏的示例代码:

import numpy as np

def create_board():
    board = np.zeros((15, 15))
    return board

def place_piece(board, row, col, piece):
    board[row][col] = piece

def is_valid_move(board, row, col):
    if row < 0 or row > 14 or col < 0 or col > 14:
        return False
    if board[row][col] != 0:
        return False
    return True

def get_winner(board):
    # 检查横向连续的5个棋子
    for i in range(15):
        for j in range(11):
            if board[i][j] == board[i][j+1] == board[i][j+2] == board[i][j+3] == board[i][j+4] and board[i][j] != 0:
                return board[i][j]

    # 检查纵向连续的5个棋子
    for i in range(11):
        for j in range(15):
            if board[i][j] == board[i+1][j] == board[i+2][j] == board[i+3][j] == board[i+4][j] and board[i][j] != 0:
                return board[i][j]

    # 检查正斜线方向上的连续的5个棋子
    for i in range(11):
        for j in range(11):
            if board[i][j] == board[i+1][j+1] == board[i+2][j+2] == board[i+3][j+3] == board[i+4][j+4] and board[i][j] != 0:
                return board[i][j]

    # 检查反斜线方向上的连续的5个棋子
    for i in range(11):
        for j in range(4, 15):
            if board[i][j] == board[i+1][j-1] == board[i+2][j-2] == board[i+3][j-3] == board[i+4][j-4] and board[i][j] != 0:
                return board[i][j]

    return 0

def print_board(board):
    print("   0  1  2  3  4  5  6  7  8  9 10 11 12 13 14")
    for i in range(15):
        row_str = str(i) + " "
        for j in range(15):
            if board[i][j] == 0:
                row_str += ".  "
            elif board[i][j] == 1:
                row_str += "X  "
            else:
                row_str += "O  "
        print(row_str)

board = create_board()
print_board(board)

current_player = 1
while True:
    row = int(input("请输入行号:"))
    col = int(input("请输入列号:"))

    if is_valid_move(board, row, col):
        place_piece(board, row, col, current_player)
        print_board(board)
        
        winner = get_winner(board)
        if winner != 0:
            print("游戏结束!胜利者为Player ", winner)
            break
        
        current_player = 3 - current_player
    else:
        print("非法移动,请重新输入!")

猜你喜欢

转载自blog.csdn.net/penggerhe/article/details/130364643
今日推荐