def render(screen, width, height, gamestate, selected_id, host, port): raycaster = Raycaster(gamestate["players"], gamestate["walls"]) raycaster.update() map_size = raycaster.get_map_size() + 1.0 if selected_id == 0: for player in gamestate["players"]: Game.render_vision(raycaster, player, screen, width, height, map_size, len(gamestate["players"])) elif selected_id > 0 and selected_id - 1 < len(gamestate["players"]): Game.render_vision(raycaster, gamestate["players"][selected_id - 1], screen, width, height, map_size, len(gamestate["players"])) Map.render(gamestate["walls"], screen, width, height, map_size) for p in gamestate["players"]: Player.render(p, raycaster, screen, width, height, map_size) for projectile in gamestate["projectiles"]: Projectile.render(projectile, screen, width, height, map_size) for p in gamestate["players"]: Player.render_font(p, screen, width, height, map_size) myfont = pygame.font.SysFont("Arial", 22) label = myfont.render("Ticks remaining: " + str(gamestate["remaining_ticks"]), 1, (255, 255, 255)) s = pygame.Surface((label.get_width() + 20, label.get_height() + 20), pygame.SRCALPHA) # per-pixel alpha s.fill((45, 45, 45, 200)) screen.blit(s, (width // 2 - label.get_width() // 2 - 10, 0)) screen.blit(label, (width // 2 - label.get_width() // 2, 10)) myfont = pygame.font.SysFont("Arial", 16) label = myfont.render("test", 1, (255, 255, 255)) line_height = label.get_height() myfont = pygame.font.SysFont("Arial", 32) label = myfont.render("Ranking-----", 1, (255, 255, 255)) line_width = label.get_width() s = pygame.Surface((line_width + 20, line_height * (len(gamestate["ranking"]) + 2) + 40), pygame.SRCALPHA) # per-pixel alpha s.fill((45, 45, 45, 200)) screen.blit(s, (0, 0)) myfont = pygame.font.SysFont("Arial", 32) label = myfont.render("Ranking", 1, (255, 255, 255)) screen.blit(label, (10, 10)) myfont = pygame.font.SysFont("Arial", 16) i = 2 sorted_x = sorted(gamestate["ranking"].items(), key=operator.itemgetter(1), reverse=True) for key, value in sorted_x: label = myfont.render(key + ": " + str(value), 1, (255, 255, 255)) screen.blit(label, (10, 10 + label.get_height() * 1.1 * i)) i += 1 myfont = pygame.font.SysFont("Arial", 32) label = myfont.render(host + ":" + str(port), 1, (255, 255, 0)) s = pygame.Surface((label.get_width() + 20, label.get_height() + 20), pygame.SRCALPHA) # per-pixel alpha s.fill((45, 45, 45, 200)) screen.blit(s, (width // 2 - label.get_width() // 2 - 10, height - label.get_height() - 20)) screen.blit(label, (width // 2 - label.get_width() // 2, height - label.get_height() - 10))
def render_game(self, screen, width, height): if self.selected_player == 0: self.render_lobby(screen, width, height, False) return raycaster = Raycaster(self.players, self.walls) raycaster.update() map_size = raycaster.get_map_size() + 1.0 #self.render_vision(raycaster, self.player, screen, width, height, map_size) Map.render(self.walls, screen, width, height, map_size) #Map.render(raycaster.get_lines(), screen, width, height, map_size) for p in self.players: Player.render(p, raycaster, screen, width, height, map_size) for projectile in self.projectiles: Projectile.render(projectile, screen, width, height, map_size) for p in self.players: Player.render_font(p, screen, width, height, map_size) myfont = pygame.font.SysFont("Arial", 22) label = myfont.render("Ticks remaining: " + str(self.remaining_ticks), 1, (255, 255, 255)) s = pygame.Surface((label.get_width() + 20, label.get_height() + 20), pygame.SRCALPHA) # per-pixel alpha s.fill((45, 45, 45, 200)) screen.blit(s, (width // 2 - label.get_width() // 2 - 10, 0)) screen.blit(label, (width // 2 - label.get_width() // 2, 10)) myfont = pygame.font.SysFont("Arial", 16) label = myfont.render("test", 1, (255, 255, 255)) line_height = label.get_height() myfont = pygame.font.SysFont("Arial", 32) label = myfont.render("Ranking-----", 1, (255, 255, 255)) line_width = label.get_width() s = pygame.Surface((line_width + 20, line_height * (len(self.ranking) + 2) + 40), pygame.SRCALPHA) # per-pixel alpha s.fill((45, 45, 45, 200)) screen.blit(s, (0, 0)) myfont = pygame.font.SysFont("Arial", 32) label = myfont.render("Ranking", 1, (255, 255, 255)) screen.blit(label, (10, 10)) myfont = pygame.font.SysFont("Arial", 16) i = 2 sorted_x = sorted(self.ranking.items(), key=operator.itemgetter(1), reverse=True) for key, value in sorted_x: label = myfont.render(key + ": " + str(value), 1, (255, 255, 255)) screen.blit(label, (10, 10 + label.get_height() * 1.1 * i)) i += 1
def render(screen, width, height, gamestate, selected_id, host, port): raycaster = Raycaster(gamestate["players"], gamestate["walls"]) raycaster.update() map_size = raycaster.get_map_size() + 1.0 if selected_id == 0: for player in gamestate["players"]: Game.render_vision(raycaster, player, screen, width, height, map_size, len(gamestate["players"])) elif selected_id > 0 and selected_id - 1 < len(gamestate["players"]): Game.render_vision(raycaster, gamestate["players"][selected_id - 1], screen, width, height, map_size, len(gamestate["players"])) Map.render(gamestate["walls"], screen, width, height, map_size) for p in gamestate["players"]: Player.render(p, raycaster, screen, width, height, map_size) for projectile in gamestate["projectiles"]: Projectile.render(projectile, screen, width, height, map_size) for p in gamestate["players"]: Player.render_font(p, screen, width, height, map_size) myfont = pygame.font.SysFont("Arial", 22) label = myfont.render( "Ticks remaining: " + str(gamestate["remaining_ticks"]), 1, (255, 255, 255)) s = pygame.Surface((label.get_width() + 20, label.get_height() + 20), pygame.SRCALPHA) # per-pixel alpha s.fill((45, 45, 45, 200)) screen.blit(s, (width // 2 - label.get_width() // 2 - 10, 0)) screen.blit(label, (width // 2 - label.get_width() // 2, 10)) myfont = pygame.font.SysFont("Arial", 16) label = myfont.render("test", 1, (255, 255, 255)) line_height = label.get_height() myfont = pygame.font.SysFont("Arial", 32) label = myfont.render("Ranking-----", 1, (255, 255, 255)) line_width = label.get_width() s = pygame.Surface((line_width + 20, line_height * (len(gamestate["ranking"]) + 2) + 40), pygame.SRCALPHA) # per-pixel alpha s.fill((45, 45, 45, 200)) screen.blit(s, (0, 0)) myfont = pygame.font.SysFont("Arial", 32) label = myfont.render("Ranking", 1, (255, 255, 255)) screen.blit(label, (10, 10)) myfont = pygame.font.SysFont("Arial", 16) i = 2 sorted_x = sorted(gamestate["ranking"].items(), key=operator.itemgetter(1), reverse=True) for key, value in sorted_x: label = myfont.render(key + ": " + str(value), 1, (255, 255, 255)) screen.blit(label, (10, 10 + label.get_height() * 1.1 * i)) i += 1 myfont = pygame.font.SysFont("Arial", 32) label = myfont.render(host + ":" + str(port), 1, (255, 255, 0)) s = pygame.Surface((label.get_width() + 20, label.get_height() + 20), pygame.SRCALPHA) # per-pixel alpha s.fill((45, 45, 45, 200)) screen.blit(s, (width // 2 - label.get_width() // 2 - 10, height - label.get_height() - 20)) screen.blit(label, (width // 2 - label.get_width() // 2, height - label.get_height() - 10))