Chapter 5: Methods

Solutions

SOLUTION TASK 5.01: Baking a Cake

public class MyKaraIO extends KaraIO {
    
    public void act() {
        drawRectangle(21, 4);
        
        stop();
    }

    public void drawRectangle(int width, int height) {
        int i = 0;
        while (i < height) {
            putLeafs(width);
            turnAround();
            multiMove(width);

            // Go to next line.
            turnRight();
            move();
            turnRight();

            i = i + 1;
        }
    }

    public void putLeafs(int count) {
        int i = 0;
        while (i < count) {
            putLeaf();
            move();
            i = i + 1;
        }
    }

    public void multiMove(int steps) {
        int i = 0;
        while (i < steps) {
            move();
            i = i + 1;
        }
    }

    public void turnAround() {
        turnLeft();
        turnLeft();
    }
}

SOLUTION TASK 5.02: Candles on Cake

public class MyKaraIO extends KaraIO {
    
    public void act() {
        drawRectangle(21, 4);
        drawCandles(10);
        
        stop();
    }

    public void drawCandles(int count) {
        int i = 0;
        while (i < count) {
            move();
            turnLeft();
            putLeafs(3);
            turnAround();
            multiMove(3);
            turnLeft();
            move();
            i = i + 1;
        }
    }

    public void drawRectangle(int width, int height) {
        // ...
    }

    public void putLeafs(int count) {
        // ...
    }

    public void multiMove(int steps) {
        // ...
    }

    public void turnAround() {
        // ...
    }
}

SOLUTION TASK 5.03: Candles for Age

public class MyKaraIO extends KaraIO {

    public void act() {
        drawRectangle(21, 4);

        int age = intInput("How old is your grandmother?");
        drawCandles(age / 10);
        
        stop();
    }

    public void drawCandles(int count) {
        // ...
    }

    public void drawRectangle(int width, int height) {
        // ...
    }

    public void putLeafs(int count) {
        // ...
    }

    public void multiMove(int steps) {
        // ...
    }

    public void turnAround() {
        // ...
    }
}

SOLUTION TASK 5.04: Layered Cake

public class MyKaraIO extends KaraIO {

    public void act() {
        int age = intInput("How old is your grandmother?");
        drawLayers(age / 10 - 5);
        
        stop();
    }

    public void drawLayers(int layers) {
        int currentWidth = 21;

        int i = 0;
        while (i < layers) {
            drawRectangle(currentWidth, 2);
            move();
            move();

            currentWidth = currentWidth - 4;
            i = i + 1;
        }
    }

    public void drawRectangle(int width, int height) {
        // ...
    }

    public void putLeafs(int count) {
        // ...
    }

    public void multiMove(int steps) {
        // ...
    }

    public void turnAround() {
        // ...
    }
}

Comments