猫史档案馆


【重写背包】折叠背包无问题最终版

用户:卑微OIer卑微OIer查看:14 回复:16 评论:14 创建时间:2022-03-08T18:06:27


const item = {
    'wood': {
        type: 'things',
        weight: 1,
        maxPile: 32,
    },
    'meat': {
        type: 'things',
        weight: 1,
        maxPile: 16,
    },
    'fur': {
        type: 'things',
        weight: 1,
        maxPile: 32,
    }
}
world.onPlayerJoin(({ entity }) => {
    Object.assign(entity, {
        capacity: 60,
        bag: [],
        eqinp: ['none', 'none', 'none', 'none'],
        bagLength() {
            let count = 0;
            for (let i = 0; i < this.bag.length; i++)
                count += item[this.spliceItem(this.bag[i])[0]].weight * this.spliceItem(this.bag[i])[1];
            return count;
        },
        spliceItem(item) {
            var it = 0, returnName = "", returnNumber = 0;
            while (item[it] != '*') returnName += item[it], it += 1;
            for (it += 1; it < item.length; it++)returnNumber = returnNumber * 10 + parseInt(item[it]);
            return [returnName, returnNumber];
        },
        append(things) {
            if (this.bagLength() + item[things].weight > this.capacity) return false;
            for (let i = 0; i < this.bag.length; i++) {
                let element = this.bag[i], op = this.spliceItem(element);
                if (op[0] == things && op[1] < item[things].maxPile) {
                    this.bag[i] = op[0] + '*' + String(op[1] + 1);
                    return true;
                }
            }
            this.bag.push(things + '*1');
            this.bag.sort();
            return true;
        },
        remove(things) {
            for (let i = 0; i < this.bag.length; i++) {
                let op = this.spliceItem(this.bag[i]);
                if (op[0] == things) {
                    if (op[1] > 1) this.bag[i] = op[0] + '*' + String(op[1] - 1);
                    else this.bag.splice(i, 1);
                    return true;
                }
            }
            return false;
        },
    })
})


回复

上一页1 页 / 共 1下一页
yee089yee089

沙发

点赞0


评论


未名用户未名用户

龙椅

点赞0


评论


某只sans喵呀某只sans喵呀

挖坟+板凳

点赞0


评论


萌新大佬萌新大佬

坐垫

点赞0


评论


好动的花卷卷mYXx好动的花卷卷mYXx

总算找找个背包教程

点赞0


评论


CenCen

地板

点赞0


评论


宁静倒数28天宁静倒数28天

这背包不能保存啊,我看了代码都知道,数组背包

点赞0


评论


全能代码师全能代码师

板凳

点赞0


评论


灵清帝王吃爆一切厕所灵清帝王吃爆一切厕所

qp

点赞0


评论


SCS_user_i1eril0dUySCS_user_i1eril0dUy

挖()()()()())

点赞0


评论


好动的花卷卷mYXx好动的花卷卷mYXx

可以帮我调用一下吗?我不会

点赞0


评论


NysidlaNysidla

嗨嗨嗨

点赞0


评论


NysidlaNysidla

center_image

点赞0


评论


NysidlaNysidla

bagLength() {
    let count = 0;
    this.bag.forEach((e)=> count += item[spliceItem(e)[0]].weight * spliceItem(e)[1];
    return count;
},
spliceItem(item) {
    return [item.slice(0,item.indexOf("*")),item.slice(a.indexOf("*")+1)]
},

//这样会简便点()()()

点赞1


评论


整活的网友整活的网友

厉害

点赞0


评论


Aaa求佛yaAaa求佛ya

az

点赞0


评论