该代码使用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("非法移动,请重新输入!")