Va axborot texnologiyalari 10-sinf toshkent – 2021



Yüklə 27,94 Mb.
Pdf görüntüsü
səhifə130/153
tarix05.09.2023
ölçüsü27,94 Mb.
#141598
1   ...   126   127   128   129   130   131   132   133   ...   153
10-sinf informatika ..

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

Yüklə 27,94 Mb.

Dostları ilə paylaş:
1   ...   126   127   128   129   130   131   132   133   ...   153




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin