def start_end_screen(intro_text, button_text): FPS = 60 clock = pygame.time.Clock() screen = pygame.display.set_mode(size) from class_blawhi import load_image fon = load_image('background.png') screen.blit(fon, (0, 0)) font = pygame.font.SysFont('serif', 40) text_coord = 100 for line in intro_text: string_rendered = font.render(line, 1, (70, 70, 70)) intro_rect = string_rendered.get_rect() intro_rect.top = text_coord intro_rect.x = screen.get_width() / 2 - string_rendered.get_width() / 2 text_coord += 50 screen.blit(string_rendered, intro_rect) start_btn = font.render(button_text, 1, (70, 70, 70)) start_rect = start_btn.get_rect() start_rect.top = 500 start_rect.x = screen.get_width() / 2 - start_btn.get_width() / 2 screen.blit(start_btn, start_rect) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: terminate() elif event.type == pygame.MOUSEBUTTONDOWN: if start_rect.left <= event.pos[0] <= start_rect.right \ and start_rect.top <= event.pos[1] <= start_rect.bottom: return pygame.display.flip() clock.tick(FPS)
class Platform(pygame.sprite.Sprite): image = load_image('platform.png') def __init__(self, *group, location=(0, 0)): super().__init__(*group) self.rect = self.image.get_rect() self.rect.left, self.rect.top = location
class FlagButtons(pygame.sprite.Sprite): images = [ load_image('button.png', colorkey=-1), load_image('buttonRed.png', colorkey=-1), load_image('buttonGreen.png', colorkey=-1), load_image('buttonBlue.png', colorkey=-1) ] def __init__(self, num=0): super().__init__(all_sprites) self.add(flagRGB) if RGButtons[num] == 1: self.image = FlagButtons.images[num + 1] else: self.image = FlagButtons.images[0] self.rect = self.image.get_rect() self.rect.x = 780 self.rect.y = 20 * num
class Buttons(pygame.sprite.Sprite): images = [ load_image('buttonRed.png', colorkey=-1), load_image('buttonGreen.png', colorkey=-1), load_image('buttonBlue.png', colorkey=-1) ] def __init__(self, *group, num=0, location=(0, 0)): super().__init__(*group) self.image = Buttons.images[num] self.num = num self.rect = self.image.get_rect() self.mask = pygame.mask.from_surface(self.image) self.rect.left, self.rect.top = location self.group = group[0] def update(self, RGButtons, all_sprites): if RGButtons[self.num]: self.group.remove(self) all_sprites.remove(self)
class PlatformVer(pygame.sprite.Sprite): image = load_image('platform.png') def __init__(self, *group, location=(0, 0), lenn=100): super().__init__(*group) self.rect = self.image.get_rect() self.orig = location[1] self.lenn = lenn self.fl = 1 self.rect.left, self.rect.top = location def update(self): if self.rect.top == self.orig: self.fl = -1 if self.rect.top == self.orig - self.lenn: self.fl = 1 self.rect.top += self.fl * 1
def level(screen, platform_coords, RGB_coords, platform_hor_coords, platform_ver_coords, level_borders): from class_blawhi import load_image bg_image = load_image('background.png') background = pygame.Surface(screen.get_size()) background.blit(bg_image, (0, 0)) all_sprites = pygame.sprite.Group() from class_buttonsForBlawhi import FlagButtons, flagRGB, Buttons, RGButtons RGB = pygame.sprite.Group() RGB_list = [] for i in range(3): FlagButtons(i) RGB_list.append(Buttons(RGB, num=i, location=RGB_coords[i])) from class_blawhi import Blawhi blawhi_player = Blawhi(all_sprites) platforms = pygame.sprite.Group() platforms_hor = pygame.sprite.Group() platforms_ver = pygame.sprite.Group() from class_platform import Platform, PlatformHor, PlatformVer for i in platform_coords: Platform(platforms, location=i) for i in platform_hor_coords: PlatformHor(platforms_hor, location=i) for i in platform_ver_coords: PlatformVer(platforms_ver, location=i) all_sprites.add(*platforms.sprites()) all_sprites.add(*platforms_hor.sprites()) all_sprites.add(*platforms_ver.sprites()) all_sprites.add(*RGB.sprites()) running = True left, right, up = False, False, False RGButtons[0], RGButtons[1], RGButtons[2] = 0, 0, 0 # так надо. FPS = 60 clock = pygame.time.Clock() from class_camera import Camera camera = Camera(level_borders) count = 0 from class_particle import Particle, particles while running: for event in pygame.event.get(): if event.type == pygame.QUIT: terminate() if event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT: left = True if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT: right = True if event.type == pygame.KEYUP and event.key == pygame.K_RIGHT: right = False if event.type == pygame.KEYUP and event.key == pygame.K_LEFT: left = False if event.type == pygame.KEYDOWN and event.key == pygame.K_UP: up = True if event.type == pygame.KEYUP and event.key == pygame.K_UP: up = False copy = RGButtons[::] screen.blit(background, (0, 0)) blawhi_player.update(left, right, up, platforms, RGB_list, RGB_coords, platforms_hor, platforms_ver, camera, all_sprites) # if RGButtons != copy: for i in range(3): if RGButtons[i] != copy[i]: what = i Particle.create_particles((790, 20 * what - 10)) if sum(RGButtons) != 0: particles.draw(screen) particles.update() platforms_hor.update() platforms_ver.update() flagRGB.empty() for i in range(3): FlagButtons(i) RGB.update(RGButtons, all_sprites) flagRGB.draw(screen) all_sprites.draw(screen) if blawhi_player.all_buttons_collected: count += 1 if count == 20: running = False pygame.display.flip() clock.tick(FPS)