s21_tetris/materials/library-specification_UZB.md
2025-06-16 09:04:18 +00:00

40 lines
No EOL
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BrickGame oyinlar toplamidan oyin kutubxonasi uchun spetsifikatsiya
Bu vazifa BrickGame seriyasidagi birinchi vazifadir. Hammasi bolib tortta loyiha boladi, ularning har biri oz oyini va oz texnologiyalariga ega. Ammo yangi loyihalarni ishlab chiqishdan tashqari, eski oyinlarni qollab-quvvatlash va eski loyihalarga yangi oyinlarni qollab-quvvatlash kerak boladi. Bu safar interfeys konsol boladi, keyingi safar desktop boladi va hokazo. Eski va yangi oyinlarni qollab-quvvatlash uchun kelajakda topshiriligan loyihalarni qayta yozishga togri kelmasligi uchun API interfeyslari va kutubxonalari qanday tuzilganligini oldindan hal qilish kerak.
Oyin maydoni onga yigirma hajmidagi matritsa sifatida ifodalanadi. Matritsaning har bir elementi oyin maydonining “pikseliga” togri keladi va ikkita holatdan birida bolishi mumkin: bosh va toldirilgan. Oyin maydoniga qoshimcha ravishda, har bir oyinda qoshimcha malumotlar mavjud bolib, ular oyin maydonining ong tomonidagi yon panelda korsatiladi. Oyin davomida ishlatilmaydigan qoshimcha malumotlar uchun joy egalari korsatilishi kerak.
Har bir oyin kutubxonasida foydalanuvchi malumotlarini qabul qiladigan funksiya bolishi kerak. Konsolda sakkizta jismoniy tugma mavjud: oyinni boshlash, toxtatib turish, oyinni tugatish, harakat va tortta strelka.
`userInput` funksiyasi kirish sifatida foydalanuvchi `action` harakatini va klavishni bosib ushlab turish uchun javob beradigan qoshimcha `hold` parametrni oladi.
`updateCurrentState` funksiyasi interfeysda korsatish uchun malumotlarni olish uchun moljallangan. U oyinning joriy holati haqida malumotni oz ichiga olgan tuzilmani qaytaradi. Masalan, tetris uchun taymerning tugashi shaklning bir qator pastga siljishiga olib keladi. Interfeysni yangilab turish uchun ushbu funktsiyani interfeysdan malum vaqt oraligida chaqirish kerak.
```c
typedef enum {
Start,
Pause,
Terminate,
Left,
Right,
Up,
Down,
Action
} UserAction_t;
typedef struct {
int **field;
int **next;
int score;
int high_score;
int level;
int speed;
int pause;
} GameInfo_t;
void userInput(UserAction_t action, bool hold);
GameInfo_t updateCurrentState();
```
Etibor bering, `GameInfo_t` oyinining joriy holati haqidagi malumot oyin kutubxonasi ichida statistik obyekt bilan ifodalanishi mumkin.