Bỏ qua để đến nội dung

Vocabulary Set - Matching Cards

DomainsDOL EnglishUX530 words3 min read
active
  • Ghi lại công thức sinh ba mức độ khó cho riêng mini game ghép thẻ (Matching Cards) trong Vocabulary Set.
  • Đảm bảo số lượng từ ở mỗi cấp độ phù hợp, chia được cho 6 để tạo thành cặp thẻ.
  • Cấp 1 (Dễ): luôn dùng 6 từ (mặc định). Không phụ thuộc kích thước danh sách.
  • Cấp 2 (Vừa):
    • Tính floor(totalWords * 0.4).
    • Điều chỉnh xuống bội số của 6 gần nhất (count -= count % 6).
    • Nếu kết quả < 12 (tối thiểu 2 cặp) hoặc 0 → bỏ qua.
  • Cấp 3 (Khó):
    • Tính floor(totalWords * 0.7).
    • Điều chỉnh xuống bội số của 6 (count -= count % 6).
    • Nếu kết quả < 12 hoặc trùng với cấp trước → bỏ qua.
  1. Khởi tạo danh sách mức độ khó rỗng.
  2. Luôn thêm cấp 1 (6 từ).
  3. Tính cấp 2 bằng công thức 40%; nếu hợp lệ thì thêm vào danh sách.
  4. Tính cấp 3 bằng công thức 70%; nếu hợp lệ thì thêm vào danh sách.
  5. Nếu cấp 2 không hợp lệ nhưng cấp 3 hợp lệ → dùng giá trị cấp 3 làm cấp độ “Vừa”. Không cần đủ 3 cấp độ trong mọi trường hợp.
  6. Hiển thị các cấp độ theo thứ tự dễ → khó dựa trên số lượng thực tế đã tính được.
  • Danh sách 56 từ:
    • Cấp 1: 6 từ.
    • Cấp 2: floor(56 * 0.4) = 22 → điều chỉnh xuống 18 từ.
    • Cấp 3: floor(56 * 0.7) = 39 → điều chỉnh xuống 36 từ.
  • Danh sách 18 từ:
    • Cấp 1: 6 từ.
    • Cấp 2: floor(18 * 0.4) = 7 → <12 nên bỏ qua.
    • Cấp 3: floor(18 * 0.7) = 12 → hợp lệ → hiển thị là cấp “Vừa”.
  • Mỗi set luôn có thêm mức “Tất cả” (All) sử dụng toàn bộ từ trong list.
  • Tối đa 4 mức độ: Dễ, Vừa, Khó, Tất cả. Khi số từ không đủ, chỉ hiển thị các mức thoả thuật toán.
  • Kết hợp thử thách (challenge) → tạo màn chơi riêng:
    • Challenge gồm: Định nghĩa VI / Định nghĩa EN / Kết hợp.
    • Combo ví dụ: Dễ - VI, Dễ - VI/EN, Khó - EN…
  • Mỗi màn chơi (difficulty + challenge) có leaderboard riêng.
  • Xếp hạng dựa vào thời gian hoàn thành (nhỏ hơn = xếp cao).
  • Sau khi hoàn thành lượt chơi, gửi record gồm { difficulty, challenge, timeTaken } vào leaderboard.
  • Có thể hiển thị top N và vị trí của user.
  • Nếu tổng số từ < 12, chỉ hiển thị cấp 1 (6 từ).
  • Nếu totalWords < 6, fallback sang số lượng tối đa chia hết cho 2 cặp (max(6, totalWords - totalWords % 2)).
  • Luôn đảm bảo số lượng từ được chia thành cặp hoàn chỉnh (chia hết cho 2) và bảng thẻ không lặp thừa.