U8 *RandVocabWord() { I64 i; U8 *ptr; if (!acd.num_words) return NULL; i = RandU32%acd.num_words; ptr = acd.word_list; 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 = KeyGet(, TRUE); DocBottom; if ('1' <= ch <= '4') { '\n'; if (ch - '1' == num) { "$LTGREEN$Correct\n$FG$"; Sound(74); } else { "$LTRED$Incorrect\n$FG$"; Sound(46); } Sleep(500); Sound; ACDPopUpDef(right_word); break; } } while (ch != CH_SHIFT_ESC && ch != CH_ESC); "$LM,0$\n"; } while (ch != CH_SHIFT_ESC && ch != CH_ESC); }