在Karel Midpoint练习中使用Getters和Setter(Java)

时间:2016-01-15 00:07:26

标签: java setter getter getter-setter karel

我已编写此代码以使用比课程更多的Java元素。但我无法让它在所有4个方向上工作。 getter和setter嵌入到使Karel移动的方法中。如果我能得到任何帮助,使这个鳕鱼工作会很棒。

import stanford.karel.*;

public class MidpointFindingKarel extends SuperKarel {


public void run(){
    while(facingEast()){
        moveEast();
    }
    while(facingNorth()){
        moveNorth();
    }
    while(facingWest()){
        moveWest(moveEast());
    }       
    while(facingSouth()){
        moveSouth(moveNorth());
    }
}

    private int moveEast(){
        int width = 0;
        while(frontIsClear()){
            width++;
            move();
        }
        turnLeft();
        width /= 2;
        return width;
    }

    private int moveNorth(){
        int height = 0;
        while(frontIsClear()){
            height++;
            move();
        }
        turnLeft();
        height /= 2;
        return height;
    }

    private void moveWest(int _width){
        for(int _w = 0; _w < _width; _w++){
            move();
        }
        turnLeft();
    }

    private void moveSouth(int _height){
        for(int _h = 0; _h < _height; _h++){
            move();
        }
        turnLeft();
    }

}

1 个答案:

答案 0 :(得分:0)

请指出您的代码应该做什么? 如果你想做的只是在每个墙壁的中点放一个蜂鸣器,我只会做一个单独的方法来做到这一点。 如果我的解决方案没有回答您的问题,请提前抱歉!

import stanford.karel.*;

public class MidpointFindingKarel extends SuperKarel {
public void run(){
    while(facingEast()){
        moveEast();
    }
    while(facingNorth()){
        moveNorth();
    }
    while(facingWest()){
         moveEast(); // I did not understand what "moveWest(moveEast());" was for. 
    }       
    while(facingSouth()){
        moveNorth();// I did not understand what "moveSouth(moveNorth())" was for. 
    }
}

    private void moveEast(){
        int width = 0;
        while(frontIsClear()){
            width++;
            move();
        }
        goBackPutBeeperReturn(width); // goes back half of the "width", puts beeper, returns.
        turnLeft();
       // width /= 2; 
        // return width; 
    }

    private void moveNorth(){
        int height = 0;
        while(frontIsClear()){
            height++;
            move();
        }
        goBackPutBeeperReturn(height);
        turnLeft();
       // height /= 2;
       // return height;
    }


  //Pre-condition: Karel has finished going along a wall and has its length stored somewhere. 
  //Post-condition: Karel has put a beeper in the midpoint and is back to the end of that wall
    private void goBackPutBeeperReturn(int wallLength){
           turnAround();
           for(int loop = 0 ; loop < wallLength/2 ; loop++){
            move();   
           }
           putBeeper();
           turnAround();
           for(int loop = 0 ; loop < wallLength/2 ; loop++){
                move();
       }}}

       /*
   private void moveWest(int _width){
        for(int _w = 0; _w < _width; _w++){
            move();
        }
        turnLeft();
    }

    private void moveSouth(int _height){
        for(int _h = 0; _h < _height; _h++){
            move();
        }
        turnLeft();

    }


}*/