Skip to content

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 — ball
  • lives = 3 — hayotlar soni
  • name = "Akmal" — ism
  • is_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: score

3. Variable yaratish

  1. Variables kategoriyasiga kiring

  2. Make a Variable tugmasi

  3. Nom bering (masalan, score)

  4. For all sprites yoki For this sprite only:

    • For all sprites — barcha sprite ishlatishi mumkin (umumiy)
    • For this sprite only — faqat bitta sprite
  5. OK

Yangi bloklar paydo bo'ladi:

  • set [score] to 0 — qiymat belgilash
  • change [score] by 1 — oshirish
  • (score) — qiymat olish
  • show variable [score] — ekranda ko'rsatish
  • hide variable [score] — yashirish

4. Variable bilan asosiy amallar

Belgilash

set [score] to 0
set [name] to [Akmal]
set [pi] to 3.14

Oshirish/kamaytirish

change [score] by 1      ←  +1
change [score] by -1     ←  -1
change [lives] by -1     ←  hayot kamayish

O'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]    ←  yashirin

5. Misol: Ball hisoblash

when 🟢 clicked
    set [score] to 0
    forever
        if <key [space] pressed?> then
            change [score] by 1
            wait 0.2 seconds

Space 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 all

7. Misol: Yuqori ball (high score)

when 🟢 clicked
    if <(score) > (high_score)> then
        set [high_score] to (score)
        say [Yangi rekord!] for 2 secs

Oddiy 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

  1. VariablesMake a List
  2. Nom bering (masalan, talabalar)
  3. 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 secs

11. 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 secs

12. 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 15

Sprite 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 clone

Sprite 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 ball
  • lives — hayotlar
  • time — qolgan vaqt
  • high_score — yuqori rekord

Backdrops

  • game — o'yin sahnasi
  • game-over — tugash sahnasi

13. O'yin uchun musiqa va effektlar

Background music

when 🟢 clicked
    forever
        play sound [game music] until done

Effekt tovushlari

  • Olma tutilganda: chomp yoki pop
  • 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:

  • foreverwhile (true) (C'da)
  • repeat 10for (int i=0; i<10; i++) (C'da)
  • if-elseif-else (C'da)
  • set score to 0int score = 0; (C'da)

Tushunchalar — Scratch'da o'rgangan. Faqat sintaksis o'zgaradi.

Darsdagi topshiriqlar

Topshiriq 1 — Variable mashqi

3 ta variable yarating:

  • count — hisoblagich
  • name — foydalanuvchi ismi
  • is_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 secs

5 ta filmni so'rang va saqlang. Tasodifiy birini chiqaring.

Saqlang: 2-filmlar

Topshiriq 3 — Yashirin so'z o'yin (Hangman)

Hangman uslubidagi o'yin:

  1. Yashirin so'z (kamida 5 harf): KOMPYUTER
  2. Ekranda chiziqcha bilan ko'rsating: _ _ _ _ _ _ _ _ _
  3. Foydalanuvchi harf taxmin qilsin
  4. To'g'ri bo'lsa — chiziqchani harf bilan almashtiring
  5. Xato bo'lsa — hayot -1 (5 ta hayot)
  6. 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 secs

Saqlang: 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:

  1. FileSave to your computer.sb3 fayl
  2. Drive'da Foundation/3-oy/Scratch-Loyihalar/ papka
  3. Hamma .sb3 fayllarni shu papkaga yuklang
  4. README.md (oddiy Notepad/TextEdit fayli) yarating — har loyiha haqida 1-2 jumla

Drive havolasini o'qituvchiga jo'nating.

Asosiy tushunchalar (lug'at)

TerminQisqacha izoh
VariableO'zgaruvchi (qiymat saqlash)
ListRo'yxat (bir nechta qiymat)
Cloud VariableInternet'da saqlanuvchi
SetBelgilash
ChangeOshirish/kamaytirish
Show / Hide variableKo'rsatish / yashirish
add toRo'yxatga qo'shish
item N ofN-elementni olish
length ofRo'yxat hajmi
containsIchida bormi
ScoreBall
LivesHayotlar
High scoreYuqori rekord
Game overO'yin tugadi
.sb3Scratch fayl formati

Keyingi dars

9-dars: Terminal va buyruq qatori →

Master IT o'quv markazi — o'qitish rejasi