LÖSUNG AUFGABE 5.01: Counting Stars
class MyPlayer extends Player {
start() {
drawRectangle(21, 4);
}
/// Zeichnet ein Rechteck mit [width] als Breite und [height] als Höhe.
drawRectangle(int width, int height) {
int i = 0;
while (i < height) {
putStars(width);
turnAround();
multiMove(width);
// Zur nächsten Zeile gehen.
turnRight();
move();
turnRight();
i = i + 1;
}
}
/// Legt eine Spur von [count] Sternen.
putStars(int count) {
int i = 0;
while (i < count) {
putStar();
move();
i = i + 1;
}
}
/// Macht die Anzahl [steps] in die aktuelle Richtung.
multiMove(int steps) {
int i = 0;
while (i < steps) {
move();
i = i + 1;
}
}
/// Dreht um 180 Grad um.
turnAround() {
turnLeft();
turnLeft();
}
}
LÖSUNG AUFGABE 5.02: Candles on Cake
class MyPlayer extends Player {
start() {
drawRectangle(21, 4);
drawCandles(10);
}
/// Zeichnet Kerzen.
drawCandles(int count) {
int i = 0;
while (i < count) {
move();
turnLeft();
putStars(3);
turnAround();
multiMove(3);
turnLeft();
move();
i = i + 1;
}
}
/// Zeichnet ein Rechteck mit [width] als Breite und [height] als Höhe.
drawRectangle(int width, int height) {
int i = 0;
while (i < height) {
putStars(width);
turnAround();
multiMove(width);
// Zur nächsten Zeile gehen.
turnRight();
move();
turnRight();
i = i + 1;
}
}
/// Legt eine Spur von [count] Sternen.
putStars(int count) {
int i = 0;
while (i < count) {
putStar();
move();
i = i + 1;
}
}
/// Macht die Anzahl [steps] in die aktuelle Richtung.
multiMove(int steps) {
int i = 0;
while (i < steps) {
move();
i = i + 1;
}
}
/// Dreht um 180 Grad um.
turnAround() {
turnLeft();
turnLeft();
}
}
LÖSUNG AUFGABE 5.03: Candles for Age
class MyPlayer extends Player {
/// Your program.
start() {
drawRectangle(21, 4);
int candles = (howOldIsGrandma() / 10).toInt();
drawCandles(candles);
}
/// Gibt an, wie alt die Grossmutter ist.
int howOldIsGrandma() {
return 80;
}
/// Zeichnet Kerzen.
drawCandles(int count) {
int i = 0;
while (i < count) {
move();
turnLeft();
putStars(3);
turnAround();
multiMove(3);
turnLeft();
move();
i = i + 1;
}
}
/// Zeichnet ein Rechteck mit [width] als Breite und [height] als Höhe.
drawRectangle(int width, int height) {
int i = 0;
while (i < height) {
putStars(width);
turnAround();
multiMove(width);
// Zur nächsten Zeile gehen.
turnRight();
move();
turnRight();
i = i + 1;
}
}
/// Legt eine Spur von [count] Sternen.
putStars(int count) {
int i = 0;
while (i < count) {
putStar();
move();
i = i + 1;
}
}
/// Macht die Anzahl [steps] in die aktuelle Richtung.
multiMove(int steps) {
int i = 0;
while (i < steps) {
move();
i = i + 1;
}
}
/// Dreht um 180 Grad um.
turnAround() {
turnLeft();
turnLeft();
}
}
LÖSUNG AUFGABE 5.04: Layered Cake
class MyPlayer extends Player {
/// Your program.
start() {
int layers = (howOldIsGrandma() / 10 - 5).toInt();
drawLayers(layers);
}
/// Gibt an, wie alt die Grossmutter ist.
int howOldIsGrandma() {
return 80;
}
/// Zeichnet Schichten.
drawLayers(int count) {
int currentWidth = 21;
for (int i = 0; i < count; i++) {
drawRectangle(currentWidth, 2);
move();
move();
currentWidth = currentWidth - 4;
}
}
/// Zeichnet ein Rechteck mit [width] als Breite und [height] als Höhe.
drawRectangle(int width, int height) {
int i = 0;
while (i < height) {
putStars(width);
turnAround();
multiMove(width);
// Zur nächsten Zeile gehen.
turnRight();
move();
turnRight();
i = i + 1;
}
}
/// Legt eine Spur von [count] Sternen.
putStars(int count) {
int i = 0;
while (i < count) {
putStar();
move();
i = i + 1;
}
}
/// Macht die Anzahl [steps] in die aktuelle Richtung.
multiMove(int steps) {
int i = 0;
while (i < steps) {
move();
i = i + 1;
}
}
/// Dreht um 180 Grad um.
turnAround() {
turnLeft();
turnLeft();
}
}