コード例 #1
0
 def build_gui(self):
     super().build_gui()
     panel_rect = Rect(
         0, 0, 500,
         self.display.get_rect().height - (get_param('panel_padding') * 2))
     panel_rect.centerx = self.display.get_rect().centerx
     panel_rect.y = get_param('panel_padding')
     self.ui_elements['panel'] = UIPanel(panel_rect, 1, self.gui)
     # all other elements are relative
     scene_label_rect = Rect(0, 0, 400, get_param('element_height'))
     scene_label_rect.y = get_param('element_padding')
     scene_label_rect.centerx = panel_rect.w // 2  # midpoint of the panel
     self.ui_elements['scene_label'] = UILabel(scene_label_rect,
                                               "Map Editor Menu", self.gui,
                                               self.ui_elements['panel'])
     # buttons
     button_rect = Rect(0, 100, 400, get_param('element_height'))
     button_rect.centerx = panel_rect.w // 2
     self.ui_elements['btn_new'] = UIButton(button_rect, "New Map",
                                            self.gui,
                                            self.ui_elements['panel'])
     button_rect.y += get_param('element_height') + get_param(
         'element_padding')
     self.ui_elements['btn_load'] = UIButton(button_rect, "Load Map",
                                             self.gui,
                                             self.ui_elements['panel'])
     button_rect.y += get_param('element_height') + get_param(
         'element_padding')
     self.ui_elements['btn_back'] = UIButton(button_rect, "Back", self.gui,
                                             self.ui_elements['panel'])
コード例 #2
0
    def create_labels(self, root: Component) -> None:
        """ Create all labels in the settings menu. """
        label_style = Style(background_color=(0, 128, 255),
                            primary_color=(255, 255, 255))

        self.soundFX = Label(text="Adjust Sound FX",
                             rect=Rect(150, 120, 250, 50),
                             style=label_style,
                             parent=self.soundFx_panel)

        self.music = Label(text="Music volume",
                           rect=Rect(200, 200, 200, 50),
                           style=label_style,
                           parent=self.music_panel)

        self.window_mode = Label(text="Window Mode",
                                 rect=Rect(200, 300, 200, 100),
                                 style=label_style,
                                 parent=self.window_mode_panel)

        size = sm.SceneManager.instance.get_screen_size()
        title_rect = Rect(400, 45, 250, 50)
        title_rect.centerx = size[0] / 2

        self.menu = Label(text="CHANGE SETTINGS",
                          rect=title_rect,
                          style=label_style,
                          parent=root)
コード例 #3
0
 def draw_map(self, map_data=None):
     if self.show_damage_update:
         self.damage_layer_cache = {}
     WriteLog.debug(__name__, "绘制地图")
     self.clear_map() # 清空精灵
     if map_data is None:
         map_data = self.map_data
     temp_x = 0
     temp_y = 0
     px, py = self.trans_locate(0, 0)
     rect = Rect(px, py, self.block_size, self.block_size)
     ground = get_resource('0')  # 地板 先暂时这么搞吧
     self.fill_surface(ground, mode="repeat")
     PlayerCon = global_var.get_value("PlayerCon")
     self.add_sprite(PlayerCon)
     while temp_y < self.height:
         while temp_x < self.width:
             map_element = map_data[temp_y][temp_x]
             if int(map_element) != 0:
                 # sprite的显示需要接通group
                 name = str(map_element)
                 ret = get_resource(name)
                 px, py = self.trans_locate(temp_x, temp_y, "down")
                 rect.centerx = px
                 rect.bottom = py
                 if type(ret) is tuple:  # 属于精灵 (注意:此时不能直接导入精灵,因为先有map后有精灵)
                     img = ret[0]
                     img_rect = ret[1]  # 以资源本体大小显示 用以支持超过32*32的图像
                     img_rect.topleft = rect.topleft
                     sp = list(ret[2])
                     self.add_sprite(EventSprite(name, img, sp), fill_rect=img_rect)
                 elif ret is not None:
                     self.fill_surface(ret, fill_rect=rect)
                 # 显伤怪物id和位置的缓存
                 if map_element > 200:
                     if self.show_damage_update:
                         if map_element in self.damage_layer_cache:
                             self.damage_layer_cache[map_element]["loc"].append([temp_x, temp_y])
                         else:
                             self.damage_layer_cache[map_element] = {}
                             self.damage_layer_cache[map_element]["loc"] =[]
                             self.damage_layer_cache[map_element]["loc"].append([temp_x, temp_y])  
                             check_result = self.FUNCTION.get_damage_info(map_element)
                             critical = self.FUNCTION.get_criticals(map_element, 1, damage_info=check_result)
                             if check_result == False:
                                 self.damage_layer_cache[map_element]["damage"] = "???"
                             else:
                                 self.damage_layer_cache[map_element]["damage"] = check_result["damage"]
                             if critical == []:
                                 self.damage_layer_cache[map_element]["critical"] = 0
                             else:
                                 self.damage_layer_cache[map_element]["critical"] = critical[0][0]
             temp_x += 1
         temp_y += 1
         temp_x = 0
         self.temp_srufcae = self.surface.copy()
     self.show_damage_update = False
コード例 #4
0
 def build_gui(self):
     super().build_gui()
     panel_rect = Rect(
         0, 0, 500,
         self.display.get_rect().height - (get_param('panel_padding') * 2))
     panel_rect.centerx = self.display.get_rect().centerx
     panel_rect.y = get_param('panel_padding')
     self.ui_elements['panel'] = UIPanel(panel_rect, 1, self.gui)
     # all other elements are relative
     scene_label_rect = Rect(0, 0, 400, get_param('element_height'))
     scene_label_rect.y = get_param('element_padding')
     scene_label_rect.centerx = panel_rect.w // 2  # midpoint of the panel
     self.ui_elements['scene_label'] = UILabel(scene_label_rect,
                                               "Main Menu", self.gui,
                                               self.ui_elements['panel'])
     # buttons
     button_rect = Rect(0, 0, 400, get_param('element_height'))
     button_rect.y = scene_label_rect.bottom + get_param('element_padding')
     button_rect.centerx = panel_rect.w // 2
     self.ui_elements['btn_new'] = UIButton(button_rect, "New Game",
                                            self.gui,
                                            self.ui_elements['panel'])
     button_rect.y += get_param('element_height') + get_param(
         'element_padding')
     self.ui_elements['btn_load'] = UIButton(button_rect, "Load Game",
                                             self.gui,
                                             self.ui_elements['panel'])
     button_rect.y += get_param('element_height') + get_param(
         'element_padding')
     self.ui_elements['btn_editor'] = UIButton(button_rect, "Map Editor",
                                               self.gui,
                                               self.ui_elements['panel'])
     button_rect.y += get_param('element_height') + get_param(
         'element_padding')
     self.ui_elements['btn_settings'] = UIButton(button_rect, "Settings",
                                                 self.gui,
                                                 self.ui_elements['panel'])
     button_rect.y += get_param('element_height') + get_param(
         'element_padding')
     self.ui_elements['btn_quit'] = UIButton(button_rect, "Quit Game",
                                             self.gui,
                                             self.ui_elements['panel'])
コード例 #5
0
    def build_gui(self):
        super().build_gui()
        panel_rect = Rect(0, 0, 500, self.display.get_rect().height - (get_param('panel_padding') * 2))
        panel_rect.centerx = self.display.get_rect().centerx
        panel_rect.y = get_param('panel_padding')
        self.ui_elements['panel'] = UIPanel(panel_rect, 1, self.gui)
        # all other elements are relative
        scene_label_rect = Rect(0, 0, 400, get_param('element_height'))
        scene_label_rect.y = get_param('element_padding')
        scene_label_rect.centerx = panel_rect.w // 2  # midpoint of the panel
        self.ui_elements['scene_label'] = UILabel(scene_label_rect, "Select Existing Game Map", self.gui,
                                                  self.ui_elements['panel'])
        # buttons
        select_rect = Rect(0, 0, 400, get_param('element_height') * 3)
        select_rect.y = scene_label_rect.bottom + get_param('element_padding')
        select_rect.centerx = panel_rect.w // 2
        self.ui_elements['map_select'] = UISelectionList(select_rect, [f"Map {n}" for n in range(20)], self.gui,
                                                         container=self.ui_elements['panel'])

        preview_rect = Rect(0, 0, 256, get_param('element_height') * 8)
        preview_rect.y = select_rect.bottom + get_param('element_padding')
        preview_rect.centerx = panel_rect.w // 2
        self.ui_elements['preview'] = UILabel(preview_rect, "PREVIEW AREA", self.gui, self.ui_elements['panel'])

        button_rect = Rect(0, 0, 200, get_param('element_height'))
        button_rect.y = preview_rect.bottom + get_param('element_padding')
        button_rect.centerx = (panel_rect.w // 2) - 100
        self.ui_elements['btn_back'] = UIButton(button_rect, "Back", self.gui, self.ui_elements['panel'])
        button_rect.centerx = (panel_rect.w // 2) + 100
        self.ui_elements['btn_next'] = UIButton(button_rect, "Next", self.gui, self.ui_elements['panel'])
        self.ui_elements['btn_next'].disable()
コード例 #6
0
ファイル: rect_test.py プロジェクト: annie60/Xilarius
    def test_centerx(self):
        """Changing the centerx attribute moves the rect and does not change
           the rect's width
        """
        r = Rect(1, 2, 3, 4)
        new_centerx = r.centerx + 20
        expected_left = r.left + 20
        old_width = r.width

        r.centerx = new_centerx
        self.assertEqual(new_centerx, r.centerx)
        self.assertEqual(expected_left, r.left)
        self.assertEqual(old_width, r.width)
コード例 #7
0
ファイル: rect_test.py プロジェクト: CTPUG/pygame_cffi
 def test_centerx( self ):
     """Changing the centerx attribute moves the rect and does not change
        the rect's width
     """
     r = Rect( 1, 2, 3, 4 )
     new_centerx = r.centerx + 20
     expected_left = r.left + 20
     old_width = r.width
     
     r.centerx = new_centerx
     self.assertEqual( new_centerx, r.centerx )
     self.assertEqual( expected_left, r.left )
     self.assertEqual( old_width, r.width )
コード例 #8
0
 def draw_icon(self, map_element, x, y):
     px, py = self.trans_locate(0, 0)
     rect = Rect(px, py, self.block_size, self.block_size)
     # sprite的显示需要接通group
     name = str(map_element)
     ret = get_resource(name)
     px, py = self.trans_locate(x, y, "down")
     rect.centerx = px
     rect.bottom = py
     if type(ret) is tuple:  # 属于精灵 (注意:此时不能直接导入精灵,因为先有map后有精灵)
         img = ret[0]
         img_rect = ret[1]  # 以资源本体大小显示 用以支持超过32*32的图像
         img_rect.topleft = rect.topleft
         sp = list(ret[2])
         self.add_sprite(EventSprite(name, img, sp), fill_rect=img_rect)
     elif ret is not None:
         self.fill_surface(ret, fill_rect=rect)
コード例 #9
0
ファイル: settings.py プロジェクト: ectrimble20/MicroWorld
 def build_gui(self):
     super().build_gui()
     panel_rect = Rect(
         0, 0, 500,
         self.display.get_rect().height - (get_param('panel_padding') * 2))
     panel_rect.centerx = self.display.get_rect().centerx
     panel_rect.y = get_param('panel_padding')
     self.ui_elements['panel'] = UIPanel(panel_rect, 1, self.gui)
     # all other elements are relative
     scene_label_rect = Rect(0, 0, 400, get_param('element_height'))
     scene_label_rect.y = get_param('element_padding')
     scene_label_rect.centerx = panel_rect.w // 2  # midpoint of the panel
     self.ui_elements['scene_label'] = UILabel(scene_label_rect, "Settings",
                                               self.gui,
                                               self.ui_elements['panel'])
     # screen size
     label_rect = Rect(0, 0, 150, get_param('element_height'))
     label_rect.y += scene_label_rect.bottom + get_param('element_padding')
     dd_rect = Rect(0, 0, 250, get_param('element_height'))
     dd_rect.y = label_rect.y
     label_rect.centerx = 125
     dd_rect.centerx = 325
     self.ui_elements['d_size_label'] = UILabel(label_rect, "Display Size",
                                                self.gui,
                                                self.ui_elements['panel'])
     self.ui_elements['dd_d_size'] = UIDropDownMenu(
         get_param('display_sizes'), get_param('current_display_size'),
         dd_rect, self.gui, self.ui_elements['panel'])
     # full screen
     label_rect.y += get_param('element_height') + get_param(
         'element_padding')
     dd_rect.y = label_rect.y
     self.ui_elements['fs_label'] = UILabel(label_rect, "Full Screen",
                                            self.gui,
                                            self.ui_elements['panel'])
     self.ui_elements['dd_fs'] = UIDropDownMenu(
         ["On", "Off"], get_param('display_full_screen_value'), dd_rect,
         self.gui, self.ui_elements['panel'])
     # buttons
     button_rect = Rect(0, 0, 200, get_param('element_height'))
     button_rect.y = label_rect.bottom + get_param('element_padding')
     button_rect.centerx = (panel_rect.w // 2) - 100
     self.ui_elements['btn_back'] = UIButton(button_rect, "Back", self.gui,
                                             self.ui_elements['panel'])
     # the apply button always starts off disabled
     button_rect.centerx = (panel_rect.w // 2) + 100
     self.ui_elements['btn_apply'] = UIButton(button_rect, "Apply",
                                              self.gui,
                                              self.ui_elements['panel'])
     self.ui_elements['btn_apply'].disable()
     # re-assign values for our check parameters, this is to control the apply buttons state
     self._check_screen_size = get_param('current_display_size')
     self._check_full_screen = get_param('display_full_screen_value')
コード例 #10
0
ファイル: gui.py プロジェクト: Dancheek/coop_game
def draw_text(text='sample text', color=(255, 255, 255), pos=(0, 0), surface=None, align_x='left', align_y='top'):
	if (surface == None):
		surface = api.screen
	text_rect = Rect(0, 0, *font.size(text))

	if (align_x == 'left'):
		text_rect.left = pos[0]
	elif (align_x == 'center'):
		text_rect.centerx = pos[0]
	elif (align_x == 'right'):
		text_rect.right = pos[0]

	if (align_y == 'top'):
		text_rect.top = pos[1]
	elif (align_y == 'center'):
		text_rect.centery = pos[1]
	elif (align_y == 'bottom'):
		text_rect.bottom = pos[1]

	surface.blit(font.render(text, 1, color), text_rect)
コード例 #11
0
ファイル: pgutils.py プロジェクト: DigiDuncan/LaserGame
def align_rect(outer: pygame.Rect,
               inner: pygame.Rect,
               coords,
               *,
               halign: Literal["left", "center", "right"] = "left",
               valign: Literal["top", "center", "bottom"] = "top",
               outer_halign: Literal["left", "center", "right"] = "left",
               outer_valign: Literal["top", "center", "bottom"] = "top"):
    """Calculate coordinates for an inner rectangle aligned to an outer rectangle"""
    x, y = coords

    if outer_halign == "left":
        pass
    elif outer_halign == "center":
        x = outer.centerx + x
    elif outer_halign == "right":
        x = outer.right + x

    if outer_valign == "top":
        pass
    elif outer_valign == "center":
        y = outer.centery + y
    elif outer_valign == "bottom":
        y = outer.bottom + y

    if halign == "left":
        inner.left = x
    elif halign == "center":
        inner.centerx = x
    elif halign == "right":
        inner.right = x

    if valign == "top":
        inner.top = y
    elif valign == "center":
        inner.centery = y
    elif valign == "bottom":
        inner.bottom = y

    return inner.topleft
コード例 #12
0
def set_screensize(screensize):
    """
    Set the physical screen size in pixels.

    Calculates the transformations to and from game space, using an aspect-preserving
    scale.
    """
    global screenarea, screenplayarea
    global s_f_g_w, s_f_g_h, s_f_g_x, s_f_g_y
    global g_f_s_w, g_f_s_h, g_f_s_x, g_f_s_y

    # find screenarea rect
    # the rect in screen space that the game will take up
    # by doing an aspect preserve scale, and centering in the middle of the screen
    if screensize[0] / screensize[1] > GAME_AREA.width / GAME_AREA.height:
        # game uses full height of screen
        screenarea = Rect(0, 0,
                          screensize[1] * GAME_AREA.width / GAME_AREA.height,
                          screensize[1])
        screenarea.centerx = screensize[0] / 2
    else:
        # game uses full width of screen
        screenarea = Rect(0, 0, screensize[0],
                          screensize[0] * GAME_AREA.height / GAME_AREA.width)
        screenarea.centery = screensize[1] / 2

    # screen_from_game:
    s_f_g_w = screenarea.width / GAME_AREA.width
    s_f_g_h = screenarea.height / GAME_AREA.height
    s_f_g_x = screenarea.x - GAME_AREA.x * s_f_g_w
    s_f_g_y = screenarea.y - GAME_AREA.y * s_f_g_h

    # game_from_screen
    g_f_s_w = GAME_AREA.width / screenarea.width
    g_f_s_h = GAME_AREA.height / screenarea.height
    g_f_s_x = GAME_AREA.x - screenarea.x * g_f_s_w
    g_f_s_y = GAME_AREA.y - screenarea.y * g_f_s_h

    screenplayarea = screenrect_from_gamerect(GAME_PLAY_AREA)
コード例 #13
0
 def build_gui(self):
     super().build_gui()
     panel_rect = Rect(
         0, 0, 500,
         self.display.get_rect().height - (get_param('panel_padding') * 2))
     panel_rect.centerx = self.display.get_rect().centerx
     panel_rect.y = get_param('panel_padding')
     self.ui_elements['panel'] = UIPanel(panel_rect, 1, self.gui)
     # all other elements are relative
     scene_label_rect = Rect(0, 0, 400, get_param('element_height'))
     scene_label_rect.y = get_param('element_padding')
     scene_label_rect.centerx = panel_rect.w // 2  # midpoint of the panel
     self.ui_elements['scene_label'] = UILabel(scene_label_rect,
                                               "Load Saved Game", self.gui,
                                               self.ui_elements['panel'])
     # buttons
     select_rect = Rect(0, 0, 400, get_param('element_height') * 3)
     select_rect.y = scene_label_rect.bottom + get_param('element_padding')
     select_rect.centerx = panel_rect.w // 2
     self.ui_elements['game_select'] = UISelectionList(
         select_rect, [f"Game {n}" for n in range(5)],
         self.gui,
         container=self.ui_elements['panel'])
     button_rect = Rect(0, 0, 200, get_param('element_height'))
     button_rect.y = select_rect.bottom + get_param('element_padding')
     button_rect.centerx = (panel_rect.w // 2) - 100
     self.ui_elements['btn_load'] = UIButton(button_rect, "Load Save",
                                             self.gui,
                                             self.ui_elements['panel'])
     self.ui_elements['btn_load'].disable()
     button_rect.centerx = (panel_rect.w // 2 + 100)
     self.ui_elements['btn_delete'] = UIButton(button_rect, "Delete Save",
                                               self.gui,
                                               self.ui_elements['panel'])
     self.ui_elements['btn_delete'].disable()
     button_rect.w = 400
     button_rect.centerx = panel_rect.w // 2
     button_rect.y += get_param('element_height') + get_param(
         'element_padding')
     self.ui_elements['btn_back'] = UIButton(button_rect, "Back", self.gui,
                                             self.ui_elements['panel'])
コード例 #14
0
ファイル: map_select.py プロジェクト: ectrimble20/MicroWorld
    def build_gui(self):
        super().build_gui()
        panel_rect = Rect(
            0, 0, 500,
            self.display.get_rect().height - (get_param('panel_padding') * 2))
        panel_rect.centerx = self.display.get_rect().centerx
        panel_rect.y = get_param('panel_padding')
        self.ui_elements['panel'] = UIPanel(panel_rect, 1, self.gui)
        # all other elements are relative
        scene_label_rect = Rect(0, 0, 400, get_param('element_height'))
        scene_label_rect.y = get_param('element_padding')
        scene_label_rect.centerx = panel_rect.w // 2  # midpoint of the panel
        self.ui_elements['scene_label'] = UILabel(scene_label_rect,
                                                  "Start New Game", self.gui,
                                                  self.ui_elements['panel'])

        l_side_rect = Rect(0, 0, 150, get_param('element_height'))
        l_side_rect.centerx = 125
        l_side_rect.y = scene_label_rect.bottom + get_param('element_padding')
        self.ui_elements['l_dd_label'] = UILabel(l_side_rect, "Map Type",
                                                 self.gui,
                                                 self.ui_elements['panel'])
        dd_rect = Rect(0, 0, 250, get_param('element_height'))
        dd_rect.y = l_side_rect.y
        dd_rect.centerx = 325
        self.ui_elements['l_dd_game_map'] = UIDropDownMenu(
            ['Existing', 'Random'], 'Existing', dd_rect, self.gui,
            self.ui_elements['panel'])
        btn_rect = Rect(0, 0, 200, get_param('element_height'))
        btn_rect.centerx = (panel_rect.w) // 2 - 100
        btn_rect.y = dd_rect.bottom + get_param('element_padding')
        self.ui_elements['btn_back'] = UIButton(btn_rect, "Back", self.gui,
                                                self.ui_elements['panel'])
        btn_rect = Rect(0, 0, 200, get_param('element_height'))
        btn_rect.centerx = (panel_rect.w // 2) + 100
        btn_rect.y = dd_rect.bottom + get_param('element_padding')
        self.ui_elements['btn_next'] = UIButton(btn_rect, "Next", self.gui,
                                                self.ui_elements['panel'])
コード例 #15
0
    def build_gui(self):
        super().build_gui()
        panel_rect = Rect(
            0, 0, 500,
            self.display.get_rect().height - (get_param('panel_padding') * 2))
        panel_rect.centerx = self.display.get_rect().centerx
        panel_rect.y = get_param('panel_padding')
        self.ui_elements['panel'] = UIPanel(panel_rect, 1, self.gui)
        # all other elements are relative
        scene_label_rect = Rect(0, 0, 400, get_param('element_height'))
        scene_label_rect.y = get_param('element_padding')
        scene_label_rect.centerx = panel_rect.w // 2  # midpoint of the panel
        self.ui_elements['scene_label'] = UILabel(scene_label_rect,
                                                  "Generate Random Map",
                                                  self.gui,
                                                  self.ui_elements['panel'])
        # map size
        label_rect = Rect(0, 0, 150, get_param('element_height'))
        label_rect.y += scene_label_rect.bottom + get_param('element_padding')
        dd_rect = Rect(0, 0, 250, get_param('element_height'))
        dd_rect.y = label_rect.y
        label_rect.centerx = 125
        dd_rect.centerx = 325
        self.ui_elements['d_size_label'] = UILabel(label_rect, "Map Size",
                                                   self.gui,
                                                   self.ui_elements['panel'])
        self.ui_elements['dd_map_size'] = UIDropDownMenu(
            ['64', '128', '256'], '64', dd_rect, self.gui,
            self.ui_elements['panel'])
        # Seed
        label_rect.y += get_param('element_height') + get_param(
            'element_padding')
        ip_rect = Rect(0, 0, 180, get_param('element_height'))
        ip_rect.centerx = (panel_rect.w // 2) + 30
        ip_rect.y = label_rect.y
        s_btn_rect = Rect(0, 0, 60, get_param('element_height'))
        s_btn_rect.x = ip_rect.right + get_param('element_padding')
        s_btn_rect.y = ip_rect.y
        self.ui_elements['seed_label'] = UILabel(label_rect, 'Map Seed',
                                                 self.gui,
                                                 self.ui_elements['panel'])
        self.ui_elements['input_seed'] = UITextEntryLine(
            ip_rect, self.gui, self.ui_elements['panel'])
        self.ui_elements['btn_rnd_seed'] = UIButton(s_btn_rect, 'Random',
                                                    self.gui,
                                                    self.ui_elements['panel'])
        # I want to add two sliders, 1 for mountains and 1 for water, these would be used to control the upper
        # and lower limits of the height mapping.
        h_sl_ops = (0, 100)
        h_sl_sel = 50
        label_rect.y += get_param('element_height') + get_param(
            'element_padding')
        h_sl_rect = Rect(0, 0, 200, get_param('element_height'))
        h_sl_rect.centerx = (panel_rect.w //
                             2) + get_param('element_padding') + 30
        h_sl_rect.y = label_rect.y
        self.ui_elements['hsl_grass'] = UILabel(label_rect, 'Grass', self.gui,
                                                self.ui_elements['panel'])
        self.ui_elements['hs_grass'] = UIHorizontalSlider(
            h_sl_rect, h_sl_sel, h_sl_ops, self.gui, self.ui_elements['panel'])

        label_rect.y += get_param('element_height') + get_param(
            'element_padding')
        h_sl_rect.y = label_rect.y
        self.ui_elements['hsl_water'] = UILabel(label_rect, 'Water', self.gui,
                                                self.ui_elements['panel'])
        self.ui_elements['hs_water'] = UIHorizontalSlider(
            h_sl_rect, h_sl_sel, h_sl_ops, self.gui, self.ui_elements['panel'])

        label_rect.y += get_param('element_height') + get_param(
            'element_padding')
        h_sl_rect.y = label_rect.y
        self.ui_elements['hsl_mountain'] = UILabel(label_rect, 'Mountain',
                                                   self.gui,
                                                   self.ui_elements['panel'])
        self.ui_elements['hs_mountain'] = UIHorizontalSlider(
            h_sl_rect, h_sl_sel, h_sl_ops, self.gui, self.ui_elements['panel'])

        # buttons
        button_rect = Rect(0, 0, 200, get_param('element_height'))
        button_rect.centerx = panel_rect.w // 2
        button_rect.y = label_rect.bottom + get_param('element_padding')
        self.ui_elements['btn_preview'] = UIButton(button_rect,
                                                   "Generate Preview",
                                                   self.gui,
                                                   self.ui_elements['panel'])
        button_rect.w = 200
        button_rect.y += get_param('element_height') + get_param(
            'element_padding')
        button_rect.centerx = (panel_rect.w // 2) - 100
        self.ui_elements['btn_back'] = UIButton(button_rect, "Back", self.gui,
                                                self.ui_elements['panel'])
        # the apply button always starts off disabled
        button_rect.centerx = (panel_rect.w // 2) + 100
        self.ui_elements['btn_next'] = UIButton(button_rect, "Next", self.gui,
                                                self.ui_elements['panel'])
        pv_rect = Rect(0, 0, 300, 300)
        pv_rect.centerx = panel_rect.w // 2
        pv_rect.y = button_rect.bottom + get_param('element_padding')
        self.ui_elements['pv_image'] = UIImage(pv_rect, self.pv_img, self.gui,
                                               self.ui_elements['panel'])
コード例 #16
0
    def __init__(self, gui) -> None:
        """
        Creates a button with attributes

        Note:
            If colour is none then the button is invisible

            on_click is a function that will exectute when the
            button has been pressed
        """
        self.gui = gui

        # Title
        self.title_rect = Rect(120,
                               self.gui.height // 8,
                               self.gui.width // 2,
                               self.gui.width // 2 * 244 / 925)

        self.title_rect.centerx = self.gui.width // 2

        self.game_title = pygame.image.load('assets/A45.png').convert_alpha()
        self.game_title = pygame.transform.smoothscale(
            self.game_title, self.title_rect.size)

        # Start 2 Player Button
        two_player_rect = Rect(0, 0, 200, 50)
        two_player_rect.centerx = self.gui.width // 2
        two_player_rect.centery = self.gui.height // 2 - 50

        two_player_button = Button(two_player_rect,
                                   self.gui.start_game_two_player, (255, 255, 255),
                                   '2 Player')
        # Start AI Easy Button
        easy_rect = Rect(0, 0, 200, 50)
        easy_rect.centerx = self.gui.width // 2
        easy_rect.centery = self.gui.height // 2 + 50

        easy_button = Button(easy_rect,
                                   self.gui.start_game_easy, (255, 255, 255),
                                   'Easy AI')
        # Start AI Hard Button
        hard_rect = Rect(0, 0, 200, 50)
        hard_rect.centerx = self.gui.width // 2
        hard_rect.centery = self.gui.height // 2 + 150

        hard_button = Button(hard_rect,
                                   self.gui.start_game_hard, (255, 255, 255),
                                   'Hard AI')

        # Quit Button
        end_rect = Rect(0, 0, 200, 50)
        end_rect.centerx = self.gui.width // 2
        end_rect.centery = self.gui.height // 2 + 250

        end_game_button = Button(end_rect,
                                 self.gui.end_game, (255, 255, 255),
                                 'Quit Game')

        self.buttons = []
        self.buttons.append(two_player_button)
        self.buttons.append(easy_button)
        self.buttons.append(hard_button)
        self.buttons.append(end_game_button)