You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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("输入必须是整数,请重新输入!")

关键修改说明

  1. 导入random模块:这是使用随机功能的前提,未导入会直接报错
  2. 修改棋盘数组:通过arr[rows - 1][random_col] = 'X'直接修改底部行的单元格,障碍会被永久保存在棋盘中
  3. 生成随机位置:用random.randint(0, cols - 1)生成0到6之间的随机数(对应7列的合法索引),确保位置有效
  4. 完善输入校验:增加正整数校验和棋盘尺寸限制,避免无效输入导致程序异常

内容的提问来源于stack exchange,提问作者Max Butler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:20:30