#ifndef DVEREB_PROBLEM_H #define DVEREB_PROBLEM_H #include #include enum PROBLEM_TYPE { // NOTE(dev): EASY means each digit can be handled without carryover. // e.g. 33 + 46 is easy because 6+3 < 10 and 3+4 is < 10. // HARD means you might have to carry over. // e.g. 33 + 97 is hard because 7 + 3 = 10, carry the 1, 9 + 3 + 1 = 13, 130. EASY_ADDITION = 1, EASY_SUBTRACTION, HARD_ADDITION, HARD_SUBTRACTION, }; class Problem { public: Problem(PROBLEM_TYPE type, unsigned short max_digits, unsigned win_x, unsigned win_y); ~Problem(); void Draw(bool selected); private: Problem() = delete; static bool seeded; PROBLEM_TYPE problem_type; WINDOW *win = nullptr; unsigned window_x, window_y; int number_top; int number_bottom; // Helper Functions: void GenerateNumbers(PROBLEM_TYPE type, unsigned short max_digits); void GenerateWindow(unsigned win_x, unsigned win_y); }; #endif