#include "cqlearntest.h"
#include "cqtools.h"
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <string.h>
#include <stdarg.h>
Funkce | |
void | print (const char *format,...) |
void | showQuestion (TItem *item, char choice) |
void | showExplanation (TItem *item) |
static void | swapItems (TItem *a, TItem *b) |
static unsigned int | getRandom (unsigned int max) |
void | shuffle (TItem *items[], unsigned int length) |
void | copyAndShuffle (TItem *items[], const TTestData *data) |
static int | waitForKey (char *msg) |
void | printResult (char *title, int right, int answered, int total) |
void | showRemain (unsigned int remain) |
void | myErase () |
void | runTest (const TTestData *data) |
void | runLearning (const TTestData *data) |
Proměnné | |
const char | CHOICE_ALL = '\0' |
Zkopíruje ukazatele na prvky seznamu do pole a pak jej náhodnì zamíchá. Pole items musí mít alokováno minimálnì data->total polo¾ek.
Odkazuje se na testdata::first, item::next, shuffle() a testdata::total.
PoužÃvá se v runLearning() a runTest().
static unsigned int getRandom | ( | unsigned int | max | ) | [inline, static] |
Vrátí náhodné èíslo od 0 do max-1.
PoužÃvá se v shuffle().
void myErase | ( | ) |
Vyma¾e obrazovku.
PoužÃvá se v runLearning() a runTest().
void print | ( | const char * | format, | |
... | ||||
) |
Tato funkce slou¾í jako obal pro funkce printf a printw. Pokud je definováno makro YESCURSES, pou¾ije se funkce printw, jinak printf.
PoužÃvá se v runTest(), showExplanation(), showQuestion(), showRemain() a waitForKey().
void printResult | ( | char * | title, | |
int | right, | |||
int | answered, | |||
int | total | |||
) |
Vypí¹e na obrazovku výsledky. Vypisuje na stdout, ne na curses obrazovku.
title | Název testu. | |
right | Poèet správnì zodpovìzených otázek. | |
answered | Poèet zodpovìzených otázek. | |
total | Celkový poèet otázek. |
PoužÃvá se v runTest().
void runLearning | ( | const TTestData * | data | ) |
Spustí program v módu uèení. V tomto módu se nepoèítá ani èas, ani skóre. Program neèeká na odpovìdi od u¾ivatele, ale sám je rovnou zobrazí spolu s vysvìtlením.
data | Datová struktura obsahující celý test. |
Odkazuje se na copyAndShuffle(), myErase(), showExplanation(), showQuestion(), showRemain(), testdata::title, testdata::total a waitForKey().
PoužÃvá se v main().
void runTest | ( | const TTestData * | data | ) |
Inicializuje knihovnu ncurses. Spustí program v testovacím módu.
Na zaèátku v¹echny testové otázky náhodnì zamíchá. Poté postupnì zobrazuje otázky a èeká na odpovìdi. Po ka¾dé otázce zobrazí text objasòující správnou odpovìï. Poèítá poèet správných a ¹patných odpovìdí a na konci zobrazí výsledek.
Èas se poèítá pouze pøi èekání na odpovìï. Program mù¾e èekat na zobrazení dal¹í otázky libovolnì dlouho, ani¾ by se tento èas poèítal do celkového èasu vyhrazeného pro test hodnotou data->totalTime.
Nemìní datovou strukturu data.
data | Datová struktura obsahující celý test. |
Odkazuje se na CHOICE_ALL, copyAndShuffle(), myErase(), print(), printResult(), showExplanation(), showQuestion(), showRemain(), testdata::title, testdata::total, testdata::totalTime a waitForKey().
PoužÃvá se v main().
void showExplanation | ( | TItem * | item | ) |
Vypí¹e na curses obrazovku vysvìtlení ke správné odpovìdi.
Odkazuje se na item::explLines a print().
PoužÃvá se v runLearning() a runTest().
void showQuestion | ( | TItem * | item, | |
char | choice | |||
) |
Zobrazí otázku a nabídne správné odpovìdi.
item | Ukazatel na polo¾ku seznamu otázek. | |
choice | Udává odpovìï, kterou má zobrazit. Pokud má hodnotu CHOICE_ALL, zobrazí v¹echny odpovìdi. |
Odkazuje se na item::answLines, CHOICE_ALL, print() a item::questLines.
PoužÃvá se v runLearning() a runTest().
void showRemain | ( | unsigned int | remain | ) |
Vytiskne, kolik je¹tì zbývá otázek, podle èeské gramatiky.
Odkazuje se na print().
PoužÃvá se v runLearning() a runTest().
void shuffle | ( | TItem * | items[], | |
unsigned int | length | |||
) |
Náhodnì zamíchá pole ukazatelù na polo¾ky testu.
Odkazuje se na getRandom() a swapItems().
PoužÃvá se v copyAndShuffle().
Pøehodí hodnoty dvou ukazatelù.
PoužÃvá se v shuffle().
static int waitForKey | ( | char * | msg | ) | [inline, static] |
Vytiskne zprávu msg a poèká, dokud u¾ivatel nestiskne klávesu, kterou potom vrátí jako výsledek. Tato funkce pracuje s curses.
Odkazuje se na print().
PoužÃvá se v runLearning() a runTest().
const char CHOICE_ALL = '\0' |
Konstanta pou¾ívaná funkcí showQuestion, jako volba pro vytisknutí v¹ech mo¾ných odpovìdí.
PoužÃvá se v runTest() a showQuestion().
David Martinek © 2004, < martinek (zavináè) fit (teèka) vutbr (teèka) cz >