Files
TempleOS-Rijn/SparrowOS/Apps/Vocabulary/VocabQuiz.CPP
T
2018-09-08 21:45:28 +02:00

58 lines
1.2 KiB
C++

U8 *RandVocabWord()
{
I64 i;
U8 *ptr;
if (!ws_dict_num_words)
return NULL;
i=RandU32%ws_dict_num_words;
ptr=ws_dict_word_list;
while (i-- && *ptr==WSD_WORD_CHAR)
ptr+=StrLen(ptr)+3;
if (*ptr++!=WSD_WORD_CHAR)
return NULL;
else
return ptr;
}
U0 VocabQuiz()
{
I64 i,num;
U8 ch,*right_word,*words[4];
if (!FileFind(WSD_DEF_FILENAME)) {
"Uncompressed dictionary not present.\n";
return;
}
do {
right_word=RandVocabWord;
for (i=0;i<4;i++)
words[i]=RandVocabWord;
num=RandU32&3;
words[num]=right_word;
"$$WW,1$$$$CM-LE,5$$$$FG,RED$$$$BK,1$$%s$$BK,0$$:$$FG$$$$LM,4$$\n",right_word;
for (i=0;i<4;i++)
"\n\n$$FG,GREEN$$$$BT-LE+LM-X,\"%d\",\"%d\"$$$$FG$$"
"$$LM,7$$%s\n$$LM,4$$",i+1,i+1,WSDGetDef(words[i]);
"\n\n$$FG,LTBLUE$$Answer:$$FG$$";
do {
ch=GetKey(,TRUE);
DocBottom;
if ('1'<=ch<='4') {
NewLine;
if (ch-'1'==num) {
"$$FG,LTGREEN$$Correct\n$$FG$$";
Snd(1000);
} else {
"$$FG,LTRED$$Incorrect\n$$FG$$";
Snd(200);
}
Sleep(500);
Snd(0);
WSDPopUpDef(right_word);
break;
}
} while (ch!=CH_SHIFT_ESC && ch!=CH_ESC);
"$$LM,0$$\n";
} while (ch!=CH_SHIFT_ESC && ch!=CH_ESC);
}