This site requires JavaScript, please enable it in your browser!
Greenfoot back
KKobra
KKobra wrote ...

2018/4/29

Add objects/enemies in side scrolling world

KKobra KKobra

2018/4/29

#
I'm making a game in the side scrolling platform style, but I'm having difficulty adding objects / enemies, because it's getting too heavy, I'm doing the addition with loops, this is my code, give me suggestions to optimize the code
public void addBricks()
    {
        for(int i=1;i<31;i++)
        {
            addObject(new brick(), i*70-1, 375);
        }
        for(int i=30;i<31;i++)
        {
            addObject(new Bug(), i*70-1, 325);
        }
        for(int i=34;i<55;i++)
        {
            addObject(new brick(), i*70-1, 375);
        }
        for(int i=54;i<55;i++)
        {
            addObject(new Bug(), i*70-1, 325);
        }
        for(int i=33;i<34;i++)
        {
            addObject(new Bug(), i*70-1, 325);
        }
        for(int i=56;i<87;i++)
        {
            addObject(new brick(), i*70-1, 375);
        }
        for(int i=55;i<56;i++)
        {
            addObject(new Bug(), i*70-1, 325);
        }
        for(int i=86;i<87;i++)
        {
            addObject(new Bug(), i*70-1, 325);
        }
        for(int i=91;i<169;i++)
        {
            addObject(new brick(), i*70-1, 375);
        }
        for(int i=90;i<91;i++)
        {
            addObject(new Bug(), i*70-1, 325);
        }
        for(int i=168;i<169;i++)
        {
            addObject(new Bug(), i*70-1, 325);
        }
        for(int i=171;i<215;i++)
        {
            addObject(new brick(), i*70-1, 375);
        }
        for(int i=170;i<171;i++)
        {
            addObject(new Bug(), i*70-1, 325);
        }
        for(int i=214;i<215;i++)
        {
            addObject(new Bug(), i*70-1, 325);
        }
    }
     public void addCoins()
    {
        for(int i=10;i<13;i++)
        {
            addObject(new Coin(), i*70-1, 230);
        }
        for(int i=45;i<48;i++)
        {
            addObject(new Coin(), i*70-1, 130);
        }
        for(int i=32;i<33;i++)
        {
            addObject(new Coin(), i*70-1, 130);
        }
        for(int i=93;i<98;i++)
        {
            addObject(new Coin(), i*70-1, 230);
        }
        for(int i=121;i<124;i++)
        {
            addObject(new Coin(), i*70-1, 230);
        }
        for(int i=160;i<167;i++)
        {
            addObject(new Coin(), i*70-1, 230);
        }
        for(int i=80;i<82;i++)
        {
            addObject(new Coin(), i*70-1, 30);
        }
        for(int i=149;i<151;i++)
        {
            addObject(new Coin(), i*70-1, 30);
        }
    }
      public void addBricks2()
    {
        for(int i=16;i<19;i++)
        {
            addObject(new brick2(), i*70-1, 250);
        }
        for(int i=32;i<33;i++)
        {
            addObject(new brick2(), i*70-1, 250);
        }
        for(int i=45;i<48;i++)
        {
            addObject(new brick2(), i*70-1, 250);
        }
        for(int i=59;i<62;i++)
        {
            addObject(new brick2(), i*70-1, 250);
        }
        for(int i=88;i<90;i++)
        {
            addObject(new brick2(), i*70-1, 250);
        }
        for(int i=112;i<117;i++)
        {
            addObject(new brick2(), i*70-1, 250);
        }
        for(int i=108;i<110;i++)
        {
            addObject(new brick2(), i*70-1, 250);
        }
        for(int i=148;i<153;i++)
        {
            addObject(new brick2(), i*70-1, 250);
        }
        for(int i=186;i<188;i++)
        {
            addObject(new brick2(), i*70-1, 250);
        }
        for(int i=50;i<51;i++)
        {
            addObject(new brick2(), i*70-1, 300);
        }
        for(int i=113;i<115;i++)
        {
            addObject(new brick2(), i*70-1, 150);
        }
    }
     public void addBricks3()
    {
        for(int i=49;i<52;i++)
        {
            addObject(new brick2(), i*70-1, 140);
        }
        for(int i=149;i<152;i++)
        {
            addObject(new brick2(), i*70-1, 150);
        }
        for(int i=63;i<65;i++)
        {
            addObject(new brick2(), i*70-1, 140);
        }
        for(int i=80;i<82;i++)
        {
            addObject(new brick2(), i*70-1, 140);
        }
        for(int i=189;i<191;i++)
        {
            addObject(new brick2(), i*70-1, 150);
        }
    }
    public void addPlatforms()
    {
        for(int i=27;i<28;i++)
        {
            addObject(new lowplatform(), i*70-1, 290);
        }
        for(int i=75;i<76;i++)
        {
            addObject(new lowplatform(), i*70-1, 290);
        }
        for(int i=102;i<103;i++)
        {
            addObject(new lowplatform(), i*70-1, 290);
        }
        for(int i=1902;i<191;i++)
        {
            addObject(new lowplatform(), i*70-1, 290);
        }
        for(int i=132;i<133;i++)
        {
            addObject(new lowplatform(), i*70-1, 290);
        }
        for(int i=77;i<78;i++)
        {
            addObject(new higherplatform(), i*70-1, 258);
        }
        for(int i=104;i<105;i++)
        {
            addObject(new higherplatform(), i*70-1, 258);
        }
        for(int i=200;i<201;i++)
        {
            addObject(new lowplatform(), i*70-1, 290);
        }
    }
    public void addEnemies()
    {
        for(int i=16;i<17;i++)
        {
            addObject(new Enemy1(), i*70-1, 320);
        }
        for(int i=35;i<36;i++)
        {
            addObject(new Enemy7(), i*70-1, 290);
        }
        for(int i=54;i<55;i++)
        {
            addObject(new Enemy7(), i*70-1, 290);
        }
        for(int i=62;i<63;i++)
        {
            addObject(new Enemy2(), i*70-1, 290);
        }
        for(int i=89;i<90;i++)
        {
            addObject(new Enemy1(), i*70-1, 290);
        }
        for(int i=112;i<113;i++)
        {
            addObject(new Enemy0(), i*70-1, 290);
        }
         for(int i=124;i<125;i++)
        {
            addObject(new Enemy7(), i*70-1, 290);
        }
        for(int i=140;i<141;i++)
        {
            addObject(new Enemy7(), i*70-1, 290);
        }
        for(int i=158;i<159;i++)
        {
            addObject(new Enemy0(), i*70-1, 290);
        }
        for(int i=175;i<176;i++)
        {
            addObject(new Enemy2(), i*70-1, 290);
        }
        for(int i=198;i<199;i++)
        {
            addObject(new Enemy2(), i*70-1, 290);
        }
        for(int i=162;i<1639;i++)
        {
            addObject(new Enemy3(), i*70-1, 290);
        }
        for(int i=162;i<1639;i++)
        {
            addObject(new Enemy1(), i*70-1, 290);
        }
    }
