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

2017/12/15

How to optimise my code?

Arkin Arkin

2017/12/15

#
hay! I have this code and it takes to much resources so the computer and i want to optimise it. what suggest me?
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
import java.util.ArrayList;
public class Body extends Actor{
    int mirror = 0;
    int test1=0;
    int test2;
    int x1 = 0;
    int x2 = 0;
    int changer = 0;
    int l1 = 1;
    int l2 = 1;
    int max = 1;
    int min = 1;
    double WalkSpeed = 16;
    int mover = 0;
    int PortalMoveSpeed = 10;
    float moveXr;
    float moveYr;
    float oldXr;
    float oldYr;
    float moveXb;
    float moveYb;
    float oldXb;
    float oldYb;
    int cellr = 0;
    int cellb = 0;
    int TPdelay = 0;
    int TPdirectionR = 0;
    int TPdirectionB = 0;
    boolean testFOR1;
    boolean testFOR2;
    boolean fall = false;
    int FallTime = 0;
    public Body(){
        scale();
        int j = -1;
        for(double i = 1;j != 1;i = i + 0.02){
            if((int)(function1(i)*100) > -10 && (int)(function1(i)*100) < 10 && j != 1){
                j++;
            }
            if((int)(function1(i)*100) > -10 && (int)(function1(i)*100) < 10 && j == 0){
                l1 = (int)i;
            }
            if((int)(function1(i)*100) > -10 && (int)(function1(i)*100) < 10 && j == 1){
                l2 = (int)i;
            }
        }
        int n = -1;
        for(float r = 1.0f;n != 1;r = r + 0.001f){
            if((int)(DerFct1(r)*1000) == 0 && n != 1){
                n++;
            }
            if((int)(DerFct1(r)*1000) == 0 && n == 0){
                max = (int)r;
            }
            if((int)(DerFct1(r)*1000) == 0 && n == 1){
                min = (int)r;
            }
        }
        test2 = l1;
    }
    public void addedToWorld(){
        getWorld().getObjects(bras_p1_1.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.2)) , getY()-(int)(this.getImage().getHeight()*0.2));
        getWorld().getObjects(bras_p1_2.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.25)) , getY()-(int)(this.getImage().getHeight()*0.2));
        getWorld().getObjects(Jambe_p1_1.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
        getWorld().getObjects(Jambe_p1_2.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
        getWorld().getObjects(Jambe_p2_2.class).get(0).setLocation(
            (int)((getWorld().getObjects(Jambe_p1_2.class).get(0).getX() + (double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getWidth()*0.1)) + (double)(-Math.sin(Math.toRadians(function1(test2)))*(double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.48))),
            (int)(getWorld().getObjects(Jambe_p1_2.class).get(0).getY() + (double)(Math.cos(Math.toRadians(function1(test2)))*(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.5))));
        getWorld().getObjects(Jambe_p2_1.class).get(0).setLocation(
            (int)((getWorld().getObjects(Jambe_p1_1.class).get(0).getX() + (double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getWidth()*0.1)) + (double)(-Math.sin(Math.toRadians(function1(test1)))*(double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.48))),
            (int)(getWorld().getObjects(Jambe_p1_1.class).get(0).getY() + (double)(Math.cos(Math.toRadians(function1(test1)))*(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.5))));
        getWorld().getObjects(bras_p2_1.class).get(0).setLocation(
            (int)(getWorld().getObjects(bras_p1_1.class).get(0).getX() + (double)((Math.sin(Math.sin((double)-x2/(WalkSpeed/2))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.45))),
            (int)(getWorld().getObjects(bras_p1_1.class).get(0).getY() + (double)(Math.abs(Math.cos((Math.sin((double)x2/(WalkSpeed/2)))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.45))));
    }
    public void act(){
        if(Greenfoot.getMouseInfo() != null){
            action();
        }
    }
    public void action(){
        TPdelay--;
        List<portal_r> PR = getObjectsInRange((int)(this.getImage().getWidth()*1.5), portal_r.class);
        List<portal_b> PB = getObjectsInRange((int)(this.getImage().getWidth()*1.5), portal_b.class);
        List<portal_r> PBasR = getObjectsAtOffset(0, 60, portal_r.class);
        List<portal_b> PBasB = getObjectsAtOffset(0, 60, portal_b.class);
        Actor cellFall = getOneObjectAtOffset(0,(int)(getImage().getHeight()*1.6), cell.class);
        if(PBasR.size() != 0 && getWorld().getObjects(portal_b.class).size() != 0){
            fall = true;
        }else if(PBasB.size() != 0 && getWorld().getObjects(portal_r.class).size() != 0){
            fall = true;
        }else if(cellFall == null){
            fall = true;
        }else{
            fall = false;
            FallTime = 0;
        }
        if(PB.size() != 0 && TPdelay <= 0){
            TPdelay = 7;
            switch(TPdirectionR) {
                case 0:
                    this.setLocation(getWorld().getObjects(portal_r.class).get(0).getX()+20,getWorld().getObjects(portal_r.class).get(0).getY());
                    break;
                case 1:
                    this.setLocation(getWorld().getObjects(portal_r.class).get(0).getX()-20,getWorld().getObjects(portal_r.class).get(0).getY());
                    break;
                case 2:
                    this.setLocation(getWorld().getObjects(portal_r.class).get(0).getX(),getWorld().getObjects(portal_r.class).get(0).getY()+20);
                    break;
                case 3:
                    this.setLocation(getWorld().getObjects(portal_r.class).get(0).getX(),getWorld().getObjects(portal_r.class).get(0).getY()-20);
                    break;
            }
        }
        if(PR.size() != 0 && TPdelay <= 0){
            TPdelay = 7;
            switch(TPdirectionB) {
                case 0:
                    this.setLocation(getWorld().getObjects(portal_b.class).get(0).getX()+20,getWorld().getObjects(portal_b.class).get(0).getY());
                    break;
                case 1:
                    this.setLocation(getWorld().getObjects(portal_b.class).get(0).getX()-20,getWorld().getObjects(portal_b.class).get(0).getY());
                    break;
                case 2:
                    this.setLocation(getWorld().getObjects(portal_b.class).get(0).getX(),getWorld().getObjects(portal_b.class).get(0).getY()+20);
                    break;
                case 3:
                    this.setLocation(getWorld().getObjects(portal_b.class).get(0).getX(),getWorld().getObjects(portal_b.class).get(0).getY()-20);
                    break;
            }
        }
        Actor cellMove = getOneObjectAtOffset((int)(getImage().getWidth()*1.3),0, cell.class);
        Actor cellMove1 = getOneObjectAtOffset((int)-(getImage().getWidth()*1.3),0, cell.class);
        List<cell> cellUP1 = getWorld().getObjects(Jambe_p2_1.class).get(0).getObjectsInRange((int)(getWorld().getObjects(Jambe_p2_1.class).get(0).getImage().getHeight()*0.4), cell.class); 
        List<cell> cellUP2 = getWorld().getObjects(Jambe_p2_2.class).get(0).getObjectsInRange((int)(getWorld().getObjects(Jambe_p2_2.class).get(0).getImage().getHeight()*0.4), cell.class);
        if(fall == false){
            if(cellUP1.size() != 0 || cellUP2.size() != 0){
                if(cellUP1.size() != 0){
                    testFOR1 = cellUP1.get(0).isGround1;
                }
                if(cellUP2.size() != 0){
                    testFOR2 = cellUP2.get(0).isGround1;
                }
                if(testFOR1 == true && testFOR2 == false){
                    this.setLocation(getX(),getY()-20);
                }else if(testFOR1 == false && testFOR2 == true){
                    this.setLocation(getX(),getY()-20);
                }else if(testFOR1 == true && testFOR2 == true){
                    this.setLocation(getX(),getY()-20);
                }else if(testFOR1 == false && testFOR2 == false){
                    this.setLocation(getX(),getY());
                }
            }
        }
        if(fall == true){
            while(FallTime < 60){
                FallTime++;
            }
            this.setLocation(getX(),(int)(getY()+racine(FallTime)));
        }else if(fall == false){
            this.setLocation(getX(),getY());
        }
        if(Greenfoot.getMouseInfo() != null && Greenfoot.getMouseInfo().getButton() == 1 && Greenfoot.mouseClicked(null)){
           if(getWorld().getObjects(portal_r.class).size() != 0){
               getWorld().removeObject(getWorld().getObjects(portal_r.class).get(0));
           }
           oldXr = (getWorld().getObjects(bras_p1_2.class).get(0).getX() + (int)((float)Math.cos((float)Math.atan2(((float)(Greenfoot.getMouseInfo().getY()-getWorld().getObjects(bras_p1_2.class).get(0).getY())), ((float)(Greenfoot.getMouseInfo().getX()-getWorld().getObjects(bras_p1_2.class).get(0).getX()))))*getWorld().getObjects(bras_p1_2.class).get(0).getImage().getWidth()/2));
           oldYr = (getWorld().getObjects(bras_p1_2.class).get(0).getY() + (int)((float)Math.sin((float)Math.atan2(((float)(Greenfoot.getMouseInfo().getY()-getWorld().getObjects(bras_p1_2.class).get(0).getY())), ((float)(Greenfoot.getMouseInfo().getX()-getWorld().getObjects(bras_p1_2.class).get(0).getX()))))*getWorld().getObjects(bras_p1_2.class).get(0).getImage().getWidth()/2));
           moveXr = ((float)Math.cos((float)Math.atan2(((float)(Greenfoot.getMouseInfo().getY()-getWorld().getObjects(bras_p1_2.class).get(0).getY())), ((float)(Greenfoot.getMouseInfo().getX()-getWorld().getObjects(bras_p1_2.class).get(0).getX()))))*PortalMoveSpeed);
           moveYr = ((float)Math.sin((float)Math.atan2(((float)(Greenfoot.getMouseInfo().getY()-getWorld().getObjects(bras_p1_2.class).get(0).getY())), ((float)(Greenfoot.getMouseInfo().getX()-getWorld().getObjects(bras_p1_2.class).get(0).getX()))))*PortalMoveSpeed);
           getWorld().addObject(new portal_r(oldXr,oldYr,moveXr,moveYr),(int)oldXr, (int)oldYr);
        }
        if(Greenfoot.getMouseInfo() != null && Greenfoot.getMouseInfo().getButton() == 3 && Greenfoot.mouseClicked(null)){
           if(getWorld().getObjects(portal_b.class).size() != 0){
               getWorld().removeObject(getWorld().getObjects(portal_b.class).get(0));
           }
           oldXb = (getWorld().getObjects(bras_p1_2.class).get(0).getX() + (int)((float)Math.cos((float)Math.atan2(((float)(Greenfoot.getMouseInfo().getY()-getWorld().getObjects(bras_p1_2.class).get(0).getY())), ((float)(Greenfoot.getMouseInfo().getX()-getWorld().getObjects(bras_p1_2.class).get(0).getX()))))*getWorld().getObjects(bras_p1_2.class).get(0).getImage().getWidth()/2));
           oldYb = (getWorld().getObjects(bras_p1_2.class).get(0).getY() + (int)((float)Math.sin((float)Math.atan2(((float)(Greenfoot.getMouseInfo().getY()-getWorld().getObjects(bras_p1_2.class).get(0).getY())), ((float)(Greenfoot.getMouseInfo().getX()-getWorld().getObjects(bras_p1_2.class).get(0).getX()))))*getWorld().getObjects(bras_p1_2.class).get(0).getImage().getWidth()/2));
           moveXb = ((float)Math.cos((float)Math.atan2(((float)(Greenfoot.getMouseInfo().getY()-getWorld().getObjects(bras_p1_2.class).get(0).getY())), ((float)(Greenfoot.getMouseInfo().getX()-getWorld().getObjects(bras_p1_2.class).get(0).getX()))))*PortalMoveSpeed);
           moveYb = ((float)Math.sin((float)Math.atan2(((float)(Greenfoot.getMouseInfo().getY()-getWorld().getObjects(bras_p1_2.class).get(0).getY())), ((float)(Greenfoot.getMouseInfo().getX()-getWorld().getObjects(bras_p1_2.class).get(0).getX()))))*PortalMoveSpeed);
           getWorld().addObject(new portal_b(oldXb,oldYb,moveXb,moveYb),(int)oldXb, (int)oldYb);
        }
        if(Greenfoot.getMouseInfo() != null && this.getX() < Greenfoot.getMouseInfo().getX()){
            if(Greenfoot.getMouseInfo() != null){
                getWorld().getObjects(bras_p1_2.class).get(0).turnTowards((int)(Greenfoot.getMouseInfo().getX()),(int)(Greenfoot.getMouseInfo().getY()));
            }
            if(mirror == 1){
                mirror = 0;
                Mirror();
                getWorld().getObjects(Jambe_p1_1.class).get(0).mirror = 1;
                getWorld().getObjects(Jambe_p1_2.class).get(0).mirror = 1;
                getWorld().getObjects(Jambe_p2_1.class).get(0).mirror = 1;
                getWorld().getObjects(Jambe_p2_2.class).get(0).mirror = 1;
                getWorld().getObjects(bras_p1_1.class).get(0).mirror = 1;
                getWorld().getObjects(bras_p1_2.class).get(0).mirror = 1;
                getWorld().getObjects(bras_p2_1.class).get(0).mirror = 1;
            }
            if(!Greenfoot.isKeyDown("d") && !Greenfoot.isKeyDown("a") && getWorld().getObjects(Jambe_p1_1.class).get(0).getRotation() == 0 && x1 == 0){
                mover = 0;
            }
            if(mover == 0){
                getWorld().getObjects(bras_p1_1.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.2)) , getY()-(int)(this.getImage().getHeight()*0.2));
                getWorld().getObjects(bras_p1_2.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.25)) , getY()-(int)(this.getImage().getHeight()*0.2));
                getWorld().getObjects(Jambe_p1_1.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
                getWorld().getObjects(Jambe_p1_2.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
                getWorld().getObjects(Jambe_p2_2.class).get(0).setLocation(
                    (int)((getWorld().getObjects(Jambe_p1_2.class).get(0).getX() + (double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getWidth()*0.1)) + (double)(-Math.sin(Math.toRadians(function1(test2)))*(double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.48))),
                    (int)(getWorld().getObjects(Jambe_p1_2.class).get(0).getY() + (double)(Math.cos(Math.toRadians(function1(test2)))*(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.5))));
                getWorld().getObjects(Jambe_p2_1.class).get(0).setLocation(
                    (int)((getWorld().getObjects(Jambe_p1_1.class).get(0).getX() + (double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getWidth()*0.1)) + (double)(-Math.sin(Math.toRadians(function1(test1)))*(double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.48))),
                    (int)(getWorld().getObjects(Jambe_p1_1.class).get(0).getY() + (double)(Math.cos(Math.toRadians(function1(test1)))*(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.5))));
                getWorld().getObjects(bras_p2_1.class).get(0).setLocation(
                    (int)(getWorld().getObjects(bras_p1_1.class).get(0).getX() + (double)((Math.sin(Math.sin((double)-x2/(WalkSpeed/2))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.45))),
                    (int)(getWorld().getObjects(bras_p1_1.class).get(0).getY() + (double)(Math.abs(Math.cos((Math.sin((double)x2/(WalkSpeed/2)))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.45))));
                getWorld().getObjects(Jambe_p1_1.class).get(0).setRotation((int)function1(test1));
                getWorld().getObjects(Jambe_p1_2.class).get(0).setRotation((int)function1(test2));
                getWorld().getObjects(Jambe_p2_1.class).get(0).setRotation((int)(2*Math.toDegrees(Math.sin(Math.sin((double)x1/WalkSpeed)))));
                getWorld().getObjects(Jambe_p2_2.class).get(0).setRotation((int)(2.5*Math.toDegrees(Math.sin((double)x2/WalkSpeed))));
                getWorld().getObjects(bras_p1_1.class).get(0).setRotation((int)(Math.toDegrees(Math.sin((double)x2/(WalkSpeed/2)))));
                getWorld().getObjects(bras_p2_1.class).get(0).setRotation((int)Math.toDegrees(Math.sin((double)x2/(WalkSpeed/2))*1.5)-45);
            }
            if(mover == 1){
                getWorld().getObjects(bras_p1_1.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.2)) , getY()-(int)(this.getImage().getHeight()*0.2));
                getWorld().getObjects(bras_p1_2.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.25)) , getY()-(int)(this.getImage().getHeight()*0.2));
                getWorld().getObjects(Jambe_p1_1.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
                getWorld().getObjects(Jambe_p1_2.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
                getWorld().getObjects(Jambe_p2_2.class).get(0).setLocation(
                    (int)((getWorld().getObjects(Jambe_p1_2.class).get(0).getX() + (double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getWidth()*0.1)) + (double)(Math.sin(Math.sin(-x1/(WalkSpeed/2))*0.5)*(double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.48))),
                    (int)(getWorld().getObjects(Jambe_p1_2.class).get(0).getY() + (double)((Math.cos(Math.sin(-x1/(WalkSpeed/2))*0.5))*(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.5))));
                getWorld().getObjects(Jambe_p2_1.class).get(0).setLocation(
                    (int)((getWorld().getObjects(Jambe_p1_1.class).get(0).getX() + (double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getWidth()*0.1)) + (double)(Math.sin(Math.sin(-x2/(WalkSpeed/2))*0.5)*(double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.48))),
                    (int)(getWorld().getObjects(Jambe_p1_1.class).get(0).getY() + (double)((Math.cos(Math.sin(-x2/(WalkSpeed/2))*0.5))*(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.5))));
                getWorld().getObjects(bras_p2_1.class).get(0).setLocation(
                    (int)(getWorld().getObjects(bras_p1_1.class).get(0).getX() + (double)((Math.sin(0.3*(Math.sin((double)x2/(WalkSpeed/2)))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.45))),
                    (int)(getWorld().getObjects(bras_p1_1.class).get(0).getY() + (double)(Math.abs(Math.cos(0.3*(Math.sin((double)x2/(WalkSpeed/2)))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.45))));
                getWorld().getObjects(Jambe_p1_1.class).get(0).setRotation((int)(Math.toDegrees(Math.sin(-x1/(WalkSpeed/2))*0.5)));
                getWorld().getObjects(Jambe_p1_2.class).get(0).setRotation((int)(Math.toDegrees(Math.sin(-x2/(WalkSpeed/2))*0.5)));
                getWorld().getObjects(Jambe_p2_1.class).get(0).setRotation((int)(1.5*function1(test2))+20);
                getWorld().getObjects(Jambe_p2_2.class).get(0).setRotation((int)(1.5*function1(test1))+20);
                getWorld().getObjects(bras_p1_1.class).get(0).setRotation((int)(0.3*Math.toDegrees(Math.sin((double)-x2/(WalkSpeed/2)))));
                getWorld().getObjects(bras_p2_1.class).get(0).setRotation((int)Math.toDegrees(Math.sin((double)-x2/(WalkSpeed/2))*1.05)-45);
            }
            if(Greenfoot.isKeyDown("d") && !Greenfoot.isKeyDown("a")){
                mover = 0;
                if(changer == 0){
                    test1 = 0;
                    test2 = l1;
                    x1 = 0;
                    x2 = l2/2;
                    changer = 1;
                }
                if(cellMove == null){
                    this.setLocation(getX()+3,getY());
                }else{
                    this.setLocation(getX(),getY());
                }
                test1++;
                if(test1 >= l2){
                    test1 = 0;
                }
                test2++;
                if(test2 >= l2){
                    test2 = 0;
                }
                x1++;
                if(x1 >= l2){
                    x1=0;
                }
                x2++;
                if(x2 >= l2){
                    x2=0;
                }
            }
            if(!Greenfoot.isKeyDown("d") && test1 != 0 && !Greenfoot.isKeyDown("a")){
                changer = 0;
                if(test1 < max){
                    test1--;
                }
                if(test1 >= max && test1 < l1){
                    test1++;
                }
                if(test1 > l1 && test1 < min){
                    test1--;
                }
                if(test1 >= min && test1 < l2){
                    test1++;
                }
                if(test1 >= l2 || test1 == l1){
                    test1 = 0;
                }
            }
            if(!Greenfoot.isKeyDown("d") && test2 != l1 && !Greenfoot.isKeyDown("a")){
                changer = 0;
                if(test2 > l1 && test2 < min){
                    test2--;
                }
                if(test2 >= min && test2 < l2){
                    test2++;
                }
                if(test2 < l1 && test2 >= max){
                    test2++;
                }
                if(test2 < max && test2 > 0){
                    test2--;
                }
                if(test2 == 0 || test2 >= l2){
                    test2 = l1;
                }
            }
            if(!Greenfoot.isKeyDown("d") && x1 != 0 && !Greenfoot.isKeyDown("a")){
                changer = 0;
                if(x1 > 0 && x1 <= (int)l2/4){
                    x1--;
                }
                if(x1 > (int)l2/4 && x1 < (int)l2/2){
                    x1++;
                }
                if(x1 > (int)l2/2 && x1 <= (int)3*l2/4){
                    x1--;
                }
                if(x1 > (int)3*l2/4 && x1 < (int)l2){
                    x1++;
                }
                if(x1 >= l2 || x1 == (int)l2/2){
                    x1 = 0;
                }
            }
            if(!Greenfoot.isKeyDown("d") && x2 != 0 && !Greenfoot.isKeyDown("a")){
                changer = 0;
                if(x2 > 0 && x2 <= (int)l2/4){
                    x2--;
                }
                if(x2 > (int)l2/4 && x2 < (int)l2/2){
                    x2++;
                }
                if(x2 > (int)l2/2 && x2 <= (int)3*l2/4){
                    x2--;
                }
                if(x2 > (int)3*l2/4 && x2 < (int)l2){
                    x2++;
                }
                if(x2 >= l2 || x2 == (int)l2/2){
                    x2 = 0;
                }
            }
            if(Greenfoot.isKeyDown("a") && !Greenfoot.isKeyDown("d")){
                mover = 1;
                if(changer == 0){
                    test1 = 0;
                    test2 = l1;
                    x1 = 0;
                    x2 = l2/2;
                    changer = 1;
                }
                if(cellMove1 == null){
                    this.setLocation(getX()-2,getY());
                }else{
                    this.setLocation(getX(),getY());
                }
                test1++;
                if(test1 >= l2){
                    test1 = 0;
                }
                test2++;
                if(test2 >= l2){
                    test2 = 0;
                }
                x1++;
                if(x1 >= l2){
                    x1=0;
                }
                x2++;
                if(x2 >= l2){
                    x2=0;
                }
                test1 = x1;
                test2 = x2;
            }
        }
        if(Greenfoot.getMouseInfo() != null && this.getX() > Greenfoot.getMouseInfo().getX()){
            getWorld().getObjects(bras_p1_2.class).get(0).turnTowards((int)(Greenfoot.getMouseInfo().getX()),(int)(Greenfoot.getMouseInfo().getY()));
            if(mirror == 0){
                mirror = 1;
                Mirror();
                getWorld().getObjects(Jambe_p1_1.class).get(0).mirror = 1;
                getWorld().getObjects(Jambe_p1_2.class).get(0).mirror = 1;
                getWorld().getObjects(Jambe_p2_1.class).get(0).mirror = 1;
                getWorld().getObjects(Jambe_p2_2.class).get(0).mirror = 1;
                getWorld().getObjects(bras_p1_1.class).get(0).mirror = 1;
                getWorld().getObjects(bras_p1_2.class).get(0).mirror = 1;
                getWorld().getObjects(bras_p2_1.class).get(0).mirror = 1;
            }
            if(!Greenfoot.isKeyDown("d") && !Greenfoot.isKeyDown("a") && getWorld().getObjects(Jambe_p1_1.class).get(0).getRotation() == 0 && x1 == 0){
                mover = 0;
            }
            if(mover == 0){
                getWorld().getObjects(bras_p1_1.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.2)) , getY()-(int)(this.getImage().getHeight()*0.2));
                getWorld().getObjects(bras_p1_2.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.25)) , getY()-(int)(this.getImage().getHeight()*0.2));
                getWorld().getObjects(Jambe_p1_1.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
                getWorld().getObjects(Jambe_p1_2.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
                getWorld().getObjects(Jambe_p2_1.class).get(0).setLocation(
                    (int)((getWorld().getObjects(Jambe_p1_1.class).get(0).getX() - (double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getWidth()*0.1)) + (double)(Math.sin(Math.toRadians(function1(test1)))*(double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.48))),
                    (int)(getWorld().getObjects(Jambe_p1_1.class).get(0).getY() + (double)(Math.cos(Math.toRadians(function1(-test1)))*(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.5))));
                getWorld().getObjects(Jambe_p2_2.class).get(0).setLocation(
                    (int)((getWorld().getObjects(Jambe_p1_2.class).get(0).getX() - (double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getWidth()*0.1)) + (double)(Math.sin(Math.toRadians(function1(test2)))*(double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.48))),
                    (int)(getWorld().getObjects(Jambe_p1_2.class).get(0).getY() + (double)(Math.cos(Math.toRadians(function1(-test2)))*(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.5))));
                getWorld().getObjects(bras_p2_1.class).get(0).setLocation(
                    (int)((getWorld().getObjects(bras_p1_1.class).get(0).getX() + getWorld().getObjects(bras_p1_1.class).get(0).getImage().getWidth()*0.1) + (double)(-Math.sin((double)(Math.sin((double)(Math.sin((double)-x2/(WalkSpeed/2))))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.48))),
                    (int)((getWorld().getObjects(bras_p1_1.class).get(0).getY()- getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.07) + (double)(Math.abs(Math.cos((double)(Math.sin((double)(Math.sin((double)-x2/(WalkSpeed/2))))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.48)))));
                getWorld().getObjects(Jambe_p1_1.class).get(0).setRotation((int)function1(-test1));
                getWorld().getObjects(Jambe_p1_2.class).get(0).setRotation((int)function1(-test2));
                getWorld().getObjects(Jambe_p2_1.class).get(0).setRotation((int)(-2*Math.toDegrees(Math.sin(Math.sin((double)x1/WalkSpeed)))));
                getWorld().getObjects(Jambe_p2_2.class).get(0).setRotation((int)(-2*Math.toDegrees(Math.sin((double)x2/WalkSpeed)))+5);
                getWorld().getObjects(bras_p1_1.class).get(0).setRotation((int)(Math.toDegrees(Math.sin((double)-x2/(WalkSpeed/2)))));
                getWorld().getObjects(bras_p2_1.class).get(0).setRotation((int)Math.toDegrees(Math.sin((double)x2/(WalkSpeed/2))*-1.5)+45);
            }
            if(mover == 1){
                getWorld().getObjects(bras_p1_1.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.2)) , getY()-(int)(this.getImage().getHeight()*0.2));
                getWorld().getObjects(bras_p1_2.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.25)) , getY()-(int)(this.getImage().getHeight()*0.2));
                getWorld().getObjects(Jambe_p1_1.class).get(0).setLocation(getX()+((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
                getWorld().getObjects(Jambe_p1_2.class).get(0).setLocation(getX()-((int)(this.getImage().getWidth()*0.2)),getY()+((int)(this.getImage().getHeight()*0.35)));
                getWorld().getObjects(Jambe_p2_1.class).get(0).setLocation(
                    (int)((getWorld().getObjects(Jambe_p1_1.class).get(0).getX() - (double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getWidth()*0.1)) + (double)(-Math.sin(Math.sin(-x1/(WalkSpeed/2))*0.5)*(double)(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.48))),
                    (int)(getWorld().getObjects(Jambe_p1_1.class).get(0).getY() + (double)(Math.cos(Math.sin(-x1/(WalkSpeed/2))*0.5)*(getWorld().getObjects(Jambe_p1_1.class).get(0).getImage().getHeight()*0.5))));
                getWorld().getObjects(Jambe_p2_2.class).get(0).setLocation(
                    (int)((getWorld().getObjects(Jambe_p1_2.class).get(0).getX() - (double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getWidth()*0.1)) + (double)(-Math.sin(Math.sin(-x2/(WalkSpeed/2))*0.5)*(double)(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.48))),
                    (int)(getWorld().getObjects(Jambe_p1_2.class).get(0).getY() + (double)(Math.cos(Math.sin(-x2/(WalkSpeed/2))*0.5)*(getWorld().getObjects(Jambe_p1_2.class).get(0).getImage().getHeight()*0.5))));
                getWorld().getObjects(bras_p2_1.class).get(0).setLocation(
                    (int)(getWorld().getObjects(bras_p1_1.class).get(0).getX() + (double)((Math.sin(0.3*(Math.sin((double)x2/(WalkSpeed/2)))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.45))),
                    (int)(getWorld().getObjects(bras_p1_1.class).get(0).getY() + (double)(Math.abs(Math.cos(0.3*(Math.sin((double)x2/(WalkSpeed/2)))))*(getWorld().getObjects(bras_p1_1.class).get(0).getImage().getHeight()*0.45))));
                getWorld().getObjects(Jambe_p1_1.class).get(0).setRotation((int)(Math.toDegrees(Math.sin(-x1/(WalkSpeed/2))*0.5)));
                getWorld().getObjects(Jambe_p1_2.class).get(0).setRotation((int)(Math.toDegrees(Math.sin(-x2/(WalkSpeed/2))*0.5)));
                getWorld().getObjects(Jambe_p2_1.class).get(0).setRotation((int)(-1.5*function1(test1))-10);
                getWorld().getObjects(Jambe_p2_2.class).get(0).setRotation((int)(-1.5*function1(test2))-10);
                getWorld().getObjects(bras_p1_1.class).get(0).setRotation((int)(0.3*Math.toDegrees(Math.sin((double)-x2/(WalkSpeed/2)))));
                getWorld().getObjects(bras_p2_1.class).get(0).setRotation((int)Math.toDegrees(Math.sin((double)x2/(WalkSpeed/2))*-1.05)+45);
            }
            if(Greenfoot.isKeyDown("a") && !Greenfoot.isKeyDown("d")){
                mover = 0;
                if(changer == 0){
                    test1 = 0;
                    test2 = l1;
                    x1 = 0;
                    x2 = l2/2;
                    changer = 1;
                }
                if(cellMove1 == null){
                    this.setLocation(getX()-3,getY());
                }else{
                    this.setLocation(getX(),getY());
                }
                if(test1 < l2){
                    test1++;
                    if(test1 >= l2){
                        test1 = 0;
                    }
                }
                if(test2 < l2){
                    test2++;
                    if(test2 >= l2){
                        test2 = 0;
                    }
                }
                x1++;
                if(x1 >= l2){
                    x1=0;
                }
                x2++;
                if(x2 >= l2){
                    x2=0;
                }
            }
            if(!Greenfoot.isKeyDown("a") && Greenfoot.isKeyDown("d")){
                mover = 1;
                if(changer == 0){
                    test1 = 0;
                    test2 = l1;
                    x1 = 0;
                    x2 = l2/2;
                    changer = 1;
                }
                if(cellMove == null){
                    this.setLocation(getX()+2,getY());
                }else{
                    this.setLocation(getX(),getY());
                }
                test1++;
                if(test1 >= l2){
                    test1 = 0;
                }
                test2++;
                if(test2 >= l2){
                    test2 = 0;
                }
                x1++;
                if(x1 >= l2){
                    x1=0;
                }
                x2++;
                if(x2 >= l2){
                    x2=0;
                }
                test1 = x1;
                test2 = x2;
            }
            if(!Greenfoot.isKeyDown("a") && test1 != 0 && !Greenfoot.isKeyDown("d")){
                if(test1 < max){
                    test1--;
                }
                if(test1 >= max && test1 < l1){
                    test1++;
                }
                if(test1 > l1 && test1 < min){
                    test1--;
                }
                if(test1 >= min && test1 < l2){
                    test1++;
                }
                if(test1 >= l2 || test1 == l1){
                    test1 = 0;
                }
            }
            if(!Greenfoot.isKeyDown("a") && test2 != l1 && !Greenfoot.isKeyDown("d")){
                if(test2 > l1 && test2 < min){
                    test2--;
                }
                if(test2 >= min && test2 < l2){
                    test2++;
                }
                if(test2 < l1 && test2 >= max){
                    test2++;
                }
                if(test2 < max && test2 > 0){
                    test2--;
                }
                if(test2 == 0 || test2 >= l2){
                    test2 = l1;
                }
            }
            if(!Greenfoot.isKeyDown("a") && x1 != 0 && !Greenfoot.isKeyDown("d")){
                if(x1 > 0 && x1 <= (int)l2/4){
                    x1--;
                }
                if(x1 > (int)l2/4 && x1 < (int)l2/2){
                    x1++;
                }
                if(x1 > (int)l2/2 && x1 <= (int)3*l2/4){
                    x1--;
                }
                if(x1 > (int)3*l2/4 && x1 < (int)l2){
                    x1++;
                }
                if(x1 >= l2 || x1 == (int)l2/2){
                    x1 = 0;
                }
            }
            if(!Greenfoot.isKeyDown("a") && x2 != 0 && !Greenfoot.isKeyDown("d")){
                changer = 0;
                if(x2 > 0 && x2 <= (int)l2/4){
                    x2--;
                }
                if(x2 > (int)l2/4 && x2 < (int)l2/2){
                    x2++;
                }
                if(x2 > (int)l2/2 && x2 <= (int)3*l2/4){
                    x2--;
                }
                if(x2 > (int)3*l2/4 && x2 < (int)l2){
                    x2++;
                }
                if(x2 >= l2 || x2 == (int)l2/2){
                    x2 = 0;
                }
            }
        }
    }
    private void scale(){
        GreenfootImage img = this.getImage();
        img.scale((int)(img.getWidth()/5.36666667),(int)(img.getHeight()/5.36666667));
    }
    public void scale1(){
        GreenfootImage img = this.getImage();
        img.scale((int)(img.getWidth()/8),(int)(img.getHeight()/8));
    }
    public void Mirror(){
        GreenfootImage img = this.getImage();
        img.mirrorHorizontally();
    }
    public double function1(double x){
        return (double)(Math.toDegrees(Math.sin((double)(Math.sin((double)x/WalkSpeed)+Math.sin((double)x/WalkSpeed)+((double)x/WalkSpeed)))));
    }
    public float DerFct1(float x){
        return (float)Math.toDegrees(((Math.cos(Math.sin((float)x/WalkSpeed)+Math.sin((float)x/WalkSpeed)+(float)x/WalkSpeed)*Math.sin((float)x/WalkSpeed)+Math.cos(Math.sin((float)x/WalkSpeed)+Math.sin((float)x/WalkSpeed)+(float)x/WalkSpeed)*Math.cos((float)x/WalkSpeed)*Math.sin((float)x/WalkSpeed)+Math.cos(Math.sin((float)x/WalkSpeed)+Math.sin((float)x/WalkSpeed)+x/WalkSpeed)*Math.cos((float)x/WalkSpeed)*Math.sin((float)x/WalkSpeed))/(WalkSpeed*Math.sin((float)x/WalkSpeed))));
    }
    public float racine(int x){
        return (float)(2*Math.sqrt(0.05*x)*Math.exp(0.8));
    }
}
davmac davmac

2017/12/15

#
There are possibly a lot of things you could do, though I only scanned your code quickly. One thing that stands out: the technique you use to find a single object:
getWorld().getObjects(Jambe_p2_1.class).get(0)
... is pretty inefficient; it needs to scan through all objects and filter out those except for the one of the specified type. If it's just a singleton, you could store a reference to it in a static variable instead (eg have a static variable "instance" in the Jambe_p2_1 class and set it in the constructor).
You need to login to post a reply.