1

これは私が取り組んでいるグリーンフット プロジェクトです。オブジェクトがエッジに近づくと跳ね返るようになっています

これが機能しない理由を誰かが理解してくれることを望んでいました。

    import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

    public class Asteroid extends Actor
    {
        /**
         * Act - do whatever the Asteroid wants to do. This method is called whenever
         * the 'Act' or 'Run' button gets pressed in the environment.
         */
        boolean  direction=true; //assigns the fall direction (true is down false is up)
        int acceleration =0; 
        public void act() 
        {
            if(getY()>(getWorld().getHeight())-50 && direction== true  ) 
            //checks if it is near the bottom of the world  (Y is reversed so at the top of the world Y is high)     
            {
                direction= false;
                acceleration = 0; //Resets speed
            }
            if(getY()<50  && direction== false)
            {
                direction= true;
                acceleration = 0;
            }
            if(direction=true)
            {
                setLocation(getX(), getY()+(int)(Greenfoot.getRandomNumber(25)+acceleration));
            }
            else if(direction=false)
            {
                setLocation(getX(), getY()-(int)(Greenfoot.getRandomNumber(25)+acceleration));
            }
            acceleration++;
        }    
    }
4

2 に答える 2

0

このコードが問題です:

 if(direction=true)

これにより、 true が方向に割り当てられます。等しいかどうかを確認するには、そこに double-equals が必要です。

 if (direction == true)

Javaがこれを許可しているのは面倒です。if の else 句についても同じ問題があります。

于 2014-11-25T21:44:45.537 に答える