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

如何修改JavaScript for循环 按指定尺寸数量随机放置舰船

修改方案

原代码双层循环生成10艘船的核心逻辑是内层循环次数为6-size,对应各尺寸生成数量:

  • size=5:1艘
  • size=4:2艘
  • size=3:3艘
  • size=2:4艘
    总和正好10艘,和给出的原尺寸集合完全匹配。

需要的目标尺寸集合* {2,3,3,4,5} *对应各尺寸生成数量为:5格船1艘、4格船1艘、3格船2艘、2格船1艘,总和5艘。只需要调整内层循环的终止条件,匹配对应尺寸的生成数量即可,其余随机放置逻辑无需改动。

修改后的代码段如下:

randomize(ShipClass = Ship) {
    this.removeAllShips();

    for (let size = 5; size >= 2; size--) {
        // 匹配目标集合的各尺寸舰船数量
        const count = size === 2 ? 1 : size === 3 ? 2 : size === 4 ? 1 : 1;
        for (let n = 0; n < count; n++) {
            const direction = getRandomFrom("row", "column");
            const ship = new ShipClass(size, direction);

            while (!ship.placed) {
                const x = getRandomBetween(0, 9);
                const y = getRandomBetween(0, 9);

                this.removeShip(ship);
                this.addShip(ship, x, y);
            }
        }
    }
}

修改后运行会严格按照要求的尺寸集合生成共5艘舰船,原有随机方向、随机坐标、放置失败重试的逻辑完全保留,不会破坏原有功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:30:54