8-dars: Scratch — o'zgaruvchilar va o'yin loyihasi
Dars haqida
Davomiyligi: 90 daqiqa Maqsad: Talaba variables (o'zgaruvchilar), lists (ro'yxatlar) bilan ishlashi va to'liq o'yin yarata olishi kerak. Bu — 3-oyning eng katta amaliy darsi.
1. Variable nima?
Variable (o'zgaruvchi) — qiymat saqlash uchun xotira hujayrasi.
Misol:
score = 0— balllives = 3— hayotlar soniname = "Akmal"— ismis_playing = true— o'yin davomidami
2. Nima uchun variable kerak?
Variable'siz:
"O'yin davomida ball ko'paymoqda"
"Lekin scratch qancha ball ekanini eslab qolmaydi"
Variable bilan:
SET score = 0
agar olma tutilsa:
SET score = score + 1
oxirida ko'rsat: score3. Variable yaratish
Variables kategoriyasiga kiring
Make a Variable tugmasi
Nom bering (masalan,
score)For all sprites yoki For this sprite only:
- For all sprites — barcha sprite ishlatishi mumkin (umumiy)
- For this sprite only — faqat bitta sprite
OK
Yangi bloklar paydo bo'ladi:
set [score] to 0— qiymat belgilashchange [score] by 1— oshirish(score)— qiymat olishshow variable [score]— ekranda ko'rsatishhide variable [score]— yashirish
4. Variable bilan asosiy amallar
Belgilash
set [score] to 0
set [name] to [Akmal]
set [pi] to 3.14Oshirish/kamaytirish
change [score] by 1 ← +1
change [score] by -1 ← -1
change [lives] by -1 ← hayot kamayishO'qish
say (score) for 2 secs
say (join [Score: ] (score)) for 2 secs
if <(score) > 10> then ...Ko'rsatish/yashirish
show variable [score] ← Stage'da ko'rinadi
hide variable [score] ← yashirin5. Misol: Ball hisoblash
when 🟢 clicked
set [score] to 0
forever
if <key [space] pressed?> then
change [score] by 1
wait 0.2 secondsSpace bosilganda — score 1 ga oshadi.
6. Misol: Hayot tizimi
when 🟢 clicked
set [lives] to 3
show variable [lives]
forever
if <touching [Asteroid]?> then
change [lives] by -1
wait 1 seconds
if <(lives) = 0> then
say [O'yin tugadi!] for 2 secs
stop all7. Misol: Yuqori ball (high score)
when 🟢 clicked
if <(score) > (high_score)> then
set [high_score] to (score)
say [Yangi rekord!] for 2 secsOddiy variable loyiha fayli bilan birga saqlanadi. Boshqa o'yinchilar bilan umumiy reyting (leaderboard) uchun esa Cloud Variable kerak — keyingi bo'limda.
8. Cloud Variables
Cloud Variable — internet orqali saqlanuvchi variable. Boshqa foydalanuvchilar bilan leaderboard uchun.
Cloud Variables
- Faqat Scratcher akkauntda (oddiy yangi akkauntda yo'q)
- Faqat raqamlar
- 100 ta variable cheklov
9. Lists — ro'yxatlar
List — bir nechta qiymatlarni saqlash.
yoshlar = [15, 22, 30, 18, 25]
ismlar = ["Akmal", "Aziza", "Botir"]List yaratish
- Variables → Make a List
- Nom bering (masalan,
talabalar) - OK
List bloklari
add [Akmal] to [talabalar] - qo'shish
delete (1) of [talabalar] - 1-elementni o'chirish
delete all of [talabalar] - hammasini o'chirish
insert [Aziza] at (2) of [talabalar] - 2-joyga qo'yish
replace item (1) of [talabalar] with [Botir] - almashtirish
(item (1) of [talabalar]) - 1-elementni olish
(length of [talabalar]) - umumiy soni
(item # of [Akmal] in [talabalar]) - Akmal qaysi joyda?
(talabalar contains [Akmal]?) - bormi?10. Misol: Talabalar ro'yxati
when 🟢 clicked
delete all of [talabalar]
ask [Birinchi talaba?] and wait
add (answer) to [talabalar]
ask [Ikkinchi talaba?] and wait
add (answer) to [talabalar]
ask [Uchinchi talaba?] and wait
add (answer) to [talabalar]
say (join [Jami: ] (length of [talabalar])) for 3 secs
say (join [Birinchi: ] (item 1 of [talabalar])) for 3 secs11. Misol: Tasodifiy savol-javob
when 🟢 clicked
delete all of [savollar]
add [O'zbekiston poytaxti?] to [savollar]
add [Yer aylanish vaqti?] to [savollar]
add [Yuri Gagarin kim?] to [savollar]
delete all of [javoblar]
add [Toshkent] to [javoblar]
add [24 soat] to [javoblar]
add [Birinchi kosmonavt] to [javoblar]
set [n] to (pick random 1 to 3)
ask (item (n) of [savollar]) and wait
if <(answer) = (item (n) of [javoblar])> then
say [To'g'ri!] for 2 secs
else
say (join [Xato. To'g'ri javob: ] (item (n) of [javoblar])) for 3 secs12. To'liq o'yin loyihasi: Olma Tutish
O'yin g'oyasi:
- Olmalar yuqoridan tushadi
- O'yinchi savatni strelkalar bilan harakat qiladi
- Tutib olgan har olma uchun +1 ball
- 3 ta hayot — yiqilgan olmalar uchun -1
- 30 sekund vaqt
- Eng yuqori score saqlanadi
Sprite 1: Savat
when 🟢 clicked
set [score] to 0
set [lives] to 3
go to x:0 y:-150
set rotation style [don't rotate]
when [left arrow] key pressed
change x by -15
when [right arrow] key pressed
change x by 15Sprite 2: Olma (clone bilan)
when 🟢 clicked
hide
forever
wait (pick random 0.5 to 1.5) seconds
create clone of [myself]
when I start as a clone
show
go to x:(pick random -220 to 220) y:170
repeat until <touching [edge]? or touching [Savat]?>
change y by -5
if <touching [Savat]?> then
change [score] by 1
play sound [chomp]
else
change [lives] by -1
play sound [oh]
if <(lives) = 0> then
broadcast [oyin tugadi]
delete this cloneSprite 3: Timer (ko'rinmas)
when 🟢 clicked
set [time] to 30
repeat until <(time) = 0 or (lives) = 0>
wait 1 seconds
change [time] by -1
broadcast [oyin tugadi]O'yin tugashi
Har sprite:
when I receive [oyin tugadi]
stop other scripts in sprite
Stage'da:
when I receive [oyin tugadi]
switch backdrop to [game-over]
if <(score) > (high_score)> then
set [high_score] to (score)Variables
score— hozirgi balllives— hayotlartime— qolgan vaqthigh_score— yuqori rekord
Backdrops
game— o'yin sahnasigame-over— tugash sahnasi
13. O'yin uchun musiqa va effektlar
Background music
when 🟢 clicked
forever
play sound [game music] until doneEffekt tovushlari
- Olma tutilganda:
chompyokipop - Hayot yo'qotilganda:
lose - O'yin tugaganda:
game over
14. Boshqa o'yin g'oyalari
15. Loyiha tugagandan keyin
Sinab ko'rish
- O'zingiz o'ynang
- Hamkasbingiz o'ynang
- O'qituvchi o'ynang
Yaxshilash
- Yangi level'lar qo'shing
- Qiyinlikni oshiring (vaqt o'tgan sari tezroq olmalar)
- Yangi sprite'lar (bonus narsalar)
- Yaxshi musiqa
- Chiroyli backdrop
Share
- Share tugmasini bosing
- Tushuntirish yozing — qanday o'ynaladi
- Havolani Drive'ga, hamkasblar bilan ulashing
16. Scratch'dan keyingi qadam
3-oydan keyin Foundation'da:
- 4-oy: C tili — real, tekst bilan kod
- 5-oy: C tili — algoritmlar, massiv
- 6-oy: Python — loyiha
Scratch'dan keyin C — qiyin bo'lib ko'rinadi. Lekin mantiq bir xil:
forever→while (true)(C'da)repeat 10→for (int i=0; i<10; i++)(C'da)if-else→if-else(C'da)set score to 0→int score = 0;(C'da)
Tushunchalar — Scratch'da o'rgangan. Faqat sintaksis o'zgaradi.
Darsdagi topshiriqlar
Topshiriq 1 — Variable mashqi
3 ta variable yarating:
count— hisoblagichname— foydalanuvchi ismiis_finished— tugadimi (true/false)
Loyiha:
- Boshlanganda: count = 0, is_finished = false
- Foydalanuvchidan ismni so'rang
- Klavish bosilganda — count oshadi
- count = 10 bo'lganda — "Tugadi!" va is_finished = true
Saqlang: 1-variable
Topshiriq 2 — Lists bilan
Top 5 sevimli filmingiz ro'yxati:
when 🟢 clicked
delete all of [filmlar]
ask [1-film?] and wait
add (answer) to [filmlar]
ask [2-film?] and wait
add (answer) to [filmlar]
...
say (join [Mening eng yaxshim: ] (item 1 of [filmlar])) for 3 secs5 ta filmni so'rang va saqlang. Tasodifiy birini chiqaring.
Saqlang: 2-filmlar
Topshiriq 3 — Yashirin so'z o'yin (Hangman)
Hangman uslubidagi o'yin:
- Yashirin so'z (kamida 5 harf):
KOMPYUTER - Ekranda chiziqcha bilan ko'rsating:
_ _ _ _ _ _ _ _ _ - Foydalanuvchi harf taxmin qilsin
- To'g'ri bo'lsa — chiziqchani harf bilan almashtiring
- Xato bo'lsa — hayot -1 (5 ta hayot)
- So'zni topsangiz — yutuq
(Murakkab — yaxshi mashq)
Saqlang: 3-hangman
Topshiriq 4 — To'liq Olma Tutish o'yini
Dars matni'da berilgan Olma Tutish o'yinini to'liq yarating:
- Savat (klaviatura)
- Olma (clone, tasodifiy)
- Score, lives, time variables
- 30 sekund vaqt
- High score saqlash
- Musiqa va effekt
- Game over backdrop
Saqlang: 4-olma-tutish-final
Share qiling — havolani Drive'ga.
Topshiriq 5 — Quiz o'yin
5 ta savol va javoblar:
List: savollar
List: javoblar
when 🟢 clicked
delete all of [savollar]
add [O'zbekiston poytaxti?] to [savollar]
add [2 + 2 = ?] to [savollar]
...
delete all of [javoblar]
add [Toshkent] to [javoblar]
add [4] to [javoblar]
...
set [score] to 0
set [i] to 1
repeat (length of [savollar])
ask (item (i) of [savollar]) and wait
if <(answer) = (item (i) of [javoblar])> then
change [score] by 1
say [To'g'ri!] for 1 secs
else
say (join [Xato. To'g'ri javob: ] (item (i) of [javoblar])) for 2 secs
change [i] by 1
say (join [Sizning ballingiz: ] (score)) for 3 secsSaqlang: 5-quiz
Topshiriq 6 — Pong o'yini
Pong klassik o'yini:
- Top (sprite) — har xil yo'nalishda harakat, chetdan qaytadi
- Plat (sprite) — pastda, strelkalar bilan
- Top platga tegsa — qaytadi va score +1
- Top pastga tushib ketsa — game over
Variables: score, high_score
Saqlang: 6-pong
Topshiriq 7 — O'z o'yiningiz
O'zingizning original o'yiningizni yarating:
- Maksimum ijodkorlik
- Variables va lists ishlatish majburiy
- Kamida 3 ta sprite
- Score, lives yoki shu kabi
- Boshlash, davom etish, tugash
- Musiqa va effekt
- Backdrop'lar
Loyiha eng yaxshi 3 ta — keyingi oylik imtihonda muhokama qilinadi.
Saqlang: 7-original-oyin
Share qiling. Havolani Drive'ga.
Topshiriq 8 — Drive'ga eksport
Hamma Scratch loyihalaringizni:
- File → Save to your computer —
.sb3fayl - Drive'da
Foundation/3-oy/Scratch-Loyihalar/papka - Hamma
.sb3fayllarni shu papkaga yuklang - README.md (oddiy Notepad/TextEdit fayli) yarating — har loyiha haqida 1-2 jumla
Drive havolasini o'qituvchiga jo'nating.
Asosiy tushunchalar (lug'at)
| Termin | Qisqacha izoh |
|---|---|
| Variable | O'zgaruvchi (qiymat saqlash) |
| List | Ro'yxat (bir nechta qiymat) |
| Cloud Variable | Internet'da saqlanuvchi |
| Set | Belgilash |
| Change | Oshirish/kamaytirish |
| Show / Hide variable | Ko'rsatish / yashirish |
| add to | Ro'yxatga qo'shish |
| item N of | N-elementni olish |
| length of | Ro'yxat hajmi |
| contains | Ichida bormi |
| Score | Ball |
| Lives | Hayotlar |
| High score | Yuqori rekord |
| Game over | O'yin tugadi |
.sb3 | Scratch fayl formati |