Yehuda Yehuda

2018/4/30

#
Each of your loops take up four lines when you can accomplish a lot of it in one. Line 9 and 17 for instance are only getting run once so why have the loop. If you have multiple loops that have the same condition then they can be combined into one. Do you have 1,478 Instances of Enemy3 and Enemy1 added into the World on purpose? A lot more optimization can be applied but it will take a lot of work and patience, and it will be hard for me to do since I don’t really know what you want.
Yehuda Yehuda

2018/4/30

#
The following code should do the same thing as your first method:
    public void addBricks() {
        addObject(new Bug(), 30 * 70 - 1, 325);
        addObject(new Bug(), 34 * 70 - 1, 325);
        addObject(new Bug(), 54 * 70 - 1, 325);
        addObject(new Bug(), 55 * 70 - 1, 325);
        addObject(new Bug(), 86 * 70 - 1, 325);
        addObject(new Bug(), 90 * 70 - 1, 325);
        addObject(new Bug(), 168 * 70 - 1, 325);
        addObject(new Bug(), 170 * 70 - 1, 325);
        addObject(new Bug(), 214 * 70 - 1, 325);
        for (int i = 1; i < 215; i++) {
            addObject(new brick(), i * 70 - 1, 375);
            switch (i) {
                case 30:
                    i = 33;
                    break;
                case 54:
                    i = 55;
                    break;
                case 86:
                    i = 90;
                    break;
                case 168:
                    i = 170;
                    break;
            }
        }
    }
P. S. The name of your classes should begin with a capital letter.
KKobra KKobra

2018/4/30

#
Thanks This worked well.
Yehuda Yehuda

2018/4/30

#
You can optimize the other methods also it will just be more work (for one of us).
You need to login to post a reply.