172
172
172
172
V BOB.
WWW-TEXNOLOGIYA VA HTML TILI
ESLAB QOLING
Agar FPSning qiymati 30
qilib belgilansa, demak, bitta kadr uzunligi 1/30, ya’ni 0,03
sekundni tashkil qiladi. Agar kod sikli (yangilash, ko‘rsatish va h. k.) 0,01 sekundni
tashkil qilsa, u holda pygame 0,02 sekund davomida pauza qiladi.
AMALIY FAOLIYAT
Yuqoridagi funksiya va qism dasturlardan foydalangan holda mashina yo‘li fonli
o‘yin oynasida mashina sprayti oynaning tepa qismidan
past qismi tomon uzluksiz
harakatlanuvchi dastur kodini yozing.
import pygame
“pygame” kutubxonasi yuklandi.
import os
“os” kutubxonasi yuklandi.
WIDTH = 800
Oyna kengligiga qiymat berildi.
HEIGHT = 650
Oyna balandligiga qiymat berildi.
FPS = 30
Kadr tezligiga qiymat berildi.
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.png'))
car.png fayli player_img
o‘zgaruvchisiga yuklandi.
player_img = pygame.transform.
scale(player_img, (105, 150))
Grafik faylning o‘lchamlari belgilandi.
bg = pygame.image.
load("background.png")
O‘yin oynasi uchun bg o‘zgaruvchisiga
rasm yuklanadi.
class Player(pygame.sprite.Sprite):
Sinf e’lon qilindi.
def __init__(self):
init funksiyasi ishga tushdi.
pygame.sprite.Sprite.__init__(self)
“Self” parametriga “Sprite” sinfi
funksiyalari biriktirildi.
self.image = player_img
Spraytga rasm yuklandi.
belgilash uchun FPS atamasi ishlatiladi. FPS sikl bir sekundda
necha marta takrorlanishi
kerakligini belgilaydi. FPS qiymati dastur bosh qismida o‘rnatiladi. tick() buyrug‘i esa PyGame
moduliga FPS ko‘rsatkichini yuboradi.
O‘yin oynasi yaratilishi bosqichida biror o‘zgaruvchiga tezlikni boshqarish uchun pygame.time.
Clock() moduli quyidagicha o‘zlashtiriladi:
clock = pygame.time.Clock()
O‘yin sikli tanasida tick() buyrug‘i orqali o‘yin tezligi beriladi:
clock.tick(FPS).
173
173
173
173
self.rect = self.image.get_rect()
Sprayt qobig‘i belgilandi.
self.rect.center = (350, 100)
Spraytning
joylashuv koordinatasi
berildi.
def update(self):
update funksiyasi e’lon qilindi.
self.rect.y += 5
rect.y parametri 5 ga oshirildi.
if self.rect.top > HEIGHT:
Spraytning yuqori qirrasi oyna
balandligidan katta ekanligi tekshirildi.
self.rect.bottom = 0
Shart rost bo‘lsa, spraytning o‘ng
qirrasi qiymatiga 0 o‘zlashtirildi.
pygame.init()
PyGame ishga tushadi.
screen = pygame.display.set_
mode((WIDTH, HEIGHT))
O‘yin oynasi o‘lchamlari berildi.
pygame.display.set_caption("Race")
O‘yin sarlavhasi berildi.
clock = pygame.time.Clock()
Tezlikni boshqarish o‘zgaruvchisi e’lon
qilindi.
all_sprites = pygame.sprite.Group()
Spraytlar guruhi yaratildi.
player = Player()
Player obyekti “player” identifikatoriga
o‘zlashtirildi.
all_sprites.add(player)
“Player” spraytlar guruhiga qo‘shiladi.
running = True
“running”ga True qiymati beriladi.
while running:
O‘yin sikli ishga tushdi.
clock.tick(FPS)
O‘yin tezligi PyGame ga e’lon qilindi.
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
Sikl tanasi.
all_sprites.update()
Spraytlar guruhi yangilanadi.
screen.blit(bg, (0, 0))
Fonga rasm o‘rnatiladi.
all_sprites.draw(screen)
Spraytlar guruhi o‘yin oynasiga
chiziladi.
pygame.display.flip()
O‘yin oynasi yangilanadi.
pygame.quit()
O‘yindan chiqiladi.
Dastur
ishga tushirilganda, qizil rangli
mashina sprayti vertikal yo‘nalish
bo‘ylab uzluksiz harakatlanadi.