I1 *RandVocabWord() { I8 i; I1 *ptr; if (!ws_dict_num_words) return NULL; i=RandU4%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; } void VocabQuiz() { I8 i,num; I1 ch,*right_word,*words[4]; do { right_word=RandVocabWord; for (i=0;i<4;i++) words[i]=RandVocabWord; num=RandU4%4; words[num]=right_word; PrintF("$$WW,1$$$$CM-LE,5$$$$FG,RED$$$$BK,1$$%s$$BK,0$$:$$FG$$$$LM,4$$\r\n",right_word); for (i=0;i<4;i++) PrintF("\r\n\r\n$$FG,GREEN$$$$BT-LE+LM-X,\"%d\",\"%d\"$$$$FG$$" "$$LM,7$$%s\r\n$$LM,4$$",i+1,i+1,WsdGetDef(words[i])); PutS("\r\n\r\n$$FG,LTBLUE$$Answer:$$FG$$"); do { ch=GetKey(NULL,TRUE); LtfBottom(Fs->cur_ltf); if (ch>='1' && ch<='4') { CrLf; if (ch-'1'==num) { PutS("$$FG,LTGREEN$$Correct\r\n$$FG$$"); Sound(1000); } else { PutS("$$FG,LTRED$$Incorrect\r\n$$FG$$"); Sound(200); } Sleep(500); Sound(0); WsdPopUpDef(right_word); break; } } while (ch!=CH_CTRLQ && ch!=CH_ESC); PrintF("$$LM,0$$\r\n"); } while (ch!=CH_CTRLQ && ch!=CH_ESC); }