• V BOB. WWW-TEXNOLOGIYA VA HTML TILI
  • Va axborot texnologiyalari 10-sinf toshkent – 2021




    Download 27,94 Mb.
    Pdf ko'rish
    bet130/153
    Sana19.05.2024
    Hajmi27,94 Mb.
    #244031
    1   ...   126   127   128   129   130   131   132   133   ...   153
    Bog'liq
    10-sinf yangi

    O‘YINNI TUGATISH
    O‘tgan mavzular davomida o‘yin oynasi hamda qahramonlarni yaratish, ularni 
    harakatlantirish, boshqarish va to‘qnashuvlarni tekshirish ko‘nikmalari hosil qilindi. Unda o‘yin 
    jarayonining so‘ngi bosqichi sifatida sparytlar to‘qnashuvi belgilangan edi. Agar spaytlar 
    to‘qnashsa, dasturdan chiqib ketadi, xolos. Bunday holat foydalanuvchi uchun unchalik 
    qiziqarli emas edi. Shu boisdan “Game Over” ekranini qo‘shish, foydalanuvchilar xohishiga 
    ko‘ra o‘yinni qayta boshlashga ruxsat beruvchi oynani yaratish zarurati kelib chiqdi.
    Dasturning to‘xtab qolishiga sabab, o‘yin sikli “running” o‘zgaruvchisi (uning qiymati faqat 
    True
    yoki 
    False
    bo‘lishi mumkin) tomonidan boshqariladi. To‘qnashuv sodir etilganda, uning 
    qiymati 
    False
    bo‘ladi va o‘yin sikli to‘xtaydi. Uning o‘rniga o‘yin holatini kuzatib boruvchi 
    jarayonni qo‘shish zarurati tug‘ildi. 
    O‘yin tugaganligi haqida xabarni chaqirish uchun o‘yin oynasida matn kirituvchi “draw_text ()” 
    funksiyasini yaratib olish zarur:
    def draw_text(surf, text, size, x, y):
    Funksiya e’lon qilindi.
    font = pygame.font.Font(font_name, 
    size)
    Matn uchun shrift turi va o‘lchami 
    tanlandi.
    text_surface = font.render(text, 
    True, WHITE)
    Matn mazmuni va rangi belgilandi.
    text_rect = text_surface.get_rect()
    Matn uchun o‘yin oynasida joy ajratildi.
    text_rect.midtop = (x, y)
    Matn joylashuvi belgilandi.
    surf.blit(text_surface, text_rect)
    O‘yin oynasiga matn yozildi.


    182
    182
    182
    182
    V BOB. 
    WWW-TEXNOLOGIYA VA HTML TILI
    Matn kiritish mumkin bo‘lganidan keyin o‘yin tugaganligi haqida xabar hamda o‘yinni qayta 
    boshlash imkonini beruvchi “game_over()” funksiyasi yaratiladi:
    def game_over():
    Funksiya e’lon qilindi.
    screen.blit(cr,(0,0))
    game_o
    ver uchun oyna va uning foni 
    belgilandi.
    dr
    aw_text(screen, "O‘YIN TUGADI!", 
    64, WIDTH / 2, 100)
    O‘yin tugaganligi haqida matn yozildi.
    pygame.display.flip()
    O‘yin oynasi yangilandi.
    waiting = True
    waiting – kutish o‘zgaruvchisiga True 
    qiymati berildi.
    while waiting:
    clock.tick(FPS)
    for event in pygame.event.get():
    if event.type == pygame.QUIT:
    pygame.quit()
    O‘yin sikli tanasi.
    if event.type == pygame.KEYUP:
    Tugmacha bosilganligi tekshirildi.
    waiting = False
    Agar tugmacha bosilgan bo‘lsa, 
    waitingga False qiymati berildi.
    Bu funksiya tanasidagi “waiting” o‘zgaruvchi o‘yin siklini boshqarish uchun xizmat qiladi. 
    Uning qiymati True bo‘lganda, o‘yin to‘xtatiladi. Agar birorta tugmacha bosilsa, uning qiymati 
    Falsega aylanadi va o‘yin qayta boshlanadi. Bu esa yutqazgan foydalanuvchiga o‘yinni qayta 
    boshlash imkonini beradi.
    “game_over()” funksiyasinin ishga tushirish uchun “over” o‘zgaruvchisi yaratiladi va bu 
    funksiya o‘yin sikli tanasida e’lon qilinadi:
    over=False
    “over”ga False qiymati berildi.
    running = True
    “running”ga True qiymati berildi.
    while running:
    O‘yin sikli ishga tushdi.
    if over:
    “over” qiymati rostligi tekshirildi.
    game_over()
    “game_over()” funksiyasi ishga tushdi.
    over=False
    “over”ga False qiymati berildi.
    all_sprites = pygame.sprite.Group()
    “all_sprites” guruhi yaratildi.
    cars = pygame.sprite.Group()
    “cars” guruhi yaratildi.
    player = Player()
    “player” obyekti yaratildi.
    car=Car(enemy1,(230,0))
    “car” obyekti yaratildi.
    all_sprites.add(player)
    “player” obyekti “all_sprites” guruhiga 
    qo‘shildi.
    cars.add(car)
    “car” obyekti “all_cars” guruhiga 
    qo‘shildi.


    183
    183
    183
    183
    “over” o‘zgaruvchisiga False qiymatining berilishi, o‘yin davom etishini anglatadi. O‘yin 
    sikli tanasidagi “over” qiymati rostligini tekshirish amali o‘yin 1-marta ishga tushirilganda 
    ishlamaydi. O‘yinda to‘qnashuv yuz bersagina, “over” qiymati Truega almashadi va o‘yin sikli 
    tanasidagi “over” qiymati rostligini tekshirish amali ishga tushadi. Agar shart tasdiqlansa, 
    “game_over()” funksiyasi ishga tushadi. Funksiyadan keyingi amallar o‘yin oynasida 
    spraytlarni qayta yaratish uchun xizmat qiladi. Foydalanuvchi o‘yinni qayta boshlasa, 
    sparytlarni qayta yaratuvchi amallar ham ishga tushadi.
    AMALIY MASHG‘ULOT
    O‘tilgan mavzular, funksiya va qism dasturlardan foydalangan holda mashina yo‘li fonli o‘yin 
    oynasida 5 ta mashina sprayti yaratilsin. Asosiy sprayt oynaning quyi qismida joylashtirilsin 
    va klaviatura yordamida o‘ngga va chapga, tepaga va pastga harakatlantirilsin. Qolgan 4 
    ta sprayt tasodifiy joylashuv bo‘yicha oynaning tepa qismidan past qismiga qarab vertikal 
    yo‘nalishda uzluksiz harakatlansin. Asosiy sprayt qolgan spraytlar bilan to‘qnashganda yoki 
    yo‘l to‘siqlari bilan to‘qnashganda, o‘yin tugaganligi haqida xabar hamda o‘yinni qayta ishga 
    tushirish imkonini beruvchi oyna hosil bo‘luvchi o‘yin dasturi tuzilsin.
    import pygame
    “pygame” kutubxonasi yuklandi.
    import os
    “os” kutubxonasi yuklandi.
    import random
    “random” kutubxonasi yuklandi.
    from random import choice
    “random” kutubxonasining “choice” 
    funksiyasi yuklandi.
    WIDTH = 800
    Oyna kengligiga qiymat berildi.
    HEIGHT = 650
    Oyna balandligiga qiymat berildi.
    FPS = 40
    Kadr tezligiga qiymat berildi.
    COLOR = (0, 0, 0)
    “COLOR”ga qora rang o‘zlashtirildi.
    game_folder = os.path.dirname(__file__)
    Grafik fayllar papkasiga olib boruvchi 
    yo‘l aniqlandi.
    img_folder = os.path.join(game_folder, `img‘)
    Grafik fayllar papkasi dasturga 
    bog‘landi.
    player_img = pygame.image.load(os.path.
    join(img_folder, `car_black.png‘))
    “car_black.png” fayli “player_img” 
    o‘zgaruvchisiga yuklandi.
    player_img = pygame.transform.
    scale(player_img, (105, 150))
    “player_img” o‘lchamlari belgilandi.
    enemy1 = pygame.image.load(os.path.
    join(img_folder, `car1.png‘))
    “car1.png” fayli “enemy1” 
    o‘zgaruvchisiga yuklandi.
    enemy1 = pygame.transform.scale(enemy1, 
    (80, 150))
    “enemy1” o‘lchamlari belgilandi.
    enemy2 = pygame.image.load(os.path.
    join(img_folder, `car.png‘))
    “car2.png” fayli “enemy2” 
    o‘zgaruvchisiga yuklandi.


    184
    184
    184
    184

    Download 27,94 Mb.
    1   ...   126   127   128   129   130   131   132   133   ...   153




    Download 27,94 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Va axborot texnologiyalari 10-sinf toshkent – 2021

    Download 27,94 Mb.
    Pdf ko'rish