コード例 #1
0
class Main(PygameBasics):
    def __init__(self):
        pygame.init()
        super().__init__()

        self.win_w, self.win_h = 1600, 900
        self.win = pygame.display.set_mode((self.win_w, self.win_h),
                                           pygame.RESIZABLE)

        self.algo = Algo(self.win)
        self.update_window_size(0)  ##

        ## Movement flags
        self.moving = False
        self.draw_outer_circle = False

    """ EVENTS """

    def left_click_events(self):
        pygame.mouse.get_rel()
        self.moving = True

    def right_click_events(self):
        pass

    def mouse_button_up_events(self):
        self.moving = False

    def keydown_events(self, event):
        if event.key == pygame.K_a:
            self.algo.update_k(-2)

        if event.key == pygame.K_d:
            self.algo.update_k(2)

        if event.key == pygame.K_SPACE:
            self.draw_outer_circle = not self.draw_outer_circle

        if event.key == pygame.K_q:
            pygame.quit(), quit()

    def keyup_events(self, event):
        pass

    def update_window_size(self, event):
        """ called from pygameBasicselif event.type == pygame.VIDEORESIZE: """
        if event:
            self.win = pygame.display.set_mode((event.w, event.h),
                                               pygame.RESIZABLE)

        ## When user resizes the window, adjust the w and h values everything else is anchored to
        self.win_w = self.win.get_width()
        self.win_h = self.win.get_height()

        self.algo.update_pixel_anchors(self.win_w, self.win_h)
        self.algo.configure()
        self.algo.configure_draw()

    """ UPDATES """

    def updates(self):
        self.update_window_size(False)
        self.algo.update(self.moving, self.draw_outer_circle)
        self.draw()

    def draw(self):
        self.win.fill(self.set.white)
        self.draw_page_border()
        self.algo.draw_things(self.win_w, self.win_h)

        pygame.display.update()

    """ MAIN """

    def main(self):
        while True:
            self.win.fill(self.set.background)
            self.set.clock.tick(self.set.FPS)
            self.events()
            self.updates()