python实现五子棋
时间: 2023-11-15 11:17:30 浏览: 41
五子棋是一种经典的棋类游戏,下面是一个简单的 Python 实现示例:
```python
# 定义棋盘尺寸
BOARD_SIZE = 15
# 初始化棋盘
board = [[' ' for _ in range(BOARD_SIZE)] for _ in range(BOARD_SIZE)]
# 定义玩家和电脑的棋子
player = 'X'
computer = 'O'
# 打印棋盘
def print_board():
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE):
print(board[i][j], end=' ')
print()
# 判断是否胜利
def check_win(row, col, piece):
# 横向判断
count = 0
for i in range(row - 4, row + 5):
if i < 0 or i >= BOARD_SIZE:
continue
if board[i][col] == piece:
count += 1
if count >= 5:
return True
else:
count = 0
# 纵向判断
count = 0
for j in range(col - 4, col + 5):
if j < 0 or j >= BOARD_SIZE:
continue
if board[row][j] == piece:
count += 1
if count >= 5:
return True
else:
count = 0
# 斜向判断(左上至右下)
count = 0
for k in range(-4, 5):
i = row + k
j = col + k
if i < 0 or i >= BOARD_SIZE or j < 0 or j >= BOARD_SIZE:
continue
if board[i][j] == piece:
count += 1
if count >= 5:
return True
else:
count = 0
# 斜向判断(右上至左下)
count = 0
for k in range(-4, 5):
i = row + k
j = col - k
if i < 0 or i >= BOARD_SIZE or j < 0 or j >= BOARD_SIZE:
continue
if board[i][j] == piece:
count += 1
if count >= 5:
return True
else:
count = 0
return False
# 主循环
def main():
while True:
print_board()
# 玩家落子
while True:
row = int(input("请输入落子的行号(0-%d):" % (BOARD_SIZE - 1)))
col = int(input("请输入落子的列号(0-%d):" % (BOARD_SIZE - 1)))
if board[row][col] == ' ':
board[row][col] = player
break
else:
print("该位置已经有棋子,请重新输入!")
# 判断玩家是否胜利
if check_win(row, col, player):
print_board()
print("恭喜你,你赢了!")
break
# 电脑落子
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE):
if board[i][j] == ' ':
board[i][j] = computer
break
else:
continue
break
# 判断电脑是否胜利
if check_win(i, j, computer):
print_board()
print("很遗憾,你输了!")
break
# 运行主循环
if __name__ == '__main__':
main()
```
这个简单的实现中,通过控制台输入行号和列号来落子,玩家执黑棋(X),电脑执白棋(O)。程序会检测每一步是否有玩家或电脑获胜,并在胜利后结束游戏。在棋盘上,空格代表空位,X代表黑棋,O代表白棋。
注意:这只是一个简单的实现示例,还可以进一步优化和完善。