#include #include #include #include #include #include using namespace std; class Hare { private: int position; public: Hare(int =1); ~Hare(); int getPosition(); void move(); void print(); }; class Tort { private: int position; public: Tort(int =1); ~Tort(); int getPosition(); void move(); void print(); }; Hare::Hare(int pos) : position{pos} { } Hare::~Hare(){}; int Hare::getPosition() { return position; } void Hare::move() { int random=rand()%100; if(random<20) { } else if(random <40) position +=9; else if(random <50) position -=12; else if(random <80) ++position; else if(random <100) position -=2; else cout << "Something went wrong" << endl; if(position<1) // should never go below 1. position=1; } void Hare::print() { cout << "H: " << setw(position) << setfill(' ') << "H" << endl; } Tort::Tort(int pos) :position{pos} { } Tort::~Tort(){}; int Tort::getPosition() { return position; } void Tort::move() { int random=rand()%100; if(random<50) position +=3; else if(random <70) position -=6; else if(random <100) ++position; else cout << "Something went wrong" << endl; if(position<1) // should never go below 1. position=1; } void Tort::print() { cout << "T: " << setw(position) << setfill(' ') << "T" << endl; } int main() { Hare hare1; Hare hare2; Hare hare3; Tort tort1; Tort tort2; srand(time(0)); bool stop{false}; while(!stop) { hare1.move(); hare1.print(); if(hare1.getPosition() > 70) { stop=true; cout << "Hare 1 wins!\n"; break; } hare2.move(); hare2.print(); if(hare2.getPosition() > 70) { stop=true; cout << "Hare 1 wins!\n"; break; } hare3.move(); hare3.print(); if(hare3.getPosition() > 70) { stop=true; cout << "Hare 1 wins!\n"; break; } tort1.move(); tort1.print(); if(tort1.getPosition() > 70) { stop=true; cout << "Hare 1 wins!\n"; break; } tort2.move(); tort2.print(); if(tort2.getPosition() > 70) { stop=true; cout << "Hare 1 wins!\n"; break; } } }