1. Sensorli Hodisalar va Sichqoncha Farqi (3 ball)
| Touch hodisasi |
Sichqonchadagi analogi |
Barmoq bilan ishlash xususiyati |
| touchstart |
mousedown |
Barmoq ekranga tegdi. e.touches massivida saqlanadi |
| touchmove |
mousemove |
Barmoq ekranda siljimoqda. e.preventDefault() talab qilinadi |
| touchend |
mouseup |
Barmoq ko'tarildi. e.changedTouches orqali o'qiladi |
2. Brauzer Parazit Harakatlarini Bloklash (2 ball)
CSS touch-action qoidasi:
touch-action: none;
Agar bu CSS qoidasi yozilmasa, mobil o'yinda nima sodir bo'ladi?
JS e.preventDefault():
Nega touchstart va touchmove da preventDefault() chaqirilishi shart?
3. Virtual Analog Joystik Matematikasi (3 ball)
const dx = touchX - centerX;
const dy = touchY - centerY;
const dist = Math.sqrt(dx * dx + dy * dy);
1. Tutqichni doira ichida saqlash (Clamping): agar dist > R bo'lsa, knobX qanday hisoblanadi?
knobX = centerX + (dx / dist) *
2. Harakat uchun normalizatsiya formulasi (-1.0 dan +1.0 gacha):
inputX =
4. Amaliyot: Multi-Touch da Barmoqlarni Ajratish (2 ball)
// Har bir barmoqning o'ziga xos ID raqami (identifier):
for (let i = 0; i < e.changedTouches.length; i++) {
const t = e.changedTouches[i];
if (t.clientX < window.innerWidth / 2) {
joyTouchId = t.; // Barmoq ID si
}
}
10-Ballik Baholash Mezoni (Touch va Joystik):
9–10 ball: Touch hodisalari to'liq tushuntirilgan, clamping va normalizatsiya formulasi to'g'ri, multi-touch identifier yozilgan.
7–8 ball: Touch farqi to'g'ri, joystik formulasida 1 ta kamchilik bor.
5–6 ball: Faqat jadval to'ldirilgan, matematik qismlar qolib ketgan.