Added multiple problems per screen. Added highlighted drawing code for selected problem.
This commit is contained in:
parent
39fa40eaad
commit
5ab9e9c5f3
14
Problem.cpp
14
Problem.cpp
@ -1,6 +1,7 @@
|
||||
#include "Problem.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <locale.h>
|
||||
|
||||
bool Problem::seeded = false;
|
||||
|
||||
@ -13,6 +14,7 @@ Problem::Problem(PROBLEM_TYPE type, unsigned short max_digits, unsigned win_x, u
|
||||
{
|
||||
// srand(time());
|
||||
srand(0);
|
||||
setlocale(LC_NUMERIC, ""); // apostrophe to enable thousands separator in printf statements.
|
||||
seeded = true;
|
||||
}
|
||||
|
||||
@ -34,23 +36,25 @@ void Problem::Draw(bool selected)
|
||||
|
||||
// Draw the window:
|
||||
if(selected)
|
||||
box(win, 0, 0);
|
||||
box(win, '?', '?');
|
||||
else
|
||||
box(win, 0, 0); // 0, 0 gives default characters for the vertical and horizontal lines
|
||||
|
||||
mvwprintw(win, 1, 2, "%5d", number_top);
|
||||
mvwprintw(win, 2, 2, "%5d", number_bottom);
|
||||
mvwprintw(win, 2, 4, "%'6d", number_top);
|
||||
mvwprintw(win, 3, 4, "%'6d", number_bottom);
|
||||
switch(problem_type)
|
||||
{
|
||||
case EASY_ADDITION:
|
||||
case HARD_ADDITION:
|
||||
mvwprintw(win, 2, 1, "+");
|
||||
mvwprintw(win, 3, 2, "+");
|
||||
break;
|
||||
case EASY_SUBTRACTION:
|
||||
case HARD_SUBTRACTION:
|
||||
mvwprintw(win, 2, 1, "-");
|
||||
mvwprintw(win, 3, 2, "-");
|
||||
break;
|
||||
};
|
||||
mvwprintw(win, 4, 2, "========");
|
||||
mvwprintw(win, 5, 9, "");
|
||||
wrefresh(win);
|
||||
}
|
||||
|
||||
|
31
main.cpp
31
main.cpp
@ -8,6 +8,8 @@
|
||||
|
||||
#include "Problem.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
#define PROMPT " > "
|
||||
|
||||
char MainMenu()
|
||||
@ -53,29 +55,42 @@ int main(int argc, char *argv[])
|
||||
else
|
||||
continue; // restart loop
|
||||
|
||||
clear();
|
||||
wrefresh(stdscr);
|
||||
|
||||
std::vector<Problem*> problems;
|
||||
for(auto y = 1; y < LINES - 10; y += 9)
|
||||
{
|
||||
for(auto x = 2; x < COLS - 16; x += 15)
|
||||
{
|
||||
Problem *test = nullptr;
|
||||
if(addition != subtraction)
|
||||
{
|
||||
if(addition)
|
||||
test = new Problem(EASY_ADDITION, 3, 3, 12);
|
||||
test = new Problem(EASY_ADDITION, 3, x, y);
|
||||
if(subtraction)
|
||||
test = new Problem(EASY_SUBTRACTION, 3, 3, 12);
|
||||
test = new Problem(EASY_SUBTRACTION, 3, x, y);
|
||||
}
|
||||
if(addition && subtraction)
|
||||
{
|
||||
if(rand() % 2)
|
||||
test = new Problem(HARD_ADDITION, 5, 3, 12);
|
||||
test = new Problem(HARD_ADDITION, 5, x, y);
|
||||
else
|
||||
test = new Problem(HARD_SUBTRACTION, 5, 3, 12);
|
||||
test = new Problem(HARD_SUBTRACTION, 5, x, y);
|
||||
}
|
||||
problems.push_back(test);
|
||||
}
|
||||
}
|
||||
|
||||
if(test)
|
||||
test->Draw(true);
|
||||
for(auto *problem : problems)
|
||||
if(problem)
|
||||
problem->Draw(false);
|
||||
|
||||
getch();
|
||||
|
||||
if(test)
|
||||
delete test;
|
||||
for(auto *problem : problems)
|
||||
if(problem)
|
||||
delete problem;
|
||||
}
|
||||
|
||||
endwin();
|
||||
|
Loading…
Reference in New Issue
Block a user