yjy_branch
杨井源 5 months ago
parent 68ad920a75
commit 4707562a43

@ -0,0 +1,100 @@
# wuziqi.py
class WuziqiGame:
def __init__(self, board_size=15):
self.board_size = board_size
self.board = [['-' for _ in range(board_size)] for _ in range(board_size)]
self.current_player = 'X'
def print_board(self):
"""打印棋盘"""
print(' ', end='')
for i in range(self.board_size):
print(f'{i:2}', end='')
print()
for i in range(self.board_size):
print(f'{i:2}', end='')
for j in range(self.board_size):
print(f' {self.board[i][j]}', end='')
print()
def make_move(self, row, col):
"""下棋"""
if 0 <= row < self.board_size and 0 <= col < self.board_size:
if self.board[row][col] == '-':
self.board[row][col] = self.current_player
if self.check_win(row, col):
print(f"玩家 {self.current_player} 获胜!")
return True
self.current_player = 'O' if self.current_player == 'X' else 'X'
return False
else:
print("该位置已有棋子!")
return False
else:
print("位置超出棋盘范围!")
return False
def check_win(self, row, col):
"""检查是否获胜"""
directions = [
[(0, 1), (0, -1)], # 水平
[(1, 0), (-1, 0)], # 垂直
[(1, 1), (-1, -1)], # 主对角线
[(1, -1), (-1, 1)] # 副对角线
]
player = self.board[row][col]
for direction_pair in directions:
count = 1 # 当前位置已经有一个棋子
# 检查每个方向的两个相反方向
for dx, dy in direction_pair:
temp_row, temp_col = row, col
# 沿着一个方向检查连续的棋子
for _ in range(4):
temp_row += dx
temp_col += dy
if (0 <= temp_row < self.board_size and
0 <= temp_col < self.board_size and
self.board[temp_row][temp_col] == player):
count += 1
else:
break
if count >= 5:
return True
return False
def main():
"""主函数"""
game = WuziqiGame()
print("欢迎来到五子棋游戏!")
print("玩家X先手玩家O后手")
print("输入行号和列号来下棋0-14")
while True:
game.print_board()
print(f"当前玩家: {game.current_player}")
try:
row = int(input("请输入行号: "))
col = int(input("请输入列号: "))
if game.make_move(row, col):
game.print_board()
break
except ValueError:
print("请输入有效的数字!")
except KeyboardInterrupt:
print("\n游戏结束!")
break
if __name__ == "__main__":
main()
Loading…
Cancel
Save