Осталось только "оживить" процесс.
Функция LoadQuestion() выбирает случайный вопрос, пишет на кнопки соответствующие тексты, и заносит в специальную переменную правильный ответ:
qs - номер случайно выбранного вопроса. Он рассчитывается как остаток от деления системного времени в миллисекундах (прошедших от 1 января 1970 года) на общее количество вопросов теста.
current_right - переменная, равная номеру правильного ответа.
Эту процедуру надо исполнить в onCreate() после загрузки всех вопросов из базы.
Заведем переменные wrong и right (счетчики правильных и неправильных ответов) - обе в 0, а также переменных time и total_time (первая - текущее количество вопросов с начала теста, вторая - количество вопросов в тесте) - начальные значение тоже = 0.
Повесим событие на нажатие кнопок:
Сначала рассчитываем процент правильных ответов, затем формируем строку stat и выводим ее с помощью Toast
Скачать исходник всей программы можно здесь
Функция LoadQuestion() выбирает случайный вопрос, пишет на кнопки соответствующие тексты, и заносит в специальную переменную правильный ответ:
private void LoadQuestion() {
int qs=(int)System.currentTimeMillis()%QUESTIONS;
Question.setText(Ques[qs]);
for (int i=0;i<VARIANTS;i++){
Answers[i].setText(AnsMatrix[i][qs]);
}
current_right=RightAnswers[qs]-1;
}
qs - номер случайно выбранного вопроса. Он рассчитывается как остаток от деления системного времени в миллисекундах (прошедших от 1 января 1970 года) на общее количество вопросов теста.
current_right - переменная, равная номеру правильного ответа.
Эту процедуру надо исполнить в onCreate() после загрузки всех вопросов из базы.
Заведем переменные wrong и right (счетчики правильных и неправильных ответов) - обе в 0, а также переменных time и total_time (первая - текущее количество вопросов с начала теста, вторая - количество вопросов в тесте) - начальные значение тоже = 0.
Повесим событие на нажатие кнопок:
@Override
public void onClick(View arg0) {
if (arg0==Question){
wrong++;
}
else{
wrong++;
for (int i=0;i<VARIANTS;i++){
if (arg0==Answers[i]){
if (current_right==i){
wrong--;
right++;
}
}
}
}
time++;
LoadQuestion();
if (time==total_time){
Stats();
time=0;
right=0;
wrong=0;
}
}
Если нажата кнопка с вопросом, сразу пишем, что вопрос неправильный и либо переходим к следующему вопросу, либо выводим статистику и начинаем новы тест.
В противном случае сначала посчитаем ответ неправильным и начнем разбираться: пройдемся по всем кнопкам с ответами, и, если нажата кнопка с конкретным индексом, проверим, соответствует ли индекс номеру правильного ответа. Если да - прибавляем 1 к правильным и убираем 1 из неправильных ответов.
После проверки прибавим количество прошедших вопросов. Если оно совпадает с общим количеством вопросов теста, обнулим все показатели и вызовем процедуру Stats():
private void Stats() {
double rating=Math.round(((double)right/((double)right+(double)wrong))*100);
String stat="";
stat+=getString(R.string.note1);
stat+=" "+right+" ";
stat+=getString(R.string.note2);
stat+=" "+total_time+". ";
stat+=getString(R.string.note3);
stat+=" "+(rating+"").substring(0,(rating+"").length()-2);
Toast.makeText(this, stat, Toast.LENGTH_LONG).show();
}
Сначала рассчитываем процент правильных ответов, затем формируем строку stat и выводим ее с помощью Toast
Скачать исходник всей программы можно здесь
Комментариев нет:
Отправить комментарий