U8 *RandVocabWord() { I64 i; U8 *ptr; if (!acd.num_words) return NULL; i=RandU32%acd.num_words; ptr=acd.word_lst; while (i-- && *ptr==ACD_WORD_CHAR) ptr+=StrLen(ptr)+3; if (*ptr++!=ACD_WORD_CHAR) return NULL; else return ptr; } U0 VocabQuiz() { I64 ch,i,num; U8 *right_word,*words[4]; if (!FileFind(ACD_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$$RED$$BK,1$%s$BK,0$:$FG$$LM,4$\n" ,right_word; for (i=0; i<4; i++) "\n\n$GREEN$$BT-X,\"%d\",LM=\"%d\"$$FG$" "$LM,7$%s\n$LM,4$",i+1,i+1,ACDDefGet(words[i]); "\n\n$LTBLUE$Answer:$FG$"; do { ch=GetKey(,TRUE); DocBottom; if ('1'<=ch<='4') { '\n'; if (ch-'1'==num) { "$LTGREEN$Correct\n$FG$"; Snd(74); } else { "$LTRED$Incorrect\n$FG$"; Snd(46); } Sleep(500); Snd; ACDPopUpDef(right_word); break; } } while (ch!=CH_SHIFT_ESC && ch!=CH_ESC); "$LM,0$\n"; } while (ch!=CH_SHIFT_ESC && ch!=CH_ESC); }