60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
from itertools import cycle, repeat
|
|
from pathlib import Path
|
|
|
|
import pygame
|
|
from more_itertools import flatten
|
|
|
|
from game import Game
|
|
|
|
|
|
class Creeper(Game):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.background = pygame.Surface(self.screen.get_size())
|
|
self.background.fill((0, 255, 247))
|
|
self.x, self.y = [i / 2 for i in self.screen.get_size()]
|
|
self.spot = pygame.image.load("assets/spotlight.png")
|
|
self.darkness = pygame.Surface(self.screen.get_size()).convert_alpha()
|
|
self.light_power = 1.1
|
|
self.creepers = cycle(
|
|
flatten(
|
|
[
|
|
repeat(pygame.image.load(img), 10)
|
|
for img in Path("assets/creeper/idle/").glob("*.png")
|
|
]
|
|
)
|
|
)
|
|
self.creeper = pygame.image.load("assets/creeper/idle/1.png")
|
|
|
|
def game(self):
|
|
self.screen.blit(self.background, (0, 0))
|
|
creeper = next(self.creepers)
|
|
self.screen.blit(
|
|
creeper,
|
|
(self.x - creeper.get_size()[0] / 2, self.y - creeper.get_size()[1] / 2)
|
|
# pygame.transform.scale(next(self.creepers), (96, 128)), (self.x, self.y)
|
|
)
|
|
self.darkness.fill((0, 0, 0))
|
|
if self.light_power < 500:
|
|
self.light_power = min(self.light_power ** 1.1, 500)
|
|
self.darkness.blit(
|
|
pygame.transform.smoothscale(
|
|
self.spot, [self.light_power, self.light_power]
|
|
),
|
|
(self.x - self.light_power / 2, self.y - self.light_power / 2),
|
|
)
|
|
self.screen.blit(
|
|
self.darkness,
|
|
(0, 0),
|
|
special_flags=pygame.BLEND_RGBA_MULT,
|
|
)
|
|
keys = pygame.key.get_pressed()
|
|
if keys[pygame.K_a]:
|
|
self.x -= 10
|
|
if keys[pygame.K_d]:
|
|
self.x += 10
|
|
|
|
|
|
if __name__ == "__main__":
|
|
creeper = Creeper()
|
|
creeper.run()
|