/
BasicNoteGenerator.cpp
65 lines (52 loc) · 1.23 KB
/
BasicNoteGenerator.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "BasicNoteGenerator.h"
#include <assert.h>
#include <time.h>
#include <Note.h>
BasicNoteGenerator::BasicNoteGenerator()
{
mMinNote = 60;
mMaxNote = 60;
mNoteToFind = -1;
mNoteHasBeenAnswered = true;
mChooseOnlyPlainNotes = true;
srand((unsigned int)time(NULL));
}
BasicNoteGenerator::BasicNoteGenerator(int minNote, int maxNote)
{
setRange(minNote, maxNote);
}
void BasicNoteGenerator::setRange(Note minNote, Note maxNote)
{
mMinNote = minNote;
mMaxNote = maxNote;
}
Note BasicNoteGenerator::drawNewNote()
{
assert( mNoteHasBeenAnswered );
mNoteHasBeenAnswered = false;
int range = mMaxNote.getNumber() - mMinNote.getNumber() + 1; // +1 to include max note number
int resultNoteNumber = -1;
while (resultNoteNumber == -1)
{
resultNoteNumber = (rand() % range) + mMinNote.getNumber();
if (mChooseOnlyPlainNotes)
if (Note::isSharpOrFlat(resultNoteNumber))
resultNoteNumber = -1;
}
mNoteToFind = Note(resultNoteNumber);
return mNoteToFind;
}
bool BasicNoteGenerator::evaluateAnswer(Note noteAnswered, int timeInMs, std::string& evalMessage)
{
mNoteHasBeenAnswered = true;
if (mNoteToFind == noteAnswered)
{
evalMessage = "OK!";
return false;
}
else
{
evalMessage = "WRONG!";
return false;
}
}