def __init__(self, controller): self.__controller = controller self.__last_scene = controller.get_scene() self.game_objects = LayeredUpdates() self.screen_rect = pygame.display.get_surface().get_rect() try: open(self.REGULAR_FONT).close() except FileNotFoundError: fix_path()
def init(cls): init() os.environ['SDL_VIDEO_CENTERED'] = "{!s},{!s}".format(0, 0) display.set_icon( image.load(os.path.join(os.getcwd(), 'data', 'favicon.png'))) display.set_caption("WorldBuilding") display.set_mode((ANCHO, ALTO), SCALED) cls.contents = LayeredUpdates()
def init(cls): display.set_caption('BehaviourTreeEditor v2') # display.set_icon(image.load('frontend/favicon.png')) display.set_mode((WIDTH, HEIGHT)) f = font.SysFont('Verdana', 14) cls.typemode_label = f.render('TypeMode (F3):', 1, COLOR_TEXT, COLOR_BG) cls.typemode_mark = Surface((19, 19)) cls.widgets = LayeredUpdates()
def __init__(self, graph_yaml=None, graph_tmx=None): self.visitor = None self.scroll_group = None self.graph_yaml = graph_yaml self.graph_tmx = graph_tmx self.visitor_cursor = None self.vertex_group = VertexLookupGroup() self.hud_group = None self.hud_button = None self.pointer = None self.sprites = LayeredUpdates() self._animations = Group()
def render_center_info(board_render): center_info_surface = Surface((250, 250)) match = board_render.match group = LayeredUpdates() # Background info_rect = Rect(0, 0, 250, 250) info_rect.center = board_render.surface.get_rect().center pygame.draw.rect(center_info_surface, (0, 0, 0), info_rect) current_path = os.path.dirname(os.path.realpath(__file__)) font_path = os.path.join( current_path, "..", "..", "resources", "fonts", "SourceSans3-Semibold.ttf" ) font = Font(font_path, 30) large_font = Font(font_path, 42) # Round Title round_text = "{} {}".format("East" if match.east_prevalent else "South", match.round_number) round_surface = font.render(round_text, True, (255, 255, 255)) round_sprite = Sprite() round_sprite.image = round_surface round_sprite.rect = round_surface.get_rect() round_sprite.rect.center = info_rect.center round_sprite.rect.y -= (round_surface.get_rect().height // 2) round_sprite.layer = 1 group.add(round_sprite) # Tiles Left in Wall tile_count_surface = large_font.render(str(len(match.current_board.wall)), True, (255, 255, 255)) wall_remaining_sprite = Sprite() wall_remaining_sprite.image = tile_count_surface wall_remaining_sprite.rect = tile_count_surface.get_rect() wall_remaining_sprite.rect.center = info_rect.center wall_remaining_sprite.rect.y += (tile_count_surface.get_rect().height // 3) wall_remaining_sprite.layer = 1 group.add(wall_remaining_sprite) # Wind Markers create_wind_markers(match, info_rect, group) # Turn Marker create_turn_marker(match, info_rect, group) # Riichi Markers create_riichi_markers(match, info_rect, group) background_sprite = Sprite() background_sprite.rect = info_rect background_sprite.image = center_info_surface background_sprite.layer = 0 group.add(background_sprite) return group
def __init__(self, game): super().__init__(game) self.player = None self.active = True self.geometry = list() self.space = pymunk.Space() self.space.gravity = (0, 1000) self.sprites = LayeredUpdates() self.event_handler = event_handling.EventQueueHandler() self.background = resources.gfx("background.png", convert=True) self.load() pygame.mixer.music.load(resources.music_path("zirkus.ogg")) pygame.mixer.music.play(-1)
def __init__(self, scene_name="cutscene001", scene_file_name="test-cutscene.yaml"): self.running = False self.script_runner = ScriptRunner() self._scene_name = scene_name self._scene_file_name = scene_file_name self._border = None self._sprites = LayeredUpdates() self._animations = Group() self._dialog_open = False self._dialog_rect = None self._caption = None self._text = None
def init(cls): init() os.environ['SDL_VIDEO_CENTERED'] = "{!s},{!s}".format(0, 0) try: icon = image.load( os.path.join(os.getcwd(), 'lib', 'frontend', 'icon.png')) except error: icon = image.load(os.path.join(os.getcwd(), 'frontend', 'icon.png')) icon.set_colorkey((255, 255, 255, 0)) display.set_icon(icon) display.set_caption("PMCDB: PyMavisCustomDatabase v0.2.2") display.set_mode((ANCHO, ALTO)) cls.contents = LayeredUpdates()
def __init__(self, controller): try: open(self.REGULAR_FONT).close() except FileNotFoundError: fix_path() self._font = ftfont.Font(self.REGULAR_FONT, 50) self._small_font = ftfont.Font(self.REGULAR_FONT, 30) self._bold_font = ftfont.Font(self.BOLD_FONT, 30) self.__controller = controller try: self.__last_scene = controller.get_scene() except AttributeError: self.__last_scene = None self.game_objects = LayeredUpdates() self.screen_rect = pygame.display.get_surface().get_rect() background = pygame.Surface(self.screen_rect.size) background.fill((240, 240, 240)) self.background = GameObject(self.game_objects, pygame.Rect(0, 0, 0, 0), background) self.game_objects.add(self.background)
def render_bot_icons(board_render): ICON_SIZE = (50, 50) group = LayeredUpdates() SEAT_POS = [ None, (board_render.surface.get_width() - ICON_SIZE[0] - 10, 80), (460 - ICON_SIZE[0] - 10, 10), (10, 80) ] game_view = board_render.match.game_manager.get_active_view() icon_cache = game_view.bot_icon_cache ais = game_view.ai_list ai_icons = [] dud_ai_icon = pygame.Surface(ICON_SIZE, pygame.SRCALPHA) load_image_resource("dudB.png", dud_ai_icon, size=ICON_SIZE) for i in range(4): for icon in icon_cache: if icon['ai'] == ais[i]: surface = pygame.Surface(ICON_SIZE, pygame.SRCALPHA) load_image_resource(icon['icon'], surface, size=ICON_SIZE) ai_icons += [surface] break is_story_mode = hasattr(game_view, "match_dict") for seat in range(4): if seat == 0: continue sprite = Sprite() sprite.rect = (SEAT_POS[seat], ICON_SIZE) sprite.layer = 0 if is_story_mode and seat != 2: sprite.image = dud_ai_icon else: sprite.image = ai_icons[seat] group.add(sprite) return group
def init(cls): cls.blocks = LayeredUpdates() mouse.set_pos((320, 240)) display.set_mode((640, 480)) cls.rect_selection = Rect(0, 0, 0, 0) os.environ['SDL_VIDEO_CENTERED'] = "{!s},{!s}".format(0, 0)
def init(cls): cls.contents = LayeredUpdates() cls.clock = time.Clock()
def render_score_screen(board_render): should_show_screen = board_render.board_manager.round_should_end group = LayeredUpdates() if not should_show_screen: return group current_path = os.path.dirname(os.path.realpath(__file__)) font_path = os.path.join( current_path, "..", "..", "resources", "fonts", "SourceSans3-Semibold.ttf" ) font = Font(font_path, 40) font_small = Font(font_path, 24) match = board_render.match scores = match.scores delta_scores = match.delta_scores total_scores = list(map(lambda s: s[0] + s[1], zip(scores, delta_scores))) winner_indices = numpy.argwhere(numpy.array(delta_scores) > 0).flatten() winner_names = [] array = numpy.array(total_scores) temp = array.argsort()[::-1] ranks = numpy.empty_like(temp) ranks[temp] = numpy.arange(len(array)) icons = get_object('boticons')['bot'] screen_surface = Surface(board_render.surface.get_size(), pygame.SRCALPHA) screen_surface.fill((0, 0, 0)) ROUND_COMPLETE = "Round Complete" round_complete_surface = font.render(ROUND_COMPLETE, True, (255, 255, 255)) font_width, font_height = font.size(ROUND_COMPLETE) icon_size = (100, 100) player_list = match.ai_list x = screen_surface.get_width() // 5 y = font_height + 5 for seat in range(4): ai_name = player_list[seat] name = None icon = None for entry in icons: if entry['ai'] == ai_name: name = entry['name'] icon = entry['icon'] break if name is None: raise "BOT WAS NOT DEFINED." if seat in winner_indices: winner_names += [name] icon_surface = Surface(icon_size, pygame.SRCALPHA) load_image_resource(icon, icon_surface, size=icon_size) screen_surface.blit( icon_surface, (x, y) ) player_name = font.render(name, True, (255, 255, 255)) _, name_h = font.size(name) screen_surface.blit( player_name, (x + icon_size[0] + 10, y) ) score_string = "{} Points".format(scores[seat]) score_render = font_small.render(score_string, True, (255, 255, 255)) _, score_h = font_small.size(score_string) screen_surface.blit( score_render, (x + icon_size[0] + 10, y + name_h + 5) ) delta_string = "{}{}".format("+" if delta_scores[seat] >= 0 else "", delta_scores[seat]) delta_render = font_small.render(delta_string, True, (255, 255, 255)) _, delta_h = font_small.size(delta_string) screen_surface.blit( delta_render, (x + icon_size[0] + 10, y + name_h + 5 + score_h + 5) ) total_string = "Total: {} Points".format(total_scores[seat]) total_render = font_small.render(total_string, True, (255, 255, 255)) screen_surface.blit( total_render, (x + icon_size[0] + 10, y + name_h + 5 + score_h + 5 + delta_h + 5) ) place_string = "{}".format(ranks[seat] + 1) place_render = font.render(place_string, True, (255, 255, 255)) place_w, place_h = font.size(place_string) screen_surface.blit( place_render, (x - place_w - 5, y + ((icon_size[1] - place_h) // 2)) ) y += icon_size[1] + 70 LOADING_NEXT_ROUND = "Loading next Round..." loading_surface = font.render(LOADING_NEXT_ROUND, True, (255, 255, 255)) loading_width, loading_height = font.size(LOADING_NEXT_ROUND) screen_surface.blit( loading_surface, (screen_surface.get_width() - loading_width - 10, screen_surface.get_height() - loading_height - 10) ) screen_surface.blit( round_complete_surface, ((screen_surface.get_width() // 2) - (font_width // 2), 10), ) result_pos = (screen_surface.get_width() * 0.6, screen_surface.get_height() // 3) if board_render.board_manager.did_exhaustive_draw: EXHAUSTIVE = "Exhaustive Draw" exhaustive_surface = font.render(EXHAUSTIVE, True, (255, 255, 255)) screen_surface.blit( exhaustive_surface, result_pos ) else: WINNERS = "Winners:" winners = ", ".join(winner_names) winner_text = font_small.render(WINNERS, True, (255, 255, 255)) winner_name_text = font_small.render(winners, True, (255, 255, 255)) screen_surface.blit( winner_text, result_pos ) screen_surface.blit( winner_name_text, (result_pos[0], result_pos[1] + winner_text.get_rect().height + 5) ) background_sprite = Sprite() background_sprite.rect = screen_surface.get_rect() background_sprite.image = screen_surface background_sprite.layer = 0 group.add(background_sprite) return group
def init(cls): init() os.environ['SDL_VIDEO_CENTERED'] = "{!s},{!s}".format(0, 0) display.set_mode((ANCHO, ALTO)) cls.contents = LayeredUpdates()
def __new__(cls) -> _GroupsBase: args = [Group() for _ in range(6)] args += [LayeredUpdates()] return super(Groups, cls).__new__(cls, *args) # type: ignore
def graph_loop(mass_lower_limit=0.0, mass_upper_limit=0.0, radius_lower_limit=0.0, radius_upper_limit=0.0, is_gas_drwaf=False): m_lo_l = mass_lower_limit m_hi_l = mass_upper_limit r_lo_l = radius_lower_limit r_hi_l = radius_upper_limit fondo = display.set_mode((witdh, height), SCALED) rect = Rect(60, 2, 529, 476) lineas = LayeredUpdates() linea_h = Linea(rect, rect.x, rect.centery, rect.w, 1, lineas) linea_v = Linea(rect, rect.centerx, rect.y, 1, rect.h, lineas) punto = Punto(rect, rect.centerx, rect.centery, lineas) data = {} if any([ mass_lower_limit < 0, mass_upper_limit < 0, radius_lower_limit < 0, radius_upper_limit < 0 ]): raise ValueError() lim_mass_a = int(find_and_interpolate(m_lo_l, mass_keys, exes)) if m_lo_l else 0 lim_mass_b = int(find_and_interpolate(m_hi_l, mass_keys, exes)) if m_hi_l else 0 lim_radius_a = int(find_and_interpolate(r_lo_l, radius_keys, yes)) if r_lo_l else 0 lim_radius_b = int(find_and_interpolate(r_hi_l, radius_keys, yes)) if r_hi_l else 0 move_x, move_y = True, True lockx, locky = False, False mass_value = 0 radius_value = 0 mass_color = negro radius_color = negro mouse.set_pos(rect.center) event.clear() done = False composition_text_comp = None while not done: for e in event.get(): if e.type == QUIT: py_quit() if __name__ == '__main__': sys.exit() elif e.type == MOUSEBUTTONDOWN: if e.button == 1: if (not lockx) or (not locky): if (not lockx) and (not move_x): lockx = True elif (not locky) and (not move_y): locky = True elif not punto.disabled: data['mass'] = round(mass_value, 3) data['radius'] = round(radius_value, 3) data['gravity'] = round( mass_value / (radius_value**2), 3) data['density'] = round( mass_value / (radius_value**3), 3) done = True else: data = {} done = True elif e.button == 3: if lockx: lockx = False move_x = not lockx if locky: locky = False move_y = not locky elif e.type == MOUSEMOTION: px, py = e.pos if move_y: linea_h.move_y(py) punto.move_y(py) if move_x: linea_v.move_x(px) punto.move_x(px) point_x, point_y = punto.rect.center if rect.collidepoint(point_x, point_y) and (move_x or move_y): if mascara.get_at((point_x, point_y)): punto.select() for name in _lineas: if [point_x, point_y] in _lineas[name]: composition_text_comp = name break else: punto.deselect() elif e.type == KEYDOWN: if e.key == K_ESCAPE: py_quit() sys.exit() if e.key == K_LSHIFT: move_x = False elif e.key == K_LCTRL: move_y = False elif e.key == K_SPACE: data['mass'] = round(mass_value, 3) data['radius'] = round(radius_value, 3) data['gravity'] = round(mass_value / (radius_value**2), 3) data['density'] = round(mass_value / (radius_value**3), 3) done = True elif e.type == KEYUP: if e.key == K_LSHIFT: if not lockx: move_x = True elif e.key == K_LCTRL: if not locky: move_y = True px, py = punto.rect.center alto, bajo = 0, 0 if rect.collidepoint((px, py)): for _y in reversed(range(0, py)): if mascara.get_at((px, _y)): alto = _y break for _y in range(py, 476): if mascara.get_at((px, _y)): bajo = _y break a, b = 0, 0 # creo que esto se puede escribir con oneliners. for name in _lineas: if [px, alto] in _lineas[name]: a = name break for name in _lineas: if [px, bajo] in _lineas[name]: b = name break if a and b: c = composiciones silicates = interpolate(py, alto, bajo, c[a]['silicates'], c[b]['silicates']) hydrogen = interpolate(py, alto, bajo, c[a]['hydrogen'], c[b]['hydrogen']) helium = interpolate(py, alto, bajo, c[a]['helium'], c[b]['helium']) iron = interpolate(py, alto, bajo, c[a]['iron'], c[b]['iron']) water_ice = interpolate(py, alto, bajo, c[a]['water ice'], c[b]['water ice']) values = [ i for i in [silicates, hydrogen, helium, iron, water_ice] if i != 0 ] # sólo mostramos los valores mayores a 0% keys, compo = [], [] if silicates: compo.append(str(round(silicates, 2)) + '% silicates') keys.append('silicates') if hydrogen: compo.append(str(round(hydrogen, 2)) + '% hydrogen') keys.append('hydrogen') if helium: compo.append(str(round(helium, 2)) + '% helium') keys.append('helium') if iron: compo.append(str(round(iron, 2)) + '% iron') keys.append('iron') if water_ice: compo.append(str(round(water_ice, 2)) + '% water ice') keys.append('water ice') composition_text_comp = ', '.join(compo) data['composition'] = dict(zip(keys, values)) if hydrogen or helium: data['clase'] = 'Gas Dwarf' data['albedo'] = 30 else: data['clase'] = 'Terrestial Planet' data['albedo'] = 25 else: data = {} mass_value = find_and_interpolate(linea_v.rect.x, exes, mass_keys) radius_value = find_and_interpolate_flipped(linea_h.rect.y, yes, radius_keys) block = Surface(rect.size, SRCALPHA) block_mask = mask.from_surface(block) if any([lim_mass_b, lim_mass_a, lim_radius_a, lim_radius_b]): block_rect = block.get_rect(topleft=rect.topleft) alpha = 150 if lim_mass_a: block.fill([0] * 3 + [alpha], (0, rect.y - 2, lim_mass_a - rect.x, rect.h)) if lim_mass_b: block.fill([0] * 3 + [alpha], (lim_mass_b - rect.x, rect.y - 2, rect.w, rect.h)) if lim_radius_a: block.fill([0] * 3 + [alpha], (0, lim_radius_a, rect.w, rect.h - lim_radius_a)) if lim_radius_b: block.fill([0] * 3 + [alpha], (0, rect.y - 2, rect.w, lim_radius_b)) if is_gas_drwaf: block.blit(gas_drawf, (0, 0)) block_mask = mask.from_surface(block) point_x, point_y = punto.rect.center if block_rect.collidepoint((point_x, point_y)): if block_mask.get_at((point_x - rect.x, point_y - rect.y)): punto.disable() radius_color = rojo mass_color = rojo else: punto.enable() mass_color = negro radius_color = negro mass_text = 'Mass:' + str(round(mass_value, 3)) radius_text = 'Radius:' + str(round(radius_value, 3)) gravity_text = 'Density:' + str( round(mass_value / (radius_value**3), 3)) density_text = 'Gravity:' + str( round(mass_value / (radius_value**2), 3)) if not done: fondo.fill(blanco) fondo.blit(graph, (0, 0)) if block_mask.count() != 0: fondo.blit(block, rect) if punto.disabled: fondo.blit(texto3, rectT3) else: fondo.blit(fuente1.render(mass_text, True, mass_color), (5, rect.bottom + 43)) fondo.blit(fuente1.render(radius_text, True, radius_color), (140, rect.bottom + 43)) fondo.blit(fuente1.render(density_text, True, negro), (130 * 2 - 5, rect.bottom + 43)) fondo.blit(fuente1.render(gravity_text, True, negro), (140 * 3, rect.bottom + 43)) if composition_text_comp is not None: composition_text = 'Composition:' + composition_text_comp fondo.blit( fuente1.render(composition_text, True, negro, blanco), (5, rect.bottom + 64)) fondo.blit(texto1, rectT1) fondo.blit(texto2, rectT2) punto.update() lineas.update() lineas.draw(fondo) display.update() display.quit() return data
def __init__(self): super(Jackin, self).__init__() self.running = False self._sprites = LayeredUpdates() self._animations = Group() self.platten_speed = 40 self.pressed = set() self.cpl = 40 self.buffer = None self.cache = None self.char_height = 0 self.char_width = 0 self.platten = None self.paper = None self.mode = None self.fade_buffer = None self.screen_size = None self.cursor = Vector2(200, -70) self.document = list() self.document.append(list()) self.current_line = 0 font_name = 'Apple ][.ttf' font_size = 8 ratio = 10 color = pygame.Color('goldenrod') self.text = [ ('display', '> '), ('wait', 1500), ('type', 'CD/HACK'), ('display', '\nHACK> '), ('type', '\nRUN HACK.BAS'), ('wait', 1000), ('type', '\nAT&F&D2&C1S0=0X4'), ('wait', 1500), ('display', '\nOK'), ('wait', 1000), ('type', '\nATDT0040745129711\n'), ('sound', 'modem'), ('wait', 18000), ('display', '\nCONNECT 14400') ] self.sounds = { 'run': load_sound('run.wav'), 'boot': load_sound('boot.wav'), 'beep': load_sound('beep.wav'), 'modem': load_sound('188828__0ktober__modem-dial.wav'), 'spacebar': [load_sound(i) for i in [ 'spacebar01.wav', 'spacebar02.wav']], 'key': [load_sound(i) for i in [ 'keypress01.wav', 'keypress02.wav', 'keypress04.wav', 'keypress05.wav', 'keypress06.wav', ]] } self.generate_font(font_name, font_size, ratio, color) self.set_tab(0)