def __init__(self, x=0, y=0, w=200, h=500, title='', buttons=None): # position and size self.x = x self.y = y self.w = w self.h = h # buttons and title self.set_title(title) self.set_buttons(buttons) # create actual menu self.menu = RoundedRect(pygame.Rect(0, 0, w, h)) self.menu.rect.center = self.x, self.y self.play_button = Button( pygame.display.get_surface().get_width() / 2, pygame.display.get_surface().get_height() * 0.4) self.play_button.set_text("Start Game", size=35) self.options_button = Button( pygame.display.get_surface().get_width() / 2, pygame.display.get_surface().get_height() * 0.55) self.options_button.set_text("Options", size=35) self.quit_button = Button( pygame.display.get_surface().get_width() / 2, pygame.display.get_surface().get_height() * 0.7) self.quit_button.set_text("Quit Game", size=35)
def __init__(self, instruction: str, back_button_name: str, forward_button_name: str, button_method): super().__init__() central_widget = QtWidgets.QWidget(self) self.setCentralWidget(central_widget) self.grid_layout = QtWidgets.QGridLayout(central_widget) central_widget.setStyleSheet(Style.get_window_style()) self.label = QtWidgets.QLabel() self.label.setText(instruction) self.grid_layout.addWidget(self.label, 0, 0, 1, 2, QtCore.Qt.AlignCenter) self.label.setStyleSheet(Style.get_text_style()) self.back_button = Button("Back", self) self.grid_layout.addWidget(self.back_button, 1, 0, 1, 1, alignment=QtCore.Qt.AlignCenter) self.back_button.setStyleSheet(Style.get_button_style()) self.back_button.clicked.connect(button_method(back_button_name)) self.forward_button = Button("Ok", self) self.grid_layout.addWidget(self.forward_button, 1, 1, 1, 1, alignment=QtCore.Qt.AlignCenter) self.forward_button.setStyleSheet(Style.get_button_style()) self.forward_button.clicked.connect(button_method(forward_button_name))
def __init__(self, width, height, head_text, item_unit, can_sell_items, images): super(ItemDialog, self).__init__(width, height, head_text) self.unit = item_unit self.selected_item = None self.trait_labels = [] # backpack slots self.item_icons = [] y = self.rect.y + 32 x = self.rect.x + 32 for i in range(hero.BACKPACK_SIZE): item_icon = ItemLabel(Rect(x,y,image.ITEM_ICON_WIDTH, image.ITEM_ICON_HEIGHT), images.backpack_slot, (PACK_SLOT, i)) self.add_child(item_icon) self.item_icons.append(item_icon) y += image.ITEM_ICON_HEIGHT + 4 x += image.ITEM_ICON_WIDTH + 16 # equip slots y = self.rect.y + 32 for i in range(len(hero.EQUIP_SLOTS)): item_icon = ItemLabel(Rect(x,y,image.ITEM_ICON_WIDTH, image.ITEM_ICON_HEIGHT), images.equip_slots[hero.EQUIP_SLOTS[i]], (EQUIP_SLOT, i)) self.add_child(item_icon) self.item_icons.append(item_icon) y += image.ITEM_ICON_HEIGHT + 4 x += image.ITEM_ICON_WIDTH + 4 # buttons x = self.rect.x + 44 def transfer_callback(): component.post_ui_event(component.KEY_DOWN, unicode = 't', key = 't') self.transfer_button = Button(Rect(x, y, image.SM_BUTTON_WIDTH, image.SM_BUTTON_HEIGHT), images.transfer, transfer_callback, image_label = True, tool_tip_text = "transfer (t)") x += image.SM_BUTTON_WIDTH + 4 def disband_callback(): component.post_ui_event(component.KEY_DOWN, unicode = 'x', key = 'x') self.disband_button = Button(Rect(x, y, image.SM_BUTTON_WIDTH, image.SM_BUTTON_HEIGHT), images.disband, disband_callback, image_label = True, tool_tip_text = "discard (x)") self.add_child(self.transfer_button) self.add_child(self.disband_button) x += image.SM_BUTTON_WIDTH + 4 if can_sell_items: def sell_callback(): self.sell_selected() self.add_child(Button(Rect(x, y, image.SM_BUTTON_WIDTH, image.SM_BUTTON_HEIGHT), images.gold_small, sell_callback, image_label = True, tool_tip_text = "sell (s)")) x += image.SM_BUTTON_WIDTH + 4 self.refresh_items() event_manager.add_listener(self.handle_game_events, event_manager.ITEM_ADDED) event_manager.add_listener(self.handle_game_events, event_manager.ITEM_SHIFTED) event_manager.add_listener(self.handle_game_events, event_manager.ITEM_REMOVED)
def loop(self): running = True while running: self.ggf.mode.blit(self.ggf.bg, [0, 0]) self.draw_text("Options", self.ggf.font, (255, 255, 255), self.ggf.mode, 530, 10) self.back = Button("Retour", 450, 100, (450, 200), self.ggf) self.le_help = Button("Aide - Level Editor", 450, 100, (450, 300), self.ggf) self.game_help = Button("Aide - Jeu", 450, 100, (450, 400), self.ggf) lhelp = False ghelp = False click = False highlight = "None" for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit(0) if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: click = True clic.play() if self.back.collides(): highlight = "Retour" if click: running = False if self.le_help.collides(): lhelp = True self.le_help.custom_image("images/leveleditorhelp.png", (700, 700)) self.le_help.move_to((300, 95)) if self.game_help.collides(): ghelp = True self.game_help.custom_image("images/gamehelp.png", (700, 700)) self.game_help.move_to((300, 150)) self.back.render(highlight) if not ghelp and not lhelp: self.le_help.render(highlight) self.game_help.render(highlight) elif ghelp: self.game_help.render(highlight) elif lhelp: self.le_help.render(highlight) pygame.display.update()
def menu(self): pygame.mixer.music.load('images/idée-menu-non-mixée.ogg') pygame.mixer.music.set_volume(0.1) pygame.mixer.music.play(-1) self.level_selector.propose_levels() while True: self.mode.blit(self.bg, [0, 0]) self.mode.blit(self.title, [30, 20]) self.level_selector.selected_level = None self.play.platforms = [] play = Button("Jouer", 450, 70, (430, 300), self) rules = Button("Règles", 450, 70, (430, 400), self) leave = Button("Quitter", 450, 70, (430, 500), self) highlight = "None" click = False for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit(0) if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: click = True clic.play() if play.collides(): highlight = play.title if click: back = True while not self.level_selector.has_selected_level() and back: back = self.level_selector.process() elif rules.collides(): highlight = rules.title if click: self.option_menu.loop() elif leave.collides(): highlight = leave.title if click: pygame.quit() sys.exit(0) play.render(highlight) rules.render(highlight) leave.render(highlight) pygame.display.update() self.clock.tick(60)
def __init__(self): if App.instance: raise Exception GuiBoard.init() # Initialize GuiBoard singleton App.instance = self self._running = False self.game = Controller() self.size = self.width, self.height = (1000, 1000) self.mode = App.Mode.title_screen self.button = Button( 100, 100, 100, 100, "abc", App.button_font, lambda: print(crayons.cyan('clicked!')), Style(bg=(255, 255, 255), hbg=(0, 0, 0), tcolor=(255, 0, 0))) self.button.disabled = True self.exit = Button( 0, 0, 200, 70, "Exit", App.button_font, lambda: App.instance.stop(), Style(bg=(233, 30, 99), hbg=(255, 96, 144), tcolor=(0, 0, 0))) self.exit.disabled = True s = Style((10, 123, 209), (10, 123, 209), (255, 255, 255)) self.play_button = Button(300, 450, 400, 125, "Play", App.title_screen_button_font, lambda: App.instance.set_mode(App.Mode.game), style=s) self.info_button = Button(300, 600, 400, 125, "Info", App.title_screen_button_font, lambda: App.instance.set_mode(App.Mode.info), style=s) print(crayons.green('Instantiated App'))
def __init__(self, wm, surface, text, title=""): window = xpg.Window(surface, (200, 100), title, None, (400, 400)) window.contents.append(Text(0, 0, text, (0, 0, 0))) window.contents.append(Button(0, 50, "Cancel", self.decline)) window.contents.append(Button(100, 50, "Ok", self.confirm)) window.closeable = False window.titlebar.reinit() wm.register_window(window) self.window = window self.status = "pending"
def __init__(self, position_rect, images, handler): super(ControlRenderer, self).__init__(position_rect) ''' Constructor ''' pad = 16 top_pad = 16 # self.rect = position_rect handlers = [ handler.previous_group, handler.next_group, handler.previous_site, handler.next_site, handler.center_view, handler.end_turn, handler.minimap, handler.tools ] image_labels = [ images.l_arrow, images.r_arrow, images.prev_site, images.next_site, images.center_view, images.end_turn, images.minimap, images.tools ] tool_tips = [ "prev. group (p)", "next group(n)", "prev. site (a)", "next site(s)", "center (c)", "end turn (e)", "mini-map (m)", "tools" ] x, y = self.rect.x + pad, self.rect.y + top_pad width, height = image.CONTROL_BUTTON_WIDTH, image.CONTROL_BUTTON_HEIGHT for i in range(len(handlers)): self.add_child( Button(Rect(x, y, width, height), image_labels[i], handlers[i], image_label=True, tool_tip_text=tool_tips[i])) x += image.CONTROL_BUTTON_WIDTH + pad if x > self.rect.x + self.rect.width - image.CONTROL_BUTTON_WIDTH: x = self.rect.x + pad y += image.CONTROL_BUTTON_HEIGHT + top_pad
def update_buttons(self, buttons): self.buttons = [] for (i, b) in enumerate(buttons): self.buttons.append( Button((i + 1) * self.width / (len(buttons) + 1), self.y + self.height / 2)) self.buttons[i].set_text(b, size=self.font_size)
def update_units(self): super(HireRenderer, self).update_units() if self.curr_group == None: return hire_callbacks = [lambda i=x: self.do_hire(i) for x in range(self.curr_group.num_units())] self.hire_buttons = [] for i in range(self.curr_group.num_units()): x, y = self.pixel_from_index(i) y += image.UNIT_HEIGHT + self.pad width, height = image.UNIT_WIDTH, image.UNIT_HEIGHT/ 3 curr_unit = self.curr_group.get_unit(i) hire_cost = curr_unit.hire_cost(self.curr_hex.get_active_group()) maint_cost = abs(curr_unit.maintenance()) maint_label = "" if maint_cost == 0 else " / " + str(maint_cost) maint_tool_tip = "" if maint_cost == 0 else "\n and " + str(maint_cost) + " gold per week" label_text = str(hire_cost) + maint_label tool_tip = "Hire this unit for " + str(hire_cost) + " gold" + maint_tool_tip self.hire_buttons.append(Button (Rect(x, y, width, height), label_text, hire_callbacks[i], tool_tip_text = tool_tip)) self.add_child(self.hire_buttons[i]) self.refresh_view()
def createWidgets(self): """Creates all widgets for the dialog. Depending on wether we're a server or a client different widgets will be shown.""" # are we a server? if not scenario.run_as_server: # we're running as client. need an additional label and editfield for the hostname self.wm.register( Label(self.smallfont, "Server host: ", (250, 240), color=(255, 255, 255))) self.host = EditField(self.smallfont, "localhost", 200, (450, 240), color=(255, 255, 0), background=(80, 80, 80)) self.wm.register(self.host) # common widgets self.wm.register( Label(self.titlefont, "Setup network information", (10, 10), color=(255, 0, 0))) self.wm.register( Label(self.smallfont, "Server port: ", (250, 300), color=(255, 255, 255))) self.port = EditField(self.smallfont, str(properties.network_port), 200, (450, 300), color=(255, 255, 0), background=(80, 80, 80)) self.wm.register(self.port) # buttons self.wm.register( Button(properties.path_dialogs + "butt-ok-moff.png", properties.path_dialogs + "butt-ok-mover.png", (284, 650), {widget.MOUSEBUTTONUP: self.ok})) self.wm.register( Button(properties.path_dialogs + "butt-back-moff.png", properties.path_dialogs + "butt-back-mover.png", (528, 650), {widget.MOUSEBUTTONUP: self.back}))
def __dibujar_boton_borrar(self): self.botonBorrar = Button(self.posX, self.posY, "boton_borrar_habilitado.png") self.botonBorrar.agregar_imagen("boton_borrar_presionado.png") self.botonBorrar.agregar_imagen("boton_borrar_desactivado.png") self.botonBorrar.dibujar() posicion_y_boton = self.posY + (self._mediaGrilla - self.botonBorrar.rect[ALTO] / 2) self.botonBorrar.posicionY = posicion_y_boton self.botonBorrar.mover()
def dibujar_boton_selecion_avatar(self, archivo="no_avatar.png"): posicion_x_boton = self.textBox.rect[POS_X] + self.textBox.rect[ANCHO] + SEPARACIONES.SEPARACION posicion_y_boton = self.posY self.botonSeleccionAvatar = Button(posicion_x_boton, posicion_y_boton, archivo) self.botonSeleccionAvatar.dibujar() posicion_y_boton = self.posY + (self._mediaGrilla - self.botonSeleccionAvatar.rect[ALTO] / 2) self.botonSeleccionAvatar.posicionY = posicion_y_boton self.botonSeleccionAvatar.mover()
def __init__(self, position_rect, images): super(UnitRenderer, self).__init__(position_rect) self.selected_unit = None def item_callback(): item_dialog = item_panel.ItemDialog(325, 325, "Items", self.selected_unit, self.can_sell_items, images) item_dialog.show() x, y = self.rect.x + self.rect.width / 3, self.rect.y + ( self.rect.height * 3) / 4 width, height = (self.rect.width) / 2, self.rect.height / 8 self.item_button = Button(Rect(x, y, width, height), "Items", item_callback) def build_callback(): command = misc_commands.BuildCommand(self.select_hex, self.selected_unit) event_manager.queue_event( Event(event_manager.COMMAND_ISSUED, [command])) self.build_button = Button(Rect(x, y, width, height), "", build_callback) def embassy_callback(): command = misc_commands.EmbassyCommand(self.select_hex, self.selected_unit) event_manager.queue_event( Event(event_manager.COMMAND_ISSUED, [command])) self.embassy_button = Button(Rect(x, y, width, height), "", embassy_callback) self.can_sell_items = False self.map_data = None event_manager.add_listener(self.handle_game_events, event_manager.UNIT_SELECTED) event_manager.add_listener(self.handle_game_events, event_manager.HEX_SELECTED) event_manager.add_listener(self.handle_game_events, event_manager.UNIT_STATS_CHANGED)
def add_button(self, name: str, text: str, button_method): self.buttons[name] = Button(text, self) self.grid_layout.addWidget(self.buttons[name], len(self._settings) + len(self.buttons), 0, 1, 2, alignment=QtCore.Qt.AlignCenter) self.buttons[name].setStyleSheet(Style.get_button_style()) self.buttons[name].clicked.connect(button_method(name))
def __init__(self, window, width, height): self.window = window self.window_width = width self.window_heigth = height self.start_button = Button(self.window_width / 2, 350, self.window) self.background_image = pygame.image.load('img/background_plain.png') self.background_image = pygame.transform.scale(self.background_image, (self.window_width, self.window_heigth)) self.crown_image = pygame.image.load('img/crown.png') self.crown_image = pygame.transform.scale(self.crown_image, (100,50)) self.crown_image = pygame.transform.rotate(self.crown_image,360-35)
def add_button(self, name: str, position: int, size: int, text: str, method): self.buttons[name] = Button(text, self) self.grid_layout.addWidget(self.buttons[name], 1, position, 1, size, alignment=QtCore.Qt.AlignCenter) self.buttons[name].setStyleSheet(Style.get_button_style()) self.buttons[name].clicked.connect(method(name))
def set_buttons(self, buttons): self.buttons = [] if not isinstance(buttons, list): return base = self.h * 0.15 height = self.h - base base += self.y - self.h / 2 for (i, b) in enumerate(buttons): x = int(self.x) y = int(height * ((i + 1) / (len(buttons) + 1)) + base) self.buttons.append(Button(x, y)) self.buttons[i].set_text(b, size=35)
def __init__(self): self.tablero = Tablero() self.corredores = [] self.cazador = None self.boton_atras = Button(880, 680, "boton_iniciar_partida_habilitado.png") self.boton_atras.agregar_imagen("boton_iniciar_partida_presionado.png") self.boton_atras.agregar_imagen("boton_iniciar_partida_desactivado.png") self.turno = None self.primer_turno = True self.linea_doble_turno = False self.dado = None self.info = None
def menu_content(self): self.check_box_fire = CheckBox(self.window_width / 2 - 150, 100, self.window, "fire") self.check_box_fire.is_checked = True self.check_box_water = CheckBox(self.window_width / 2 - 50, 100, self.window, "water") self.check_box_earth = CheckBox(self.window_width / 2 + 50, 100, self.window, "earth") self.check_box_wind = CheckBox(self.window_width / 2 + 150, 100, self.window, "wind") self.buttons = [ self.check_box_fire, self.check_box_water, self.check_box_earth, self.check_box_wind ] self.currnet_button = self.check_box_fire self.start_button = Button(self.window_width / 2, 350, self.window) self.input_box1 = InputBox(self.window_width / 2, 200, 140, 32) self.background = Background(self.window, self.window_width, self.window_heigth) self.input_port = InputBox(self.window_width / 2, 300, 140, 32) self.input_ip = InputBox(self.window_width / 2, 250, 140, 32)
from gui.button import Button def button_onclick(button): button.move(10, 0) wm = xpg.WindowManager() ddm = xpg.DragDropManager(wm) screen = pygame.display.set_mode((1200, 800)) xpg.GLOBAL_SURFACE = screen window = xpg.Window(screen, (300, 300), "Moving Button") b = Button(0, 0, "MOVE!", button_onclick) window.contents.append(b) wm.register_window(window) pygame.display.update(xpg.UPDATE) xpg.UPDATE.append(screen.get_rect()) while 1: wm.loop() ddm.loop() screen.fill((0, 0, 0)) b.move(0, 0.1)
wm = xpg.WindowManager() ddm = xpg.DragDropManager(wm) im = xpg.InputManager() screen = pygame.display.set_mode((1200, 800)) xpg.GLOBAL_SURFACE = screen window = xpg.Window(screen, (300, 50), "Your Name:") window.resizeable = False tf = TextField(im, 0, 0, "", button_onclick) b = Button(200, 5, "Submit", button_onclick) window.contents.append(b) window.contents.append(tf) wm.register_window(window) pygame.display.update(xpg.UPDATE) xpg.UPDATE.append(screen.get_rect()) wm.reblit_all_windows() while 1: screen.fill((0, 0, 0)) ddm.loop() wm.loop()
def __init__(self, position_rect, images): super(HexInfoRenderer, self).__init__(position_rect) self.engineering_active = False self.selected_hex = None # probably need to allow for some padding in these calculations self.site_rect = Rect(self.rect.x, self.rect.y, self.rect.width / 4, self.rect.height) def hire_callback(toggle_down): if toggle_down: self.for_hire_renderer.show() self.garrison_renderer.hide() else: self.for_hire_renderer.hide() self.garrison_renderer.show() def upgrade_callback(): upgrade_dialog = UpgradeDialog(250, 300, "Site Upgrades", self.selected_hex.site) upgrade_dialog.show() x, y = self.site_rect.x + self.site_rect.width / 4, self.site_rect.y + ( self.site_rect.height * 3) / 4 width, height = self.site_rect.width / 4, self.site_rect.height / 8 self.upgrade_button = Button(Rect(x, y, width, height), "Upg.", upgrade_callback) self.hire_button = Toggle(Rect(x + width + 8, y, width, height), "Hire", hire_callback) self.add_child(self.hire_button) self.add_child(self.upgrade_button) active_group_rect = Rect(self.rect.x + self.site_rect.width, self.rect.y + 1, (3 * self.rect.width) / 4, image.UNIT_HEIGHT + 8) self.active_group_renderer = group_panel.OccupantRenderer( "Active", active_group_rect, False) x = active_group_rect.x + (active_group_rect.width) / 2 y = active_group_rect.y + active_group_rect.height + 12 def transfer_callback(): component.post_ui_event(component.KEY_DOWN, unicode='t', key='t') self.transfer_button = Button(Rect(x, y, image.SM_BUTTON_WIDTH, image.SM_BUTTON_HEIGHT), images.transfer, transfer_callback, image_label=True, tool_tip_text="transfer (t)") x += image.SM_BUTTON_WIDTH + 4 def disband_callback(): component.post_ui_event(component.KEY_DOWN, unicode='x', key='x') self.disband_button = Button(Rect(x, y, image.SM_BUTTON_WIDTH, image.SM_BUTTON_HEIGHT), images.disband, disband_callback, image_label=True, tool_tip_text="disband (x)") self.add_child(self.transfer_button) self.add_child(self.disband_button) self.transfer_button.hide() self.disband_button.hide() y = self.disband_button.rect.y + self.disband_button.rect.height + 2 second_group_rect = Rect(self.rect.x + self.site_rect.width, y, (3 * self.rect.width) / 4, self.rect.height - (y - self.rect.y)) self.garrison_renderer = group_panel.OccupantRenderer( "Garrison", second_group_rect, True) self.for_hire_renderer = group_panel.HireRenderer( "Hire", second_group_rect) self.add_child(self.active_group_renderer) self.add_child(self.garrison_renderer) self.add_child(self.for_hire_renderer) self.garrison_renderer.set_partner(self.active_group_renderer) self.active_group_renderer.set_partner(self.garrison_renderer) x = self.rect.x + 34 + image.UI_ICON_WIDTH + 25 y = self.rect.y + 50 + image.UNIT_HEIGHT self.revolt_icon = Label( Rect(x, y, image.UI_ICON_WIDTH, image.UI_ICON_HEIGHT), images.revolt, image_label=True, tool_tip_text="Revolt chance,\nchecked at week start") event_manager.add_listener(self.handle_game_events, event_manager.HEX_SELECTED)
def __init__(self, screen, entities): self.screen = screen self.entities = entities # list with objects self.current_entity = -1 # what current entity are we working with self.length = 4 self.margin = int(self.screen.get_width() / 288) self.inventory = Inventory() # Inventory elements # Inventory background # 1. Global inventory self.inventory_rect = [ self.screen.get_width() / 2 - int(self.screen.get_width() / 3.5 / 2), int(self.screen.get_height() / 3), int(self.screen.get_width() / 3.5), scale_h([1, 1], int(self.screen.get_width() / 3.5)) ] self.page = 0 # Text and Buttons self.button_page_up = Button('>', [ self.inventory_rect[0] + self.inventory_rect[2], self.inventory_rect[1], int(self.inventory_rect[2] / 6), self.inventory_rect[3] ], self.screen, colors=[(105, 105, 105), (169, 169, 169)]) self.button_page_down = Button('<', [ self.inventory_rect[0] - int(self.inventory_rect[2] / 6), self.inventory_rect[1], int(self.inventory_rect[2] / 6), self.inventory_rect[3] ], self.screen, colors=[(105, 105, 105), (169, 169, 169)]) self.page_text = Text( self.screen, str(self.page + 1), [ self.inventory_rect[0], self.inventory_rect[1] - 50, self.inventory_rect[2], 50 ], font_size=42) self.button_delay_1 = time.time() + 0.15 self.button_delay_2 = time.time() + 0.15 self.click_delay = time.time() + 0.15 # 2. Preview self.preview_image = None self.preview_rect = [] self.box_width = None # slots # weapon self.weapon_rect = [] self.weapon_placeholder = None self.weapon_equipped = None # helmet self.helmet_rect = [] self.helmet_placeholder = None self.helmet_equipped = None # chestplate self.chestplate_rect = [] self.chestplate_placeholder = None self.chestplate_equipped = None # boots self.boots_rect = [] self.boots_placeholder = None self.boots_equipped = None # Center box self.center_box = [] # Grid self.grid = [] self.mouse_down = False # Set value to everything self.scale()
for i in boxes: i.draw() set_50_btn.draw() set_100_btn.draw() set_200_btn.draw() sorter_buttons.draw() pygame.display.update() set_50_btn = Button( "50", (620, SCR_H * 0.92), 50, SCR_H * 0.06, action=set_n, args=50, ) set_100_btn = Button( "100", (680, SCR_H * 0.92), 50, SCR_H * 0.06, action=set_n, args=100, ) set_200_btn = Button( "200",
def createLabels(self): "Creates all labels for the dialog." # create the labels report = Label(self.titlefont, "Battle report", (400, 120), color=(255, 255, 0)) result = Label(self.smallfont, self.summary, (400, 160), color=(255, 255, 255)) # create the side headers men = Label(self.titlefont, "Men", (250, 240), color=(255, 180, 100)) guns = Label(self.titlefont, "Guns", (250, 270), color=(255, 180, 100)) score = Label(self.titlefont, "Score", (250, 320), color=(255, 180, 100)) # create the top headers union = Label(self.titlefont, "Union", (350, 200), color=(255, 255, 0)) rebel = Label(self.titlefont, "Confederate", (500, 200), color=(255, 255, 0)) # create result strings for mens and guns unionmenstr = "%d of %d" % (self.men_destroyed[UNION], self.men_ok[UNION]) rebelmenstr = "%d of %d" % (self.men_destroyed[REBEL], self.men_ok[REBEL]) uniongunsstr = "%d of %d" % (self.guns_destroyed[UNION], self.guns_ok[UNION]) rebelgunsstr = "%d of %d" % (self.guns_destroyed[REBEL], self.guns_ok[REBEL]) scorestr = "%d vs %d" % (self.score[UNION], self.score[REBEL]) # and labels too unionmen = Label(self.smallfont, unionmenstr, (350, 250), color=(255, 255, 255)) unionguns = Label(self.smallfont, uniongunsstr, (350, 280), color=(255, 255, 255)) rebelmen = Label(self.smallfont, rebelmenstr, (500, 250), color=(255, 255, 255)) rebelguns = Label(self.smallfont, rebelgunsstr, (500, 280), color=(255, 255, 255)) score2 = Label(self.smallfont, scorestr, (425, 325), color=(255, 255, 255)) # register our labels self.wm.register(report) self.wm.register(result) self.wm.register(union) self.wm.register(rebel) self.wm.register(men) self.wm.register(guns) self.wm.register(score) self.wm.register(score2) self.wm.register(unionmen) self.wm.register(rebelmen) self.wm.register(unionguns) self.wm.register(rebelguns) # buttons self.wm.register( Button(properties.path_dialogs + "butt-ok-moff.png", properties.path_dialogs + "butt-ok-mover.png", (406, 650), {widget.MOUSEBUTTONUP: self.ok}))
def __init__(self, seleccionado): # Definicion de fondo y Sprites self.fondo = Dibujable(0, 0, 'overlay.png') self.fondo.dibujar() self.xpos = 25 self.ypos = 600 self.nomAvatar = None self.sprite1, self.sprite2, self.sprite3, self.sprite4, self.sprite5,\ self.sprite6, self.sprite7, self.sprite8, self.sprite9 = \ None, None, None, None, None, None, None, None, None self.lista = [ self.sprite1, self.sprite2, self.sprite3, self.sprite4, self.sprite5, self.sprite6, self.sprite7, self.sprite8, self.sprite9 ] self.seleccionado = seleccionado self.titulo = makeLabel('Avatars:', 36, 30, 520, 'white') showLabel(self.titulo) # Dibujado de Sprites for i in range(0, 9): self.lista[i] = Button(self.xpos, self.ypos, "avatar" + str(i + 1) + ".png") self.lista[i].agregar_imagen("avatar" + str(i + 1) + "_presionado.png") self.lista[i].dibujar() if seleccionado[i]: self.lista[i].cambiar_imagen(ESTADOS_BOTONES.PRESIONADO) self.xpos += 80 # Asignacion de funcionalidad clickeable while True: self.mouseAction = False for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() if event.type == pygame.MOUSEBUTTONDOWN: self.mouseAction = pygame.mouse.get_pos() if self.mouseAction: if self.lista[0].click_elemento(self.mouseAction): if self.seleccionado[0]: self.lista[0].cambiar_imagen( ESTADOS_BOTONES.PRESIONADO) if not self.seleccionado[0]: self.nomAvatar = "avatar1.png" self.seleccionado[0] = True break if self.lista[1].click_elemento(self.mouseAction): if self.seleccionado[1]: self.lista[1].cambiar_imagen( ESTADOS_BOTONES.PRESIONADO) if not self.seleccionado[1]: self.nomAvatar = "avatar2.png" self.seleccionado[1] = True break if self.lista[2].click_elemento(self.mouseAction): if self.seleccionado[2]: self.lista[2].cambiar_imagen( ESTADOS_BOTONES.PRESIONADO) if not self.seleccionado[2]: self.nomAvatar = "avatar3.png" self.seleccionado[2] = True break if self.lista[3].click_elemento(self.mouseAction): if self.seleccionado[3]: self.lista[3].cambiar_imagen( ESTADOS_BOTONES.PRESIONADO) if not self.seleccionado[3]: self.nomAvatar = "avatar4.png" self.seleccionado[3] = True break if self.lista[4].click_elemento(self.mouseAction): if self.seleccionado[4]: self.lista[4].cambiar_imagen( ESTADOS_BOTONES.PRESIONADO) if not self.seleccionado[4]: self.nomAvatar = "avatar5.png" self.seleccionado[4] = True break if self.lista[5].click_elemento(self.mouseAction): if self.seleccionado[5]: self.lista[5].cambiar_imagen( ESTADOS_BOTONES.PRESIONADO) if not self.seleccionado[5]: self.nomAvatar = "avatar6.png" self.seleccionado[5] = True break if self.lista[6].click_elemento(self.mouseAction): if self.seleccionado[6]: self.lista[6].cambiar_imagen( ESTADOS_BOTONES.PRESIONADO) if not self.seleccionado[6]: self.nomAvatar = "avatar7.png" self.seleccionado[6] = True break if self.lista[7].click_elemento(self.mouseAction): if self.seleccionado[7]: self.lista[7].cambiar_imagen( ESTADOS_BOTONES.PRESIONADO) if not self.seleccionado[7]: self.nomAvatar = "avatar8.png" self.seleccionado[7] = True break if self.lista[8].click_elemento(self.mouseAction): if self.seleccionado[8]: self.lista[8].cambiar_imagen( ESTADOS_BOTONES.PRESIONADO) if not self.seleccionado[8]: self.nomAvatar = "avatar9.png" self.seleccionado[8] = True break hideLabel(self.titulo) for i in self.lista: i.ocultar()
if __name__ == "__main__": import sys from PyQt5.QtWidgets import QApplication from gui.button import Button app = QApplication(sys.argv) main = Button() main.show() sys.exit(app.exec_())
def process(self): print("Editing levels") count = 0 # Pour le décalage du background pro = True # Condition d'arrêt de la boucle self.game_handler.register_platform_by_file( self.level.location ) # Chargement des plateformes à partir du fichier du niveau self.render_background() # Affiche le background click = False # Si le joueur clique sur sa souris while pro: self.bg.draw(self.mode) if self.p_type == 1: self.p1_button = Button("Type 1", 160, 36, (50, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 1 yellow.png", (160, 36)) self.p2_button = Button("Type 2", 250, 36, (230, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 2 white.png", (250, 36)) self.p3_button = Button("Type 3", 500, 36, (500, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 3 white.png", (500, 36)) elif self.p_type == 2: self.p1_button = Button("Type 1", 160, 36, (50, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 1 white.png", (160, 36)) self.p2_button = Button("Type 2", 250, 36, (230, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 2 yellow.png", (250, 36)) self.p3_button = Button("Type 3", 500, 36, (500, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 3 white.png", (500, 36)) elif self.p_type == 3: self.p1_button = Button("Type 1", 160, 36, (50, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 1 white.png", (160, 36)) self.p2_button = Button("Type 2", 250, 36, (230, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 2 white.png", (250, 36)) self.p3_button = Button("Type 3", 500, 36, (500, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 3 yellow.png", (500, 36)) self.exit_button = Button("Quitter", 10, 10, (10, 10), self.game_handler.ggf).custom_image( "images/getback.png", (75, 75)) place = True # Si on peut placer une plateforme highlight = "None" plat_del = None # La plateforme à supprimer i = 0 # Compteur index = 0 # Index de la plateforme à supprimer if self.p1_button.collides(): place = False self.p1_button = Button("Type 1", 160, 36, (50, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 1 white.png", (160, 36)) if click: self.p_type = 1 elif self.p2_button.collides(): place = False self.p2_button = Button("Type 2", 250, 36, (230, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 2 white.png", (250, 36)) if click: self.p_type = 2 elif self.p3_button.collides(): place = False self.p3_button = Button("Type 3", 500, 36, (500, 655 + self.decalage), self.game_handler.ggf).custom_image( "images/plateforme 3 white.png", (500, 36)) if click: self.p_type = 3 elif self.exit_button.collides(): highlight = self.exit_button.title place = False if click: pro = False click = False for plat in self.game_handler.platforms: # Intéractions avec les plateformes if plat.is_mobile(): plat.move() if plat.collides(): plat_del = plat index = i print(index) i += 1 plat.draw(self.mode) for event in pygame.event.get(): if event.type == pygame.MOUSEBUTTONDOWN: mouse_pos = pygame.mouse.get_pos() if event.button == 1: click = True if place and mouse_pos[1] < 630: level_hs = open( "high scores/" + self.level.name + ".txt", "w+") for i in range(0, 3): level_hs.write("999.99\n") level_hs.close() self.game_handler.register_platform( "levels/" + self.level.name + ".txt", mouse_pos, False, self.bg.decalage, self.p_type) elif event.button == 3: click = True if place: self.game_handler.register_platform( "levels/" + self.level.name + ".txt", mouse_pos, True, self.bg.decalage, self.p_type) if event.type == pygame.QUIT: pro = False if event.type == pygame.KEYDOWN: if event.key == pygame.K_BACKSPACE: if plat_del is not None: self.game_handler.rewrite_file( self.level, plat_del) self.game_handler.platforms.pop(index) if event.key == pygame.K_UP: count += 1 self.bg.defil("up") if self.bg.count < self.bg.n_screen: for plat in self.game_handler.platforms: plat.move_y(self.bg.delta_y) if event.key == pygame.K_DOWN and count > 0: count -= 1 self.bg.defil("down") if self.bg.count < self.bg.n_screen: for plat in self.game_handler.platforms: plat.move_y(-self.bg.delta_y) self.mode.blit(self.banderole, (0, 600 + self.decalage)) self.mode.blit(self.left_click, (1030, 645 + self.decalage)) self.mode.blit(self.right_click, (1100, 645 + self.decalage)) self.mode.blit(self.delete, (1170, 670 + self.decalage)) self.p1_button.render("") self.p2_button.render("") self.p3_button.render("") if pygame.mouse.get_pos()[1] >= 620 + self.decalage / 2: if self.decalage > 0: self.decalage -= 20 else: if self.decalage < 100: self.decalage += 10 self.exit_button.render(highlight) pygame.display.update() self.level_selector.selected_level = None self.game_handler.level = None self.game_handler.platforms = []
def __init__(self): self.done = False self.remove_attempts = 5 self.cells_in_row = 9 self.row_group_size = 3 self.cells_in_column = 9 self.column_group_size = 3 self.groups_in_row = int(self.cells_in_row / self.row_group_size) self.groups_in_column = int(self.cells_in_column / self.column_group_size) pygame.font.init() self.font = pygame.font.SysFont("cambriacambriamath", 30) self.button_font = pygame.font.SysFont("cambriacambriamath", 19) self.info_font = pygame.font.SysFont("cambriacambriamath", 45, bold=True) self.cell_width = 40 self.cell_height = 40 self.margin = 10 self.button_height = Button.check_size('', self.button_font)[1] self.grid_width = self.cell_width * self.cells_in_row + 2 * self.margin self.grid_height = self.cell_height * self.cells_in_column + 2 * self.margin self.window_width = self.grid_width self.window_height = self.grid_height + self.button_height + 1 * self.margin self.screen = pygame.display.set_mode( (self.window_width, self.window_height)) pygame.display.set_caption("Sudoku") self.line_color = (0, 0, 0) self.input_value_color = (0, 0, 0) self.accepted_value_color = (44, 181, 2) self.wrong_value_color = (181, 20, 20) self.info_color = (0, 0, 0) self.highlight_color = (174, 237, 111) self.selected_row = 0 self.selected_column = 0 self.navigation_keys = { pygame.K_LEFT: (-1, 0), pygame.K_RIGHT: (1, 0), pygame.K_UP: (0, -1), pygame.K_DOWN: (0, 1), } self.grid = np.zeros(shape=(self.cells_in_row, self.cells_in_column), dtype=int) self.grid_status = np.full(shape=(self.cells_in_row, self.cells_in_column), fill_value=SudokuBoard.ACCEPTED) self.elements_set = set([ i for i in range(1, self.row_group_size * self.column_group_size + 1) ]) self.observers = [] self.puzzle_button = Button(parent=self, surface=self.screen, text="New puzzle", font=self.button_font) self.puzzle_button.set_on_click_event( lambda: threading.Thread(target=self.generate_puzzle).start()) self.hint_button = Button(parent=self, surface=self.screen, text="Hint", font=self.button_font) self.hint_button.set_on_click_event( lambda: threading.Thread(target=self.hint).start()) self.check_button = Button(parent=self, surface=self.screen, text="Check", font=self.button_font) self.check_button.set_on_click_event(self.check_and_display_info) self.solve_button = Button(parent=self, surface=self.screen, text="Solve", font=self.button_font) self.solve_button.set_on_click_event( lambda: threading.Thread(target=self.solve).start()) self.clean_button = Button(parent=self, surface=self.screen, text="Clean", font=self.button_font) self.clean_button.set_on_click_event( lambda: threading.Thread(target=self.clean).start()) self.buttons_layout = Layout(start=(self.margin, self.grid_height), max_size=self.window_width - 2 * self.margin) self.buttons_layout.add_element(self.puzzle_button) self.buttons_layout.add_element(self.hint_button) self.buttons_layout.add_element(self.check_button) self.buttons_layout.add_element(self.solve_button) self.buttons_layout.add_element(self.clean_button) self.info = None