Сложный конфиг

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Сначала обрисую примерную задачу, я ее упростил для максимального понимания сути вопроса.
Допустим, надо написать обучалку английского языка для детей. Задания могут быть самыми разнообразными, что-то вроде таких (знаю что много букав, но надо показать разнообразие)
1) Вопрос с предварительным обучением.
Берется рандомное слово номер 1 из какого-то набора. Показывается картинка и произносится соответствующее слово, затем пользователю дается несколько заданий на проверку этого слова: задается вопрос "где машина?" и юзер должен ткнуть пальцем/мышкой в нужную картинку, одну из трех (или может поначалу даже одну из одной, чтобы запомнил :)).​
Берется слово номер 2. Тоже самое.​
Потом берется микс из слов 1 и 2. Если какое-то из слов слишком плохо выучено, то оно отдельно тренируется.​
Потом слово номер 3, микс из трех слов и т.д.​
И поощрение: когда угадано 5 слов подряд, запускается короткий мультик.​
2) Рисуется большая картина и задается вопрос "где белка?". Юзер должен ткнуть в белку. Если угадал, то поощрение в виде мультика или чего-то еще.

3) Идет какое-то интересное видео, например тот же мульт. В некоторых местах останавливается и задается какое-то задание, ответив на которое, можно продолжать смотреть

и т.д.

Такие задания могут быть разных уровней: на первых уровнях всё разжевывается и много раз вдалбливается, на последних уровнях всё сложнее и меньше повторов слов.

Теперь вопрос. Мне бы не хотелось всю эту логику разбрасывать по всему приложению, потому что что-то может меняться, добавляться, настраиваться и т.д. Хотелось бы хранить в одном месте, в идеале в конфиге. Но как хитрую логику запихивать в конфиг, тоже не совсем ясно. Можно в принципе не конфиг, а некий кусок кода - bootstrap, и кое-какие идеи у меня на этот счет есть, но что-то мне всё не очень нравится: некоторые детали получаются скрытыми.
А как бы вы организовали хранение такой логики?
 

HraKK

Мудак
Команда форума
У меня есть офисный стул, он слегка не удобен поэтому я хочу купить новый. Но не знаю какой выбрать кожаный или матерчатый? Кожаный липнет летом к попе, а матерчатый стирается быстро. А хотелось бы, как то совместить. Да и цена, конечно, кусается у кожаного. А как бы вы организовали хранение такой логики?
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
Логику обучения. Какие тесты за какими следуют, с какими параметрами и с какими реакциями на неправильные ответы юзера.
 

HraKK

Мудак
Команда форума
дерево, связанный список

А вообще недостаточно данных. Для этого надо логику знать полностью приложения. Ты ее не выложил. Алгоритм можешь написать?


Но так пальцем в небо я бы завел такие сущьности как

слово, сложность, тесты

Слово имеет сложность и связана 1 ко многим к тестам.

Берем рандомно слова из сложности 1.К ним вызываем тесты. За успешный тест получаем бал, по достижению баллов, начисляем глобальный бал и берем следующее слово. Если глобальный бал >n переходим на другую сложность.

Либо сложность относить к тестам. Тогда тоже самое только слова рандомно, а сложность у тестов меняется.

А можно сложность и у слов и у тестов.
 

domino

Новичок
Логику обучения. Какие тесты за какими следуют, с какими параметрами и с какими реакциями на неправильные ответы юзера.
собственно, а какие могут быть реакции на неправильные ответы юзера? ) мне приходит в голову совсем отвратительная идея - вернуть из теста false )))
 
Сверху