コード例 #1
0
ファイル: main.py プロジェクト: KValexander/pygame_vn
class Main:
    def __init__(self):
        pygame.init()

        # Game screen
        self.screen = pygame.display.set_mode(SIZE)
        pygame.display.set_caption("VN")

        # Game icon
        gameIcon = loadImage(folder + "assets/icon.png")
        pygame.display.set_icon(gameIcon)

        # Clock
        self.clock = pygame.time.Clock()

        # For the future
        self.screens = {}
        self.currentScreen = ""
        self.screens["main"] = False
        # self.screens[self.currentScreen]

        self.loading()

    # Loading data
    def loading(self):
        # Instances of classes
        self.play = Play(self.screen)

        # Start game
        self.start()

    # Game start
    def start(self):
        loop.running = True
        loop.mainloop = True
        self.gameloop()

    # Handling events
    def events(self):
        for event in pygame.event.get():
            # Disabling the game
            if event.type == pygame.QUIT:
                self.end()

            # Playing events
            if loop.playloop:
                self.play.events(event)

            # Handling button events
            for button in buttons:
                # Handling button click
                if event.type == pygame.MOUSEBUTTONDOWN:
                    if button.rect.collidepoint(event.pos):
                        create(self.buttonAction(button.name))

                # Hovering over the button
                if event.type == pygame.MOUSEMOTION:
                    if (button.rect.collidepoint(event.pos)):
                        button.hover = True
                    else:
                        button.hover = False

            # Handling cells events
            for cell in cells:
                cell.events(event)

    # Actions for buttons
    def buttonAction(self, name):
        screen = ""
        if name == "hsave" or name == "hload": return

        # Exit button
        if name == "exit" or name == "hexit": self.end()
        # Start play button
        if name == "play":
            createPlay()
            self.play.loading()
            screen = "play"
        # Load button
        if name == "load":
            if loop.loadloop:
                screen = "main"
            else:
                screen = "load"
        # Settings button
        if name == "settings":
            if loop.settingsloop:
                screen = "main"
            else:
                screen = "settings"
        # Back to main menu
        if name == "back" or name == "hmenu":
            screen = "main"

        return screen

    # Intermediant calculations
    def update(self):
        # Updates per second
        self.clock.tick(FPS)

        # Handling events
        self.events()

    # Rendering game objects
    def render(self):
        # Background color
        self.screen.fill(WHITE)

        # Rendering main screen
        if loop.mainloop or loop.loadloop or loop.settingsloop:
            # Background image
            scImage(self.screen, folder + "assets/gui/backgroundmenu.jpg",
                    (0, 0), SIZE)

        # Rendering play screen
        if loop.playloop:
            self.play.draw()

        # Rendering interface
        drawInterface(self.screen)

        pygame.display.update()

    # Gameloop
    def gameloop(self):
        while loop.running:
            self.update()
            self.render()

    # End of the game
    def end(self):
        loop.running = False