Ejemplo n.º 1
0
 def fire(self):
     if self.limit_bull > 0 and time_t() - self.last_time > limit_time:
         fire_sound.play()
         bullet = Bullet(img_bullet,
                         x=self.rect.centerx,
                         y=self.rect.top,
                         size_x=15,
                         size_y=20,
                         speed=-15)
         self.bullets.add(bullet)
         self.limit_bull -= 1
         self.last_time = time_t()
Ejemplo n.º 2
0
def next_frame():
    global limit_bull, last_time, run
    # событие нажатия на кнопку Закрыть
    for e in event.get():
        if e.type == QUIT:
            run = False
        # событие нажатия на пробел - спрайт стреляет
        if e.type == KEYDOWN and e.key == K_SPACE and not finish:
            if limit_bull > 0 and time_t() - last_time > limit_time:
                ship.fire()
                limit_bull -= 1
                last_time = time_t()
    display.update()
    clock.tick(30) 
Ejemplo n.º 3
0
    def update(self):
        if sprite.collide_rect(self.scaner, ship) and time_t() - self.last_shot > 0.3:
            self.fire()
            self.last_shot = time_t()
        if self.direction == 'left' and self.rect.x <= self.left:
            self.direction = "right"
        elif self.direction == 'right' and self.rect.x >= self.right:
            self.direction = "left"

        if self.direction == "left":
            self.rect.x -= self.speed
        elif self.direction == "right":
            self.rect.x += self.speed
        self.scaner.rect.centerx = self.rect.centerx
Ejemplo n.º 4
0
 def update(self):
     if (self.armor and sprite.collide_rect(self.goal, ship)
             and time_t() - self.last_time > pause_fire * 5):
         self.fire()
         self.armor -= 1
         self.last_time = time_t()
     self.rect.y += self.speed
     global lost
     # исчезает, если дойдет до края экрана
     if self.rect.y > win_height:
         self.rect.x = randint(80, win_width - 80)
         self.goal.rect.x = self.rect.centerx
         self.rect.y = 0
         lost = lost + 1
         self.armor = 3
Ejemplo n.º 5
0
 def __init__(self, player_image, x, y, size_x, size_y, speed):
     # Вызываем конструктор класса (Sprite):
     super().__init__(player_image, x, y, size_x, size_y, speed)
     self.bullets = sprite.Group()
     self.last_time = time_t()
     self.life = None
     self.limit_bull = None
Ejemplo n.º 6
0
    def update(self):
        if not self.hide:
            if (self.armor and sprite.collide_rect(self.goal, ship)
                    and time_t() - self.last_time > pause_fire * 5):
                self.fire()
                self.armor -= 1
                self.last_time = time_t()
            if self.side == "left" and self.rect.x <= self.left:
                self.side = "right"
            if self.side == "right" and self.rect.x >= self.right:
                self.side = "left"

            if self.side == "left":
                self.rect.x -= self.speed
            else:
                self.rect.x += self.speed
            self.goal.rect.x = self.rect.centerx
Ejemplo n.º 7
0
 def update(self):
     if self.i < len(self.exp_img) and time_t() - self.last_time > 0.15:
         x, y = self.rect.centerx, self.rect.centery
         self.image = self.exp_img[self.i]
         self.rect = self.image.get_rect()
         self.rect.centerx, self.rect.centery = x, y
         self.i += 1
     elif self.i == len(self.exp_img):
         self.kill()
Ejemplo n.º 8
0
 def __init__(self, boss_image, x, y, size_x, size_y, speed):
     GameSprite.__init__(self, boss_image, x, y, size_x, size_y, speed)
     self.scaner = Scaner(x + size_x // 2)
     self.right = win_width - 100
     self.left = 100
     self.direction = "right" * randint(0, 1) or "left"
     self.health = 10
     self.last_shot = time_t()
     self.bulletes = sprite.Group()
Ejemplo n.º 9
0
 def update(self):
     if not self.hide:
         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 - size_x_sh:
             self.rect.x += self.speed
         if keys[K_UP] and self.rect.y > 5:
             self.rect.y -= self.speed // 2
         if keys[K_DOWN] and self.rect.y < win_height - size_y_sh:
             self.rect.y += self.speed
         # событие нажатия на пробел - спрайт стреляет
         if self.limit_bull and keys[
                 K_SPACE] and time_t() - self.last_time > pause_fire:
             self.fire()
             self.limit_bull -= 1
             self.last_time = time_t()
     elif self.i < 10:
         self.i += 1
     else:
         self.dead = True
     self.bullets.update()
Ejemplo n.º 10
0
 def __init__(self, x, y) -> None:
     super().__init__()
     size_x, size_y = size_x_enemy // 2, size_y_enemy // 2
     self.bum = [
         transform.scale(image.load(img_bum), (size_x, size_y)),
         transform.scale(image.load(img_bum), (size_x + 15, size_y + 15)),
         transform.scale(image.load(img_bum), (size_x + 30, size_y + 30)),
         transform.scale(image.load(img_bum), (size_x + 40, size_y + 40)),
         transform.scale(image.load(img_bum), (size_x + 50, size_y + 50))
     ]
     self.i = 1
     self.last_time = time_t()
     self.image = self.bum[0]
     self.rect = self.image.get_rect()
     self.rect.centerx, self.rect.centery = x, y
Ejemplo n.º 11
0
    def __init__(self, player_image, x, y, size_x, size_y, speed, direction):
        # Вызываем конструктор класса (Sprite):
        #sprite.Sprite.__init__(self)
        super().__init__()
        self.direction = direction
        self.last_time = time_t()
        # каждый спрайт должен хранить свойство image - изображение
        self.image = transform.scale(image.load(player_image),
                                     (size_x, size_y))
        self.speed = speed

        # каждый спрайт должен хранить свойство rect - прямоугольник, в который он вписан
        self.rect = self.image.get_rect()
        self.rect.x = x
        self.rect.y = y
Ejemplo n.º 12
0
 def __init__(self, x, y) -> None:
     super().__init__()
     size_x, size_y = 40, 25
     exp_sound.play()
     self.exp_img = [transform.scale(image.load(img_exp), (size_x, size_y)),
                      transform.scale(image.load(img_exp), (size_x + 10, size_y + 5)),
                      transform.scale(image.load(img_exp), (size_x + 20, size_y + 10)),
                      transform.scale(image.load(img_exp), (size_x + 30, size_y + 15)),
                      transform.scale(image.load(img_exp), (size_x + 40, size_y + 25)),
                      transform.scale(image.load(img_exp), (size_x + 50, size_y + 35))]
     self.image = self.exp_img[0]
     self.rect = self.image.get_rect()
     self.rect.centerx = x
     self.rect.centery = y
     self.i = 1
     self.last_time = time_t()
Ejemplo n.º 13
0
 def __init__(self, x, y, size_x, size_y) -> None:
     super().__init__()
     size_x //= 2
     size_y //= 2
     self.boom_imgs = [
         transform.scale(image.load(img_boom), (size_x, size_y)),
         transform.scale(image.load(img_boom), (size_x + 5, size_y + 5)),
         transform.scale(image.load(img_boom), (size_x + 15, size_y + 10)),
         transform.scale(image.load(img_boom), (size_x + 25, size_y + 20)),
         transform.scale(image.load(img_boom), (size_x + 35, size_y + 25)),
         transform.scale(image.load(img_boom), (size_x + 40, size_y + 30))
     ]
     self.image = self.boom_imgs[0]
     self.rect = self.image.get_rect()
     self.rect.centerx, self.rect.centery = x, y
     self.i = 1
     self.last_time = time_t()
     boom_sound.play()
Ejemplo n.º 14
0
    if finish != True:
        player.update()
        monsters.update()
        draw_all()

        #Ситуация "Проигрыш"
        if (sprite.spritecollide(player, monsters,
                                 dokill=False)):  # для грцппы
            kick.play()
            player.change_image(new_image="sprite2.png", new_size=hero_size)
            draw_all()
            draw_final(lose)
            sleep(1)
            player.change_image(new_image="hero.png", new_size=hero_size)
            player.rect.x, player.rect.y = start_x, start_y

        if (sprite.spritecollide(player, traps, dokill=False)):  # для грцппы
            player.speed = 1
        else:
            player.speed = 5

        #Ситуация "Выигрыш"
        if sprite.collide_rect(player, final):
            finish = True
            draw_final(win)
            money.play()
            last_time = time_t()
    elif time_t() - last_time > 5:
        game = False
    display.update()
    clock.tick(FPS)
Ejemplo n.º 15
0
# Создаем окошко
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, x=5, y=win_height - 100, size_x=80, size_y=100, speed=10)
ship.bullets = sprite.Group()
# создание группы спрайтов-врагов
monsters = sprite.Group()
boss = Boss(img_enemy, x=win_width//2, y=70, size_x=120, size_y=80, speed=12)
booms = sprite.Group()

start_game()

last_time = time_t() 
clock = time.Clock()
# Основной цикл игры:
run = True # флаг сбрасывается кнопкой закрытия окна
while run:
    # сама игра: действия спрайтов, проверка правил игры, перерисовка
    if not finish:
        main_update()

        # проверка столкновения пули и монстров (и монстр, и пуля при касании исчезают)
        collides = sprite.groupcollide(monsters, ship.bullets, False, True)
        score = monsters_collide_actions(collides, score)

        if final and boss.health > 0 and sprite.spritecollide(boss, ship.bullets, True):
            boss.health -= 1
            booms.add(Boom(x=boss.rect.centerx, y=boss.rect.bottom, 
Ejemplo n.º 16
0

ship = Player(img_hero, x=5, y=win_height - 120, size_x=80, size_y=100, speed=15)
bullets = sprite.Group()
exps = sprite.Group()

monsters = sprite.Group()
for i in range(1, 8):
    monster = Enemy(img_enemy,
        x=randint(80, win_width - 80), y=-40, size_x=80, size_y=50, speed=randint(1, 3))
    monsters.add(monster)

run = True
finish = False

last_time = time_t()
while run:
    for e in event.get():
        if e.type == QUIT:
            run = False
        if e.type == KEYDOWN and e.key == K_SPACE and not finish:
            if limit_bull > 0 and time_t() - last_time > limit_time:
                ship.fire()
                limit_bull -= 1
                last_time = time_t()

    if not finish:
        window.blit(background,(0,0))

        text = font2.render("Счет: " + str(score), 1, WHITE_COLOR)
        window.blit(text, (10, 20))
Ejemplo n.º 17
0
 def restart(self, max_life, max_bull):
     self.last_time = time_t()
     self.life = max_life
     self.limit_bull = max_bull
     self.rect.centerx = win_width // 2