Untitled
unknown
plain_text
10 months ago
3.6 kB
15
Indexable
from random import randint
from pygame import *
# фонова музика
mixer.init()
mixer.music.load('space.ogg')
#mixer.music.play()
fire_sound = mixer.Sound('fire.ogg')
# нам потрібні такі картинки:
img_back = "galaxy.jpg" # фон гри
img_hero = "rocket.png" # герой
img_enemy = "ufo.png"
# клас-батько для інших спрайтів
class GameSprite(sprite.Sprite):
# конструктор класу
def __init__(self, player_image, player_x, player_y, size_x, size_y, player_speed):
# викликаємо конструктор класу (Sprite):
sprite.Sprite.__init__(self)
# кожен спрайт повинен зберігати властивість image - зображення
self.image = transform.scale(
image.load(player_image), (size_x, size_y))
self.speed = player_speed
# кожен спрайт повинен зберігати властивість rect - прямокутник, в який він вписаний
self.rect = self.image.get_rect()
self.rect.x = player_x
self.rect.y = player_y
# метод, що малює героя на вікні
def reset(self):
window.blit(self.image, (self.rect.x, self.rect.y))
# клас головного гравця
class Player(GameSprite):
# метод для керування спрайтом стрілками клавіатури
def update(self):
keys = key.get_pressed()
if keys[K_LEFT] and self.rect.x > 5:
self.rect.x -= self.speed
if keys[K_RIGHT] and self.rect.x < win_width - 80:
self.rect.x += self.speed
# метод "постріл" (використовуємо місце гравця, щоб створити там кулю)
def fire(self):
pass
class Enemy(GameSprite):
def update(self):
self.rect.y += self.speed
if self.rect.y > win_height:
self.rect.y = 0
self.rect.x = randint(100, win_width-100)
# створюємо віконце
win_width = 700
win_height = 500
display.set_caption("Shooter")
window = display.set_mode((win_width, win_height))
background = transform.scale(image.load(img_back), (win_width, win_height))
# створюємо спрайти
ship = Player(img_hero, 5, win_height - 100, 80, 100, 10)
# змінна "гра закінчилася": як тільки вона стає True, в основному циклі перестають працювати спрайти
finish = False
# Основний цикл гри:
run = True # прапорець скидається кнопкою закриття вікна
enemies = sprite.Group()
for i in range (6):
enemy = Enemy(img_enemy,randint(100, win_width-100), 0, 80, 50, randint(3,6) )
enemies.add(enemy)
while run:
# подія натискання на кнопку Закрити
for e in event.get():
if e.type == QUIT:
run = False
if not finish:
# оновлюємо фон
window.blit(background, (0, 0))
enemies.update()
# рухи спрайтів
ship.update()
enemies.draw(window)
# оновлюємо їх у новому місці при кожній ітерації циклу
ship.reset()
display.update()
# цикл спрацьовує кожні 0.05 секунд
time.delay(50)
Editor is loading...
Leave a Comment