Professional Documents
Culture Documents
Text
Text
#include <limits>
#include <array>
enum class Smjer {Nalijevo, Nadesno};
enum class Pravci {Sjever, Sjeveroistok, Istok, Jugoistok, Jug, Jugozapad, Zapad,
Sjeverozapad};
enum class KodoviGresaka {PogresnaKomanda, NedostajeParametar, SuvisanParametar,
NeispravanParametar};
enum class Komande {Aktiviraj, Deaktiviraj, Nalijevo, Nadesno, Idi, Kraj};
bool Robot(true);
const std::array<char[13],8>
smer={"sjever","sjeveroistok","istok","jugoistok","jug","jugozapad","zapad","sjever
ozapad"};
void AktivirajRobota() {
Robot=true;
}
void DeaktivirajRobota() {
Robot=false;
}
void Rotiraj (Pravci &pravac, Smjer smjer) {
pravac=Pravci((int(pravac)+int(smjer)+8)%8);
if (!int(smjer)) pravac=Pravci((int(pravac)+7)%8);
}
void Idi(int &x, int &y, Pravci orijentacija, int korak) {
if (int(orijentacija)<4 && int(orijentacija)) x+=korak;
else if (!(int(orijentacija)%4==0)) x-=korak;
if (int(orijentacija)>2 && int(orijentacija)<6) y-=korak;
else if(int(orijentacija)!=6 && int(orijentacija)!=2) y+=korak;
}
int main () {
Pravci orijentacija(Pravci::Sjever);
int x(0),y(0);
Komande komanda=Komande::Idi;
KodoviGresaka kod_greske=KodoviGresaka::NedostajeParametar;
IspisiPoziciju(x, y,orijentacija);
for (int parametar=0;1;) {
std::cout<<"Unesi komandu: "<<std::endl;
bool t = UnosKomande(komanda, parametar, kod_greske);
/*std::cin.ignore(100,'\n');
std::cin.clear();*/
if (!t) {PrijaviGresku(kod_greske);continue;}
IzvrsiKomandu(komanda, parametar, x, y, orijentacija);
IspisiPoziciju(x, y,orijentacija);
}
return 0;
}/*KOD NE RADI SA NEG BROJEVIMA */
/*PRESKACE PONEKAD U UNOSU*/
/* DODA 67 AKO JE BROJ NEGATIVAN*/
/* VELIKE BROJEVI = VELIKE PROBLEME*/
/* NE RADI AKO NAPISES + ISPRED BROJA*/
/*NE ZNA KAD DA PRESTANE*/
/*MOZE DA SUVISE PARAMETARA PRODJU*/