108 lines
3.0 KiB
Dart
108 lines
3.0 KiB
Dart
enum QuizType { text, image } // 문제 유형
|
||
|
||
class QuizItem {
|
||
final QuizType type;
|
||
final String question; // 질문 텍스트
|
||
final String answer; // 정답
|
||
final List<String> options; // 보기 (객관식용, 없으면 주관식/OX)
|
||
|
||
QuizItem({
|
||
required this.type,
|
||
required this.question,
|
||
required this.answer,
|
||
required this.options,
|
||
});
|
||
|
||
Map<String, dynamic> toJson() => {
|
||
'type': type.name,
|
||
'question': question,
|
||
'answer': answer,
|
||
'options': options,
|
||
};
|
||
|
||
factory QuizItem.fromJson(Map<String, dynamic> json) {
|
||
return QuizItem(
|
||
type: json['type'] == 'image' ? QuizType.image : QuizType.text,
|
||
question: json['question'],
|
||
answer: json['answer'],
|
||
options: List<String>.from(json['options'] ?? []),
|
||
);
|
||
}
|
||
}
|
||
|
||
class QuizSet {
|
||
static List<QuizItem> getDummy10() {
|
||
return [
|
||
// 1. [OX] 기본
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "사과는 영어로 Apple이다.",
|
||
answer: "O",
|
||
options: ["O", "X"],
|
||
),
|
||
// 2. [OX] 상식
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "북극곰의 피부색은 흰색이다.",
|
||
answer: "X", // 검은색임
|
||
options: ["O", "X"],
|
||
),
|
||
// 3. [OX] 생물
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "돌고래는 '어류(물고기)'다.",
|
||
answer: "X", // 포유류
|
||
options: ["O", "X"],
|
||
),
|
||
// 4. [4지선다] 역사
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "임진왜란이 일어난 해는?",
|
||
answer: "1592년",
|
||
options: ["1392년", "1492년", "1592년", "1950년"],
|
||
),
|
||
// 5. [4지선다] 넌센스
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "왕이 넘어지면?",
|
||
answer: "킹콩",
|
||
options: ["왕콩", "킹콩", "전하", "꽈당"],
|
||
),
|
||
// 6. [주관식/음성] 속담 (보기를 줘서 터치도 가능하게 함)
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "가는 말이 고와야 [ ? ]가 곱다.",
|
||
answer: "오는 말",
|
||
options: ["오는 말", "가는 발", "너의 말", "우리 말"],
|
||
),
|
||
// 7. [수학] 연산
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "5 + 5 × 5 = ?",
|
||
answer: "30",
|
||
options: ["25", "30", "50", "10"],
|
||
),
|
||
// 8. [상식] 수도 맞추기
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "미국의 수도는 어디일까요?",
|
||
answer: "워싱턴 D.C.",
|
||
options: ["뉴욕", "LA", "워싱턴 D.C.", "시카고"],
|
||
),
|
||
// 9. [넌센스]
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "세상에서 가장 뜨거운 바다는?",
|
||
answer: "열바다",
|
||
options: ["불바다", "열바다", "사랑해", "동해"],
|
||
),
|
||
// 10. [OX] 마지막
|
||
QuizItem(
|
||
type: QuizType.text,
|
||
question: "개발자님은 이 앱을 완성할 수 있다!",
|
||
answer: "O",
|
||
options: ["O", "X"],
|
||
),
|
||
];
|
||
}
|
||
} |