Let explain what I'm trying to create. I'm creating a framework, the idea is to provide base classes to generate a math problem.
Why do I need this framework? Because at first time, I realized when I create a new math problem I always do the same steps.
- Configuration settings such range numbers. For example if I'm developing multiplications, in beginner level only generate the first number between 2-5 or in advanced level, the first number will be between 6- 9, for example.
- Generate problem method. All the time I need to invoke a method like this to generate the problem. This one receives the configuration settings and generate the number according to them. And generate the object with the respective data.
- Validate the problem. Sometimes the problem generated is not valid. For example, supposed I'm creating fractions in most simplified, if I receive 2/4, the program should detect that this is not valid and must generate another like this one, 1/4.
- Load the view. All of them, have a custom view (please watch below the images).
- All of the problems must know how to CHECK if the user result is correct.
- All of this problems has answers. Some of them just require one answer, anothers may require more than one, so I guess a way to maintain flexibility to the developer has all the answers he wanna used.
- At the beginning I started using PRISM. Generate modules for each math problem was the idea and load it in the main system.
I guess are the most important things of this idea.
Let me showing some problems which I create in a WPF standalone program. Here I have a math problem about areas. When I generate the problem a set to the view the object and it draw it.
In beginner level, I set in the configuration settings that just load square types. But in advance level, can load triangles and squares randomly.
In this another, generate a binary problem like addition, subtraction, multiplication or division.
Above just generate a single problem. The idea of this is to show a test o quiz, I mean get a worksheet (this I call as a collection of problems) where the user can answer it.
I hope gets the idea with my ugly drawing.
How to load this math problems? As I said above, I started using PRISM, and each module contains a math problem kind. This is a snapshot of my first demo.
Below show the modules loaded, and center the respective configurations or levels.
Until momment, I have no idea to start creating this software. I just know that I need a question | problem class, response class, user class.
But I get lost about what properties should have to contain in it.
Please give a little hand of this framework. I put much effort on this question, so if any isn't clear, let me know to clarify it.