Python 3 va Pygame-da o'yinlarni yaratish: 1-qism



Download 105,57 Kb.
bet5/5
Sana11.03.2022
Hajmi105,57 Kb.
#491218
1   2   3   4   5
Bog'liq
Pygame

O'yin sinfi
O'yin sinfi - bu o'yinning yadrosi. Asosiy ko'chadan ishlaydi. U juda ko'p foydali xususiyatlarga ega. Uning usulini usul bilan tahlil qilaylik.
Usul 
__init__()
Pygame-ni, shrift tizimini va ovoz mikserini ishga tushiradi. Uch xil qo'ng'iroqlar kerak, chunki har bir Pygame o'yinida barcha tarkibiy qismlar ishlatilmaydi, shuning uchun biz foydalanadigan quyi tizimlarni boshqarishingiz va tegishli parametrlarga ega faqat keraklilarni ishga tushirishingiz mumkin. Usul fon rasmini, asosiy sirtni (har bir narsa chizilgan) va to'g'ri kvadrat tezligiga ega o'yin taymerini yaratadi.
Self.objects elementi ko'rsatilishi va yangilanishi kerak bo'lgan barcha o'yin ob'ektlarini saqlaydi. Turli ishlov beruvchilar muayyan hodisalarda bajarilishi kerak bo'lgan ishlov berish funktsiyalari ro'yxatini boshqaradilar.
import pygame
import sys


from collections import defaultdict
class Game:
def __init__(self,
caption,
width,
height,
back_image_filename,
frame_rate):
self.background_image = \
pygame.image.load(back_image_filename)
self.frame_rate = frame_rate
self.game_over = False
self.objects = []
pygame.mixer.pre_init(44100, 16, 2, 4096)
pygame.init()
pygame.font.init()
self.surface = pygame.display.set_mode((width, height))
pygame.display.set_caption(caption)
self.clock = pygame.time.Clock()
self.keydown_handlers = defaultdict(list)
self.keyup_handlers = defaultdict(list)
self.mouse_handlers = []
Usullari update()va draw()juda oddiy. Ular barcha boshqariladigan o'yin ob'ektlarini chetlab o'tib, ularning tegishli usullarini chaqirishadi. Agar ikkita ob'ekt ekranda bir-birining ustiga tushsa, u holda ob'ektlar ro'yxatining tartibi birinchi navbatda qaysi biri bajarilishini aniqlaydi, qolganlari qisman yoki to'liq qoplanadi.
def update(self):
for o in self.objects:
o.update()


def draw(self):
for o in self.objects:
o.draw(self.surface)
Usul handle_events()klaviatura va sichqoncha hodisalari kabi Pygame tomonidan yaratilgan hodisalarni tinglaydi. Har bir voqea uchun u tegishli turdagi hodisalarni boshqarishi kerak bo'lgan barcha ishlov berish funktsiyalarini chaqiradi.
def handle_events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
for handler in self.keydown_handlers[event.key]:
handler(event.key)
elif event.type == pygame.KEYUP:
for handler in self.keydown_handlers[event.key]:
handler(event.key)
elif event.type in (pygame.MOUSEBUTTONDOWN,
pygame.MOUSEBUTTONUP,
pygame.MOUSEMOTION):
for handler in self.mouse_handlers:
handler(event.type, event.pos)
Va nihoyat, usul run()asosiy pastadirni bajaradi. Element game_overhaqiqiy bo'lgunga qadar bajariladi . Har bir iterasyonda, bu fon tasvirini ko'rsatadi va tartibda usullari chaqiradi handle_events(), update()va draw().

Keyin u ekranni yangilaydi, ya'ni jismoniy displeyga joriy iteratsiyada ko'rsatilgan barcha tarkiblarni yozadi. Va nihoyat, lekin eng muhimi, clock.tick()keyingi iteratsiya qachon chaqirilishini boshqarish uchun usul chaqiradi .


def run(self):
while not self.game_over:
self.surface.blit(self.background_image, (0, 0))


self.handle_events()
self.update()
self.draw()


pygame.display.update()
self.clock.tick(self.frame_rate)
Xulosa
Ushbu bo'limda biz o'yinlarni dasturlash asoslarini va o'yinlarni yaratishda ishtirok etadigan barcha tarkibiy qismlarni bilib oldik. Biz, shuningdek, Pygame-ga qaradik va uni qanday o'rnatishni bilib oldik. Va nihoyat, biz o'yin arxitekturasiga kirib, papka tuzilishini, sinflarini GameObjectva O'yinni o'rganib chiqdik .Ikkinchi bo'limda biz TextObject ekranda matnni namoyish qilish uchun ishlatiladigan sinfni ko'rib chiqamiz . Asosiy oynani, shu jumladan fon rasmini yaratamiz, so'ngra ob'ektlarni (to'p va raketka) qanday chizishni bilib olamiz.
Download 105,57 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish