def create_credits(self): self.image = pygame.Surface((1024, 720 * 2)) self.rect = pygame.Rect((0, 0, 1024, 720)) font = media.get_font(32) s = font.render("Congratulations!", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 20 + 720)) font = media.get_font(16) s = font.render("Hitler has been defeated!", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 120 + 720)) s = font.render("Wikipedia is free again!", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 150 + 720)) s = font.render("Entry for pyweek #20", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 220 + 720)) s = font.render("https://github.com/benoxoft/Wikipedia1942", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 250 + 720)) s = font.render("All art content from opengameart.org", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 350 + 720)) s = font.render("opengameart.org/content/rotating-crystal-animation-8-step", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 380 + 720)) s = font.render("opengameart.org/content/aircrafts", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 410 + 720)) s = font.render("opengameart.org/content/orthographic-outdoor-tiles", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 440 + 720)) s = font.render("opengameart.org/content/fluffy-clouds", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 470 + 720)) s = font.render("opengameart.org/content/10-basic-message-boxes", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 500 + 720)) s = font.render("opengameart.org/content/explosion-animated", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 530 + 720)) s = font.render("opengameart.org/content/skull", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 560 + 720)) s = font.render("opengameart.org/content/lava-background-6-screen-resolutions", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 590 + 720)) s = font.render("opengameart.org/content/confrontation", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 620 + 720)) s = font.render("Thank you for playing!", True, GEM_FONT_COLOR) self.image.blit(s, ((1024 - s.get_rect().w) / 2, 670 + 720)) self.show_credits = True
def create_previous_button(self): buttons_font = media.get_font(16) sprevious = buttons_font.render("Previous", True, GEM_FONT_COLOR) self.prev_rect = pygame.Rect( (self.rect.x + 430, self.rect.y + 594, sprevious.get_rect().w, sprevious.get_rect().h) ) return (sprevious, (430, 594))
def show_menu(self): self.show_game_title() font = media.get_font(8 * gl.RESIZE_FACTOR) s = font.render("Select how many birds", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 90 * gl.RESIZE_FACTOR)) if self.cursor_pos == 0: s = font.render("-> 2 birds", True, (255, 255, 255)) else: s = font.render(" 2 birds", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 100 * gl.RESIZE_FACTOR)) if self.cursor_pos == 1: s = font.render("-> 3 birds", True, (255, 255, 255)) else: s = font.render(" 3 birds", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 110 * gl.RESIZE_FACTOR)) if self.cursor_pos == 2: s = font.render("-> 4 birds", True, (255, 255, 255)) else: s = font.render(" 4 birds", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 120 * gl.RESIZE_FACTOR))
def show_game_over(self): font = media.get_font(8 * gl.RESIZE_FACTOR) if self.game_over == 1: s = font.render("GAME OVER!", True, (255, 255, 255)) elif self.game_over == 2: s = font.render("YOU WON!", True, (255, 255, 255)) elif self.game_over == 3: s = font.render("EVERYBIRD IS DEAD!", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 90 * gl.RESIZE_FACTOR)) if self.cursor_pos == 0: s = font.render("-> play again ", True, (255, 255, 255)) else: s = font.render(" play again ", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 100 * gl.RESIZE_FACTOR)) if self.cursor_pos == 1: s = font.render("-> back to main menu", True, (255, 255, 255)) else: s = font.render(" back to main menu", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 110 * gl.RESIZE_FACTOR)) if self.cursor_pos == 2: s = font.render("-> quit ", True, (255, 255, 255)) else: s = font.render(" quit ", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 120 * gl.RESIZE_FACTOR))
def show_game_over(self): font = media.get_font(8 * gl.RESIZE_FACTOR) if self.game_over == 1: s = font.render("GAME OVER!", True, (255,255,255)) elif self.game_over == 2: s = font.render("YOU WON!", True, (255,255,255)) elif self.game_over == 3: s = font.render("EVERYBIRD IS DEAD!", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 90 * gl.RESIZE_FACTOR)) if self.cursor_pos == 0: s = font.render("-> play again ", True, (255,255,255)) else: s = font.render(" play again ", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 100 * gl.RESIZE_FACTOR)) if self.cursor_pos == 1: s = font.render("-> back to main menu", True, (255,255,255)) else: s = font.render(" back to main menu", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 110 * gl.RESIZE_FACTOR)) if self.cursor_pos == 2: s = font.render("-> quit ", True, (255,255,255)) else: s = font.render(" quit ", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 120 * gl.RESIZE_FACTOR))
def create_title(self): title_font = media.get_font(32) if self.level_cleared: title = title_font.render("Page cleared!", True, GEM_FONT_COLOR) else: title = title_font.render("Warp zone", True, GEM_FONT_COLOR) return (title, ((self.base_image.get_rect().w - title.get_rect().w) / 2, 48))
def draw_life_bar(self): font = media.get_font(8) s = font.render("Life:", True, GEM_FONT_COLOR) self.image.blit(s, (812, 0)) for i in range(0, self.current_life): bar = pygame.Surface((10, 38)) bar.fill((200, 30, 30)) self.image.blit(bar, (812 + 18 * i, 10))
def create_image(self): self.image = pygame.Surface((self.base_image.get_rect().w, self.base_image.get_rect().h)) self.image.blit(self.base_image, (0, 0)) f = media.get_font(32) s = f.render("Game Over!!", True, GEM_FONT_COLOR) self.image.blit(s, (150, 56)) buttons = media.get_font(16) s = buttons.render("Try Again", True, GEM_FONT_COLOR) self.image.blit(s, (120, 312)) self.try_again_rect = pygame.Rect((self.rect.x + 120, self.rect.y + +312, s.get_rect().w, s.get_rect().h)) s = buttons.render("Quit", True, GEM_FONT_COLOR) self.image.blit(s, (464, 312)) self.quit_rect = pygame.Rect((self.rect.x + 464, self.rect.y + 312, s.get_rect().w, s.get_rect().h)) colorkey = self.image.get_at((0, 0)) self.image.set_colorkey(colorkey, pygame.RLEACCEL)
def render_page(self): item_font = media.get_font(9) page_items = self.pages[self.current_page - 1].split("\n") for i in range(0, len(page_items)): y = 140 + 24 * i item_rect = pygame.Rect((self.rect.x + 48, self.rect.y + y, 700, 24)) item = item_font.render(page_items[i], True, GEM_FONT_COLOR) self.image.blit(item, (56, y + 8))
def show_demo_message(self): self.show_game_title() font = media.get_font(8 * gl.RESIZE_FACTOR) s = font.render("press <space> to start", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 90 * gl.RESIZE_FACTOR)) s = font.render("press <ESC> to quit anytime", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 100 * gl.RESIZE_FACTOR)) s = font.render("1,2,3 change screen resolution", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 110 * gl.RESIZE_FACTOR))
def create_title(self): title_font = media.get_font(32) if self.current_page == 1: s = "Introduction" elif self.current_page == 2: s = "Gameplay" else: s = "Power-ups" title = title_font.render(s, True, GEM_FONT_COLOR) return (title, ((self.base_image.get_rect().w - title.get_rect().w) / 2, 48))
def create_next_button(self): buttons_font = media.get_font(16) if self.current_page == self.count_pages(): snext = buttons_font.render("Close", True, GEM_FONT_COLOR) self.next_rect = pygame.Rect((self.rect.x + 648, self.rect.y + 594, snext.get_rect().w, snext.get_rect().h)) return (snext, (648, 594)) else: snext = buttons_font.render("Next", True, GEM_FONT_COLOR) self.next_rect = pygame.Rect((self.rect.x + 660, self.rect.y + 594, snext.get_rect().w, snext.get_rect().h)) return (snext, (660, 594))
def create_yes(self): buttons_font = media.get_font(16) ok = buttons_font.render("Yes", True, GEM_FONT_COLOR) self.ok_rect = pygame.Rect( ( self.owner.rect.x + self.rect.x + 328, self.owner.rect.y + self.rect.y + 256, ok.get_rect().w, ok.get_rect().h, ) ) return (ok, (328, 256))
def create_no(self): buttons_font = media.get_font(16) cancel = buttons_font.render("No", True, GEM_FONT_COLOR) self.cancel_rect = pygame.Rect( ( self.owner.rect.x + self.rect.x + 116, self.owner.rect.y + self.rect.y + 256, cancel.get_rect().w, cancel.get_rect().h, ) ) return (cancel, (116, 256))
def show_demo_message(self): self.show_game_title() font = media.get_font(8 * gl.RESIZE_FACTOR) s = font.render("press <space> to start", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 90 * gl.RESIZE_FACTOR)) s = font.render("press <ESC> to quit anytime", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 100 * gl.RESIZE_FACTOR)) s = font.render("1,2,3 change screen resolution", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 110 * gl.RESIZE_FACTOR))
def show_help(self): self.show_game_title() font = media.get_font(8 * gl.RESIZE_FACTOR) s = font.render("You are the green bird", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 90 * gl.RESIZE_FACTOR)) s = font.render("Use a, d and w to move", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 100 * gl.RESIZE_FACTOR)) s = font.render("<space> create a bomb", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 110 * gl.RESIZE_FACTOR)) s = font.render("press it again to throw it", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 120 * gl.RESIZE_FACTOR)) s = font.render("press <space> to continue", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 130 * gl.RESIZE_FACTOR))
def __init__(self, gem): pygame.sprite.Sprite.__init__(self) font = media.get_font(GEM_FONT_SIZE) self.image = font.render(gem.name, True, GEM_FONT_COLOR) self.rect = pygame.Rect( ( gem.rect.x - self.image.get_rect().w / 2, gem.rect.y + gem.size, self.image.get_rect().w, self.image.get_rect().h, ) ) self.speed = gem.speed self.gem = gem
def show_game_title(self): font = media.get_font(8 * gl.RESIZE_FACTOR) s = font.render("BOMBERBIRDS", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 20 * gl.RESIZE_FACTOR)) s = font.render("entry for pyweek #18", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 30 * gl.RESIZE_FACTOR)) s = font.render("by Benoit <benoxoft> Paquet", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 40 * gl.RESIZE_FACTOR)) s = font.render("music from opengameart.org", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 194 * gl.RESIZE_FACTOR)) s = font.render("title song by bart", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 204 * gl.RESIZE_FACTOR)) s = font.render("game song by FoxSynergy", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 214 * gl.RESIZE_FACTOR))
def update(self, *args): if not self.updated: return self.image = pygame.Surface((self.rect.w, self.rect.h)).convert() colorkey = self.base_image.get_at((0, 0)) self.image.fill(colorkey) self.image.blit(self.base_image, (0, 0)) font = media.get_font(GEM_FONT_SIZE) page = font.render("Page: " + self.current_page, True, GEM_FONT_COLOR) self.image.blit(page, (16, 14)) links = font.render("Gems left: " + str(self.links_left) + " / " + str(self.total_links), True, GEM_FONT_COLOR) self.image.blit(links, (16, 28)) collected = font.render("Collected: " + str(self.collected), True, GEM_FONT_COLOR) self.image.blit(collected, (220, 28)) self.draw_life_bar() colorkey = self.base_image.get_at((0, 0)) self.image.set_colorkey(colorkey, pygame.RLEACCEL)
def render_page(self): item_font = media.get_font(8) page_items = self.found_links[16 * (self.current_page - 1) : 16 * self.current_page] for i in range(0, len(page_items)): y = 140 + 24 * i item_rect = pygame.Rect((self.rect.x + 48, self.rect.y + y, 700, 24)) item = item_font.render(page_items[i], True, GEM_FONT_COLOR) if not self.messagebox and item_rect.collidepoint(pygame.mouse.get_pos()): selitem = pygame.Surface((item_rect.w, item_rect.h)) selitem.fill((50, 155, 50)) selitem.blit(item, (8, 8)) self.image.blit(selitem, (48, y)) else: self.image.blit(item, (56, y + 8)) self.items_rect.append((page_items[i], item, item_rect))
def show_help(self): self.show_game_title() font = media.get_font(8 * gl.RESIZE_FACTOR) s = font.render("You are the green bird", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 90 * gl.RESIZE_FACTOR)) s = font.render("Use a, d and w to move", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 100 * gl.RESIZE_FACTOR)) s = font.render("<space> create a bomb", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 110 * gl.RESIZE_FACTOR)) s = font.render("press it again to throw it", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 120 * gl.RESIZE_FACTOR)) s = font.render("press <space> to continue", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 130 * gl.RESIZE_FACTOR))
def show_game_title(self): font = media.get_font(8 * gl.RESIZE_FACTOR) s = font.render("BOMBERBIRDS", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 20 * gl.RESIZE_FACTOR)) s = font.render("entry for pyweek #18", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 30 * gl.RESIZE_FACTOR)) s = font.render("by Benoit <benoxoft> Paquet", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 40 * gl.RESIZE_FACTOR)) s = font.render("music from opengameart.org", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 194 * gl.RESIZE_FACTOR)) s = font.render("title song by bart", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 204 * gl.RESIZE_FACTOR)) s = font.render("game song by FoxSynergy", True, (255, 255, 255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 214 * gl.RESIZE_FACTOR))
def show_menu(self): self.show_game_title() font = media.get_font(8 * gl.RESIZE_FACTOR) s = font.render("Select how many birds", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 90 * gl.RESIZE_FACTOR)) if self.cursor_pos == 0: s = font.render("-> 2 birds", True, (255,255,255)) else: s = font.render(" 2 birds", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 100 * gl.RESIZE_FACTOR)) if self.cursor_pos == 1: s = font.render("-> 3 birds", True, (255,255,255)) else: s = font.render(" 3 birds", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 110 * gl.RESIZE_FACTOR)) if self.cursor_pos == 2: s = font.render("-> 4 birds", True, (255,255,255)) else: s = font.render(" 4 birds", True, (255,255,255)) self.screen.blit(s, ((256 * gl.RESIZE_FACTOR - s.get_width()) / 2, 120 * gl.RESIZE_FACTOR))
def create_wikipedia(self): font = media.get_font(64) s = font.render("Wikipedia", True, GEM_FONT_COLOR) return (s, ((1024 - s.get_rect().w) / 2, 120))
def create_next_button(self): buttons_font = media.get_font(16) snext = buttons_font.render("Next", True, GEM_FONT_COLOR) self.next_rect = pygame.Rect((self.rect.x + 660, self.rect.y + 594, snext.get_rect().w, snext.get_rect().h)) return (snext, (660, 594))
def create_start_game(self): font = media.get_font(32) s = font.render("Start Game", True, GEM_FONT_COLOR) rect = pygame.Rect((1024 - s.get_rect().w) / 2, 450, s.get_rect().w, s.get_rect().h) return (s, rect)
def create_1942(self): font = media.get_font(128) s = font.render("1942", True, GEM_FONT_COLOR) return (s, ((1024 - s.get_rect().w) / 2, 200))
def create_gameplay(self): font = media.get_font(32) s = font.render("Gameplay", True, GEM_FONT_COLOR) rect = pygame.Rect((1024 - s.get_rect().w) / 2, 500, s.get_rect().w, s.get_rect().h) return (s, rect)
def create_quit(self): font = media.get_font(32) s = font.render("Quit", True, GEM_FONT_COLOR) rect = pygame.Rect((1024 - s.get_rect().w) / 2, 550, s.get_rect().w, s.get_rect().h) return (s, rect)
def create_pages(self): pages_font = media.get_font(20) pages = pages_font.render( "Page: " + str(self.current_page) + " / " + str(self.count_pages()), True, GEM_FONT_COLOR ) return (pages, (48, 592))
def create_title(self): title_font = media.get_font(32) title = title_font.render("Warp to?", True, GEM_FONT_COLOR) return (title, (32, 48))
def create_message(self): msg_font = media.get_font(8) msg = msg_font.render(self.word, True, GEM_FONT_COLOR) return (msg, (32, 148))