python五子棋
时间: 2023-06-21 22:23:20 浏览: 41
以下是一个简单的 Python 五子棋游戏的代码示例:
```python
import os
# 创建一个15x15的棋盘,用"+"表示空位
board = []
for i in range(15):
board.append(['+'] * 15)
# 打印当前棋盘状态
def print_board():
os.system('cls')
print(' ', end='')
for i in range(15):
print(chr(65+i), end=' ')
print()
for i in range(15):
print(i+1, end=' ')
for j in range(15):
print(board[i][j], end=' ')
print()
# 判断当前位置是否可下棋
def is_valid_move(row, col):
return row >= 0 and row < 15 and col >= 0 and col < 15 and board[row][col] == '+'
# 判断是否已经有五子连线
def has_won(player):
# 判断横向是否连线
for i in range(15):
for j in range(11):
if board[i][j] == player and board[i][j+1] == player and board[i][j+2] == player and board[i][j+3] == player and board[i][j+4] == player:
return True
# 判断纵向是否连线
for i in range(11):
for j in range(15):
if board[i][j] == player and board[i+1][j] == player and board[i+2][j] == player and board[i+3][j] == player and board[i+4][j] == player:
return True
# 判断左上到右下斜线是否连线
for i in range(11):
for j in range(11):
if board[i][j] == player and board[i+1][j+1] == player and board[i+2][j+2] == player and board[i+3][j+3] == player and board[i+4][j+4] == player:
return True
# 判断右上到左下斜线是否连线
for i in range(11):
for j in range(4, 15):
if board[i][j] == player and board[i+1][j-1] == player and board[i+2][j-2] == player and board[i+3][j-3] == player and board[i+4][j-4] == player:
return True
return False
# 开始游戏
def play_game():
player = 'X'
while True:
print_board()
row = int(input("Player %s, enter row: " % player))
col = int(input("Player %s, enter column: " % player))
if is_valid_move(row-1, col-1):
board[row-1][col-1] = player
if has_won(player):
print_board()
print("Player %s has won!" % player)
break
player = 'O' if player == 'X' else 'X'
else:
print("Invalid move, please try again.")
# 开始游戏
play_game()
```
该代码首先创建了一个 15x15 的棋盘,并用 `"+"` 表示空位。然后,定义了三个函数:`print_board` 用于打印当前棋盘状态,`is_valid_move` 用于判断当前位置是否可以下棋,`has_won` 用于判断是否已经有五子连线。最后,定义了一个 `play_game` 函数,用于开始游戏。该函数会不断循环,让两个玩家交替下棋,直到有玩家胜出。在每个玩家下棋之前,会先打印当前棋盘状态,并要求玩家输入要下棋的行和列。如果输入的位置合法,就会将对应位置的棋子状态改为当前玩家的标识符 (`"X"` 或 `"O"`),然后判断是否有五子连线。如果有,则表示当前玩家胜出,游戏结束。否则,将轮到另一个玩家继续下棋。