Dies ist eine alte Version des Dokuments!
Programmieren lernen mit Karel
- Karel bei FredOverflow auf GitHub
- Karel Playlist von Fred Überlauf
- Karel Lösungen Christian Ottenhaus
Python Karel from Standford University
- Karel the Robot learns python - Stanford University
- standford Karel@ gitthub
Sequenzen
void karelsFirstProgram() { moveForward(); pickBeeper(); moveForward(); turnLeft(); moveForward(); turnRight(); moveForward(); dropBeeper(); moveForward(); }
Schleifen
void defuseOneBomb() { moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); turnAround(); pickBeeper(); turnAround(); moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); moveForward(); turnAround(); }
void defuseOneBomb() { repeat(9){ moveForward() } pickBeeper(); turnAround(); repeat(9){ moveForward() } turnAround(); }
1.1.3 defuseTwoBombs
void defuseTwoBombs(){ defuseOneBomb(); turnLeft(); defuseOneBomb(); } void defuseOneBomb() { goOneWay(); pickBeeper(); goOneWay(); } void goOneWay(){ repeat(9){ moveForward(); } turnAround(); }
Funktionen
void defuseOneBomb() { goOneWay() pickBeeper(); goOneWay() } void goOneWay(){ repeat(9){ moveForward() } turnAround(); }
void defuseTwoBombs(){ defuseOneBomb(); turnLeft(); defuseOneBomb(); } void defuseOneBomb() { goOneWay(); pickBeeper(); goOneWay(); } void goOneWay(){ repeat(9){ moveForward(); } turnAround(); }
Bedingungen / Verzweigungen
if (onBeeper()){ pickBeeper(); }
if (onBeeper()){ pickBeeper(); } else{ dropBeeper(); }
Bedingungen
Bedingung | Anmerkung |
---|---|
onBeeper() | Karel checks whether a beeper is on the square he currently stands on. |
beeperAhead() | Karel checks whether a beeper is on the square immediately in front of him. |
leftIsCleear() | Karel checks whether no wall is between him and the square to his left. |
frontIsClear() | Karel checks whether no wall is between him and the square in front of him. |
rightIsClear() | Karel checks whether no wall is between him and the square to his right. |
Generalisieren
void repairHole(){ turnRight(); moveForward(); dropBeeper(); turnAround(); moveForward(); turnRight(); moveForward(); } void repairTheStreet(){ while(frontIsClear()){ if(rightIsClear()){ repairHole(); } else{ moveForward(); } } }