Kód: Vybrať všetko
zadanie.c:4:7: error: redeclaration of enumerator ‘WEST’
karel.h:35:2: note: previous definition of ‘WEST’ was here
zadanie.c:4:13: error: redeclaration of enumerator ‘EAST’
karel.h:33:2: note: previous definition of ‘EAST’ was here
zadanie.c:4:19: error: redeclaration of enumerator ‘NORTH’
karel.h:34:2: note: previous definition of ‘NORTH’ was here
zadanie.c:4:26: error: redeclaration of enumerator ‘SOUTH’
karel.h:36:2: note: previous definition of ‘SOUTH’ was here
Kód: Vybrať všetko
#include "karel.h"
#define SPEED 50
enum {WEST, EAST, NORTH, SOUTH};
void checkARow(int heading);
void turnRight();
void turnAround();
void runAStreet();
void setTo(int direction);
void setToNorth();
void setToEast();
void setToWest();
void setToSouth();
int main() {
turnOn("karel.kw");
setStepDelay(SPEED);
setToEast();
checkARow(EAST);
setToWest();
checkARow(WEST);
setToSouth();
checkARow(SOUTH);
setToNorth();
checkARow(NORTH);
turnOff();
return 0;
}
void setToNorth() {
setStepDelay(0);
while (notFacingNorth())
turnLeft();
setStepDelay(SPEED);
}
void setToEast() {
setStepDelay(0);
while (notFacingEast())
turnLeft();
setStepDelay(SPEED);
}
void setToWest() {
setStepDelay(0);
while (notFacingWest())
turnLeft();
setStepDelay(SPEED);
}
void setToSouth() {
setStepDelay(0);
while (notFacingSouth())
turnLeft();
setStepDelay(SPEED);
}
void setTo(int direction) {
switch(direction) {
case (WEST):
setToWest();
break;
case (NORTH):
setToNorth();
break;
case (SOUTH):
setToSouth();
break;
case (EAST):
setToEast();
break;
}
}
void turnRight() {
setStepDelay(0);
turnLeft();
turnLeft();
setStepDelay(SPEED);
turnLeft();
}
void turnAround() {
setStepDelay(0);
turnLeft();
turnLeft();
setStepDelay(SPEED);
}
void runAStreet() {
int step = 0;
while (frontIsClear()) {
movek();
if (beepersPresent())
break;
step++;
}
if (beepersPresent()) {
turnAround();
for (int i = 0; i <= step; i++) {
movek();
putBeeper();
}
}
else {
turnAround();
for (int i = 0; i < step; i++)
movek();
}
}
void checkARow(int heading) {
int step = 0;
while (1) {
if (leftIsClear()) {
turnLeft();
runAStreet();
}
setTo(heading);
if (rightIsClear()) {
turnRight();
runAStreet();
}
setTo(heading);
if (beepersPresent()) {
turnAround();
for (int i = 0; i < step; i++) {
movek();
putBeeper();
}
break;
}
else {
if (frontIsClear()) {
movek();
step++;
}
else {
turnAround();
for (int i = 0; i < step; i++)
movek();
break;
}
}
}
}