Files
mini-test-projects-2-release/module-c/module-c-uz.md
2026-04-12 18:58:03 +09:00

5.6 KiB

🎮 Test Project: Module C - CyberTyper 2026

1. Loyiha sharhi (Project Overview)

Ushbu topshiriqning maqsadi ingliz tili bo'yicha yuqori mahsuldorlikka ega arkada o'yinini ishlab chiqishdir. Ishtirokchilar taqdim etilgan words_data.json faylini tahlil qilib, **Ma'lumotlar bazasi (MySQL)**ni loyihalashlari hamda so'zlarni yo'q qilish uchun real vaqt rejimida koordinatalarni kuzatuvchi dinamik front-end dvigatelini API bilan integratsiya qilgan holda yakunlashlari kerak.

2. Texnik tushunchalar (Technical Definitions)

  • VFX (Visual Effects): O'yindagi vizual maxsus effektlar. Bu o'q urilishi natijasida so'z harflarining parchalanib ketishi kabi effektlarni anglatadi.
  • WPM (Words Per Minute): Daqiqasiga yozilgan so'zlar tezligi ko'rsatkichi. (Hisoblash: Yozilgan umumiy so'zlar / O'yin vaqti (daqiqada))
  • HP (Health Point): O'yinchining hayot darajasi (100% dan boshlanadi). So'zlar o'tkazib yuborilganda u kamayadi va 0% ga yetganda o'yin yakunlanadi.

3. 1-qadam: Backend API va ma'lumotlar bazasi dizayni (Server-side)

Barcha API nuqtalari (endpoints) /module_c/api/ yo'lidan foydalanishi va ma'lumotlarning saqlanishi (persistence) kafolatlanishi kerak.

A. Ma'lumotlar bazasi konfiguratsiyasi (Majburiy)

  • Word Table: Taqdim etilgan words_data.json fayli asosida so'z matni, qiyinchilik darajasi va unikal ballarni saqlaydigan jadval yaratishingiz kerak.
  • Ranking Table: O'yinchi ismlari, yakuniy ballar va maksimal kombolarni saqlash uchun jadval loyihalashingiz kerak. Ushbu ma'lumotlar server qayta ishga tushirilgandan keyin ham saqlanib qolishi shart.

B. API mantiqiy talablari

  • So'zlarni yetkazib berish API (GET /module_c/api/words?level=n):
    1. So'ralgan qiyinchilik darajasiga (level) mos keladigan so'zlarni tasodifiy tarzda chiqarish.
    2. Takrorlanishning oldini olish: Hozirgi o'yin ekranida mavjud bo'lgan so'zlar API so'rovida qayta takrorlanmasligi kerak.
  • Ranking API: Rekordlar POST so'rovlari orqali MBda saqlanishi va GET so'rovlari orqali ballarning kamayish tartibida Global TOP 5 rekordlari qaytarilishi kerak.

4. 2-qadam: O'yin dvigateli va ballar hisobi mantiqi (Front-end Development)

A. Qiyinchilik darajasi sozlamalari (Yaratilish oralig'i va tushish tezligi)

So'zlar ekranning yuqori qismida (y=0) tasodifiy gorizontal pozitsiyalarda yaratiladi va pastga qarab harakatlanadi.

Qiyinchilik (Daraja) Yaratilish oralig'i Tushish tezligi Ko'paytiruvchi (Multiplier)
Level 1 Har 2.0s da Sekin (50px/sek) 1.0
Level 2 Har 1.5s da O'rta (80px/sek) 1.5
Level 3 Har 1.0s da Tez (120px/sek) 2.0

B. Ballarni hisoblashning batafsil formulasi (FinalScore)

FinalScore = BasePoints + (CurrentCombo \times LevelMultiplier)
  • $BasePoints$: MBdagi mos kelgan so'zga biriktirilgan unikal ball.
  • $CurrentCombo$: Ketma-ket muvaffaqiyatlar soni. (Muvaffaqiyatda 1 ga oshadi; so'z pastki qismga tegsa, darhol 0 ga qaytadi).
  • Ko'rsatkich: Hisoblangan ball o'yin ekranining Score qismida real vaqt rejimida yig'ilib borishi kerak.

C. HP tizimi va tiklanish

  • Kamayish: So'z pastki chiziqqa tegsa, HP 10% ga kamayadi.
  • Tiklanish: Har safar 20 Combo ga erishilganda, yo'qotilgan HPning 5% miqdori bonus sifatida tiklanadi.

5. 3-qadam: UI/UX va sahna spetsifikatsiyalari (Design Implementation)

A. 3-Scene SPA (Single Page Application) tuzilmasi

  • Ushbu topshiriq JavaScript yordamida sahifani to'liq yangilamasdan almashadigan SPA tuzilmasida ishlab chiqilishi kerak.
  • Scene 1 (Start): O'yinchi ismini kiritish va qiyinchilik darajasini tanlash.
  • Scene 2 (Play): Haqiqiy o'yin jarayoni ekrani.
  • Scene 3 (Result): Yakuniy ball xulosasi va Global TOP 5 reyting ekrani.

B. Boshlang'ich sahna talablari

  • Kiritish elementlari: O'yin nomi (CyberTyper 2026), O'yinchi ismi maydoni (Majburiy), radio-tugmalar yoki tanlash qutisi orqali Qiyinchilikni tanlash (Level 1, 2, 3).
  • Start tugmasi: Barcha ma'lumotlar kiritilgandagina faollashadi; uni bosish o'yin ekraniga olib kiradi.

C. O'yin ekranining majburiy komponentlari (Baholash elementlari)

  • Score: Real vaqt rejimidagi ballar jadvali.
  • Combo: Ketma-ket muvaffaqiyatli urishlar soni.
  • WPM: Real vaqtda hisoblangan daqiqalik so'zlar soni.
  • HP Gauge: Vizual tarzda o'zgarib turadigan hayot bari.
  • Input Field: O'yinchi inglizcha so'zlarni yozishi uchun matn maydoni.
  • Falling Words: Yuqoridan tasodifiy joylardan tushayotgan so'zlar.

D. Proyektil (o'q) va Fever effektlari

  • O'q va to'qnashuv: Enter tugmasi bosilganda, pastdan maqsadli so'zning real vaqt koordinatalari tomon o'q otiladi. To'qnashuv sodir bo'lganda, harflar parchalanishi VFX hosil bo'ladi va so'z yo'q qilinadi.
  • Fever Mode: 20 ta komboga erishish tushish tezligini 5 soniya davomida 50% ga kamaytiradi va neon fon effektini faollashtiradi.

E. Reyting sahnasi (Natija sahifasi)

  • Ma'lumotlar bazasidan olingan Global TOP 5 yetakchilar jadvalini ko'rsatadi.
  • [New Game] tugmasi: Buni bosish barcha sozlamalarni tiklaydi va ism kiritish ekraniga qaytaradi.

6. Baholash sxemasi xulosasi (Jami 25.00)

Toifa Batafsil mezonlar Ballar
Design (7.0) Dinamik proyektil/zarracha effektlari, muhim UI elementlari (HP, Score) ko'rinishi va VFX sifati. 7.0
Front-end (11.0) Qiyinchilikka xos mantiq (Interval/Tezlik), takrorlanishsiz so'zlar boshqaruvi va o'q koordinatalarini hisoblash. 11.0
Back-end (7.0) MB jadvali dizayni va ma'lumotlar barqarorligi, Global TOP 5 reyting API dizayni. 7.0