Robot Karel zije ve meste. Jeho mesto se sklada z mnoha policek usporadanych do tvaru obdelniku a je ohraniceno pevnou zdi.
Sam Karel toho moc neumi: ma predstavu, kde ve svem meste je, umi udelat krok dopredu, umi se otocit doleva a pozna zed pred sebou.
ICity
.
Coordinates
, ktera bude mit dve vlastnosti X
a Y
typu int
. Robot
, ktera implementuje rozhrani IRobot
.
void WallFound()
ve tride Robot
jako abstraktni a s modifikátorem viditelnosti protected
.Step()
se pokusi posunout robota ve smeru do ktereho je aktualne natocen. Sever je ve smeru kladne poloosy Y. Jestlize by robot narazil do zdi (tj. jeho pozice se dostala mimo rozmery mesta), zavola metodu WallFound()
jinak se posune na nove policko.ToString()
ve vsech vytvorenych tridach, tak aby vracela smysluplny rezetec, u robota pak zvlaste jeho pozici a smer.WallFound()
. Chytry robot se pri narazu do zdi otoci doleva, aby mohl pokracovat v ceste. Hloupy robot pouze vypise do konzole hlaseni o zdi pred nim.Pokud se pokusite pri implementaci tridy Robot napsat nasledujici kod, nebude vam fungovat, resp. kompilator zahlasi chybu:
public Coordinates Position { get; private set; } ... Position.X = Position.X - 1;
Muzete to vyresit pouzitim datove polozky misto vlastnosti:
private Coordinates position; public Coordinates Position { get { return position; } } ... position.X = position.X - 1;