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

如何向引用其他对象的Building类传入对象以修改资源值

解决闲置游戏中Building类的资源检查与扣减问题

核心问题修正点

  1. 需求结构设计错误:原代码中尝试用对象键存储资源引用的方式不可行,需改用数组存储包含资源引用和所需数量的对象。
  2. 遍历逻辑错误:for...of无法直接遍历普通对象,需针对数组结构调整遍历方式。
  3. 类继承语法错误:class Building extends Thing()的写法不符合JS语法,需去掉Thing后的括号。

1. 调整Requirements数据结构

将需求定义为数组,每个元素包含目标资源的引用和所需数量,确保后续能正确遍历检查:

// 示例需求结构
const buildingRequirements = [
  { resource: player.resources.red, needed: 5 },
  { resource: player.resources.blue, needed: 92 }
];

2. 修复Building类代码

修正类继承语法,同时重构buy方法的资源检查与扣减逻辑:

class Building extends Thing {
    constructor(amount, tag, requirements) {
        super(amount, tag);
        this.requirements = requirements; // 接收数组形式的需求配置
    }

    buy() {
        // 第一步:检查所有资源是否满足需求
        for (const req of this.requirements) {
            if (req.resource.amount < req.needed) {
                return false; // 任意资源不足,终止并返回失败
            }
        }

        // 第二步:资源充足,扣减对应资源数量
        for (const req of this.requirements) {
            req.resource.amount -= req.needed;
        }

        // 第三步:增加建筑持有量
        this.amount += 1;
        return true; // 返回购买成功标识
    }
}

3. 正确创建Building实例

在player.buildings中直接传入资源引用和需求数组,确保Building实例能直接操作player的资源:

const player = {
    resources: {
        red: { amount: 3, tag: "#red" },
        blue: { amount: 4, tag: "#blue" }
    },
    buildings: {
        purple: new Building(0, "#purple", [
            { resource: player.resources.red, needed: 5 },
            { resource: player.resources.blue, needed: 92 }
        ])
    }
};

4. 测试购买流程

调用buy方法即可自动完成资源检查与扣减:

// 资源不足时购买失败
console.log(player.buildings.purple.buy()); // false
console.log(player.resources.red.amount); // 3(未被修改)

// 补充足够资源
player.resources.red.amount = 10;
player.resources.blue.amount = 100;

// 购买成功,资源被扣减,建筑数量增加
console.log(player.buildings.purple.buy()); // true
console.log(player.resources.red.amount); // 5
console.log(player.resources.blue.amount); // 8
console.log(player.buildings.purple.amount); // 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:46:15