首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在资源管理阶段打字项目中组织代码?

如何在资源管理阶段打字项目中组织代码?
EN

Stack Overflow用户
提问于 2016-05-25 07:57:31
回答 1查看 128关注 0票数 0

我正在制作一种资源管理类型的游戏,我需要一些“集合管理器”在我的状态和对象之间。我使用的是Typescript。

比方说,这个游戏是关于养猫的。在一种状态下,玩家可以向前跳过一年。当这种情况发生时,我想要浏览猫的集合,并选择一对成为新猫的父母。在另一种状态下,玩家可以喂养10只猫(改变它们的饥饿值)。所以在两个不同的状态下,我需要更新这个猫的集合。

我在每个州中都有这个代码,猫的集合通过localStorage (有时也可以是Phaser Cache)传递。因此,代码变得相当混乱。

所以我想在状态和这个对象集合之间创建一个抽象层。这将负责更新猫,创建新的猫,并根据通过的标准返回猫的子集。我希望这个东西是一个静态层,这样我就不必在状态之间传递它。我希望能够简单地调用如下函数:

代码语言:javascript
复制
catManager.generateNewCats(10);
catManager.getCats({minAge:2, maxAge:5});
catManager.incrementAges();

你将如何组织这次会议?

EN

回答 1

Stack Overflow用户

发布于 2016-05-25 09:45:33

这里有一个潜在的解决方案:

代码语言:javascript
复制
/** Creates a Guid (UUID v4) */
function createId(): string {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(16);
    });
}


class Cat {
    id: string;
    constructor() {
        this.id = createId();
    }
}
class Manager {
    cats: {}
    getNew(howMany: number): Cat[] {
        const result: Cat[] = [];
        for (let index = 0; index < howMany; index++) {
            const cat = new Cat();
            this.cats[cat.id] = cat;
        }
        return result;
    }

}

export const manager = new Manager();

您始终可以通过Id来标识cat。如果需要,您可以将管理器扩展到本地存储等位置进行缓冲。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37425783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档