猫史档案馆


【新版可折叠背包】依据字符串的可折叠背包

用户:卑微OIer卑微OIer查看:1 回复:2 评论:1 创建时间:2022-03-07T10:08:37


console.clear()
function sliceItem(item) {
    let names = "", number = 0, iter = 0;
    while (item[iter] != "*") names += item[iter], iter += 1;
    for (its = iter + 1; its < item.length; its++)
        number = number * 10 + (item[its] - '0');
    return [names, number];
}
world.onPlayerJoin(async ({ entity }) => {
    entity.bag = [], entity.capacity = 15;
    Object.assign(entity, {
        append(things) {
            for (let i = 0; i < this.bag.length; i++) {
                let op = sliceItem(this.bag[i]);
                if (op[0] == things) {
                    this.bag[i] = op[0] + '*' + String(op[1] + 1);
                    return true;
                }
            }
            this.bag.push(things + '*1');
        },
        remove(things) {
            for (let i = 0; i < this.bag.length; i++) {
                let op = sliceItem(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;
        },
        async openBag(){
            while(1){
                var rslt = await this.player.dialog({
                    type:Box3DialogType.SELECT,
                    title:  `背包`,
                    options:[this.bag],
                })
                if(!rslt)return ;
            }
        },
        async host() {
            while (1) {
                var result = await this.player.dialog({
                    type: Box3DialogType.SELECT,
                    title: `${this.player.name}的状态`,
                    content: `
                    血量:[${this.hp}/${this.maxHp}]
                    容量:[${this.bag.length}/${this.capacity}]`,
                    options: ['背包'],
                })
                if (!result) return;
                if(result.index==0){
                    this.openBag();
                }
            }

        }
    })
})
world.onPress(async ({ button, entity }) => {
    if (button === 'action1') {
        entity.host();
    }
})

 


回复

上一页1 页 / 共 1下一页
卑微OIer卑微OIer

大屑发现这个是O(n^2)复杂度的,想了想用堆优化,没人会,谁帮个忙)))))

点赞1


评论


浮生awa浮生awa

太谢谢了()

点赞0


评论