首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java将对象存储在多维数组中

Java将对象存储在多维数组中
EN

Stack Overflow用户
提问于 2015-03-24 14:06:42
回答 1查看 597关注 0票数 2

我试图将对象存储在一个多维数组中,试图将每个位置保存在游戏板的“状态”中,然而,在循环之后,应该将每个实例设置为它自己的参数,它们都以相同的变量结束。我是不是没有链接到正确的数组或者设置错了?还有很多"square.something应该以静态的方式访问“。

引用对象变量的正确方式是square.var还是Worldx.var?

代码语言:javascript
复制
public static void generateMap() {
    MapSquare[][] World = new MapSquare[10][10]; //2D array init.

    //Choose a square for the home position.
    Random homeRandom = new Random();
    int HomeX = homeRandom.nextInt(10);
    int HomeY = homeRandom.nextInt(10);

    //Chooses a key room.
    int KeyX = homeRandom.nextInt(10);
    int KeyY = homeRandom.nextInt(10);

    //Loop through the objects and set each's parameters.
    for (int i = 0; i < 10; i++)
        {
        for (int j = 0; j < 10; j++)
            {
            MapSquare square = new MapSquare();
            //World[i][j] = square;

            //Calculate the level of the square from the distance to home.
            int distX = HomeX - i;
            int distY = HomeY - j;

            int CalcX = Math.abs(distX); //Convert to positive if negative.
            int CalcY = Math.abs(distY); //Convert to positive if negative.

            //Generate contents of the square.
            int newRandom = random.nextInt(5) + 1;

            switch(newRandom) {
            case 1: // Spawn a monster only.
                {
                square.monster = true;
                square.treasure = false;
                square.trap = false;
                square.home = false;
                square.peekable = false;
                square.key = false;
                square.mapLevel = CalcX + CalcY;

                //Generate the monsters stats.
                Monster monster = new Monster();
                monster.setLevel(square.mapLevel);
                monster.setMaxHealth(monster.getLevel() * 5);
                monster.setHealth(monster.getMaxHealth());
                monster.setDamage(monster.getLevel() * 2);
                break;
                }
            }
            }
        }

    //Generate home square.
    World[HomeX][HomeY].monster = false;
    World[HomeX][HomeY].treasure = false;
    World[HomeX][HomeY].trap = false;
    World[HomeX][HomeY].home = true;
    World[HomeX][HomeY].peekable = true;
    World[HomeX][HomeY].key = false;
    World[HomeX][HomeY].mapLevel = 0;
    World[HomeX][HomeY].visited = true;
    }
EN

回答 1

Stack Overflow用户

发布于 2015-10-06 10:32:32

static关键字基本上意味着一个方法可以独立于它所在类的特定实例使用。例如您正在使用的Math.abs(int i)函数,您不必创建Math类的实例即可使用它。

如果您打算使用类来存储数据,那么包含静态方法通常不是一个好主意,因为它们将无法访问这些数据。

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

https://stackoverflow.com/questions/29226036

复制
相关文章

相似问题

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