Connect4游戏:如何在空棋盘底部随机放置单个1x1障碍单元格
Connect4 1x1底部障碍实现方案
原代码的核心问题
- 未导入
random模块,无法使用随机功能 - 错误使用
random.seed(),它仅用于初始化随机数生成器,不是生成随机位置,放在循环里完全无效 - 没有实际修改棋盘数组
arr,仅打印种子值,棋盘不会产生任何变化 - 输入验证逻辑不完善,未限制尺寸在棋盘范围内,也没校验输入是否为正整数
修正后的完整代码
import random # 初始化6行7列的Connect4棋盘 rows, cols = (6, 7) arr = [['_' for _ in range(cols)] for _ in range(rows)] # 打印初始空棋盘 print("初始空棋盘:") for row in arr: print(' '.join(row)) # 用空格分隔,棋盘显示更清晰 # 循环设置2个障碍(对应原代码的range(2)) for _ in range(2): while True: try: width = int(input("\n请输入障碍单元格的宽度:")) height = int(input("请输入障碍单元格的高度:")) # 校验输入合法性 if width <= 0 or height <= 0: print("宽度和高度必须是正整数!") continue if width > cols or height > rows: print(f"障碍尺寸不能超过棋盘上限(宽最大{cols},高最大{rows})!") continue # 处理1x1障碍,固定放在棋盘底部行 if width == 1 and height == 1: # 随机生成底部行的有效列索引 random_col = random.randint(0, cols - 1) # 修改棋盘对应位置为障碍(用X标记) arr[rows - 1][random_col] = 'X' # 打印更新后的棋盘 print("\n添加障碍后的棋盘:") for row in arr: print(' '.join(row)) break # 输入有效,跳出循环 else: print("目前仅支持设置1x1的障碍!") except ValueError: print("输入必须是整数,请重新输入!")
关键修改说明
- 导入random模块:这是使用随机功能的前提,未导入会直接报错
- 修改棋盘数组:通过
arr[rows - 1][random_col] = 'X'直接修改底部行的单元格,障碍会被永久保存在棋盘中 - 生成随机位置:用
random.randint(0, cols - 1)生成0到6之间的随机数(对应7列的合法索引),确保位置有效 - 完善输入校验:增加正整数校验和棋盘尺寸限制,避免无效输入导致程序异常
内容的提问来源于stack exchange,提问作者Max Butler
相关产品推荐
相关产品推荐

