Programmieren lernen mit Karel
Karel bei FredOverflow auf
GitHub
-
-
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();
}
}
}