Как лучше реализовать структуру данных с вопросами у которых будет верный и неверный ответ?

Тренируюсь в создании игр на Unity. Требуется чтобы у каждого вопроса были свои варианты ответа. Один верный со значением true, другие false. Это лучше всего сделать при помощи двумерного массива или есть варианты получше? Или же лучше будет хранить SQLite, таблице?


Ответы (1 шт):

Автор решения: user467566

Можешь сделать так:

/// <summary>
/// Класс варианта ответа
/// </summary>
class Variant
{
    public Variant(string name, bool isAnswer = false)
    {
        Name = name;
        IsAnswer = isAnswer;
    }

    //Содержимое варианта ответа
    public string Name { get; set; }

    //Проверка на то, является ли ответом
    public bool IsAnswer { get; set; }
}

/// <summary>
/// Класс вопроса
/// </summary>
class Question
{
    //Название вопроса
    public string Name { get; set; }

    //Список вариантов
    public List<Variant> Variants = new List<Variant>();

    public Question(string name, List<Variant> variants)
    {
        Name = name;
        Variants = variants;

        //Необязательно в Unity
        Console.WriteLine(Name);
        foreach (var variant in variants)
            Console.WriteLine(variant.Name);
    }

    //Метод для проверки ответа
    public bool CheckAnswer(Variant variant)
    {
        if (variant != null)
        {
            var checkedVariant = Variants.FirstOrDefault(v => v.Name == variant.Name); //Ищем наш вариант ответа в списке вариантов
            if (checkedVariant.IsAnswer == true)
            {
                Console.WriteLine("Правильно");
                return true; //Если ответ, то правильно
            }
            else
            {
                Console.WriteLine("Неверно");
                return false; //Иначе, неверный ответ
            }
        }
        else
            return false;
    }
}

Пример использования:

var variants = new List<Variant>()
{
    new Variant("Белый", true), //Правильный ответ
    new Variant("Красный"),
    new Variant("Синий")
};
var question = new Question("Какого цвета луна?", variants);

question.CheckAnswer(variants[0]); //Верно
question.CheckAnswer(variants[1]); //Неверно

Вообще. В Unity можно даже вручную настроить все это. Для этого есть специальный UI.

Хранить можешь как в SQLite так и в JSON. Если есть сервер, можешь подключаться к нему и уже с него брать вопросы.

→ Ссылка