Пример #1
0
class Debug:
    def __init__(self, width=1280, height=720):
        pygame.init()
        self.width = width
        self.height = height
        self.fpsClock = pygame.time.Clock()
        self.screen = pygame.display.set_mode((self.width, self.height))
        pygame.display.set_caption("Llama Simulator 3000: Alpha v0.007")

        # color for background
        self.lightgreen = pygame.Color(130, 255, 130)

        # mouse
        self.mouseX, self.mouseY = 0, 0

        # font for text display
        self.font = pygame.font.Font("freesansbold.ttf", 18)

        # lists of all things on the screen
        self.fruitlist = []
        self.llamalist = []
        self.tigerlist = []

        # Player
        self.player = Player((self.width / 2, self.height / 2))

        # Loop
        self.done = False

    #### MAIN LOOP FUCTIONS ####
    def handleEvents(self):
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                exit()
            elif event.type == MOUSEMOTION:
                self.mouseX, self.mouseY = event.pos
            elif event.type == MOUSEBUTTONUP:
                continue  # maybe a movement action?
            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    pygame.quit()
                    exit()
                if event.key == K_UP:
                    self.player.moveUp = True
                    self.player.moveDown = False
                    if not self.player.moveLeft and not self.player.moveRight:
                        # only change the direction to up if the player wasn't moving left/right
                        self.player.direction = "up"
                elif event.key == K_DOWN:
                    self.player.moveDown = True
                    self.player.moveUp = False
                    if not self.player.moveLeft and not self.player.moveRight:
                        self.player.direction = "down"
                elif event.key == K_LEFT:
                    self.player.moveLeft = True
                    self.player.moveRight = False
                    if not self.player.moveUp and not self.player.moveDown:
                        self.player.direction = "left"
                elif event.key == K_RIGHT:
                    self.player.moveRight = True
                    self.player.moveLeft = False
                    if not self.player.moveUp and not self.player.moveDown:
                        self.player.direction = "right"
                elif event.key == K_c:  # clears everything
                    del self.fruitlist[:]
                    del self.llamalist[:]
                    del self.tigerlist[:]
                elif event.key == K_l:
                    self.llamalist.append(Llama((self.mouseX, self.mouseY)))
                elif event.key == K_p:
                    self.fruitlist.append(Pear((self.mouseX, self.mouseY)))
                elif event.key == K_a:
                    self.fruitlist.append(Apple((self.mouseX, self.mouseY)))
                elif event.key == K_t:
                    self.tigerlist.append(Tiger((self.mouseX, self.mouseY)))
            elif event.type == KEYUP:
                if event.key == K_UP:
                    self.player.moveUp = False
                    # if the player was moving in a sideways direction before, change the self.direction the player is facing.
                    if self.player.moveLeft:
                        self.player.direction = "left"
                    if self.player.moveRight:
                        self.player.direction = "right"
                elif event.key == K_DOWN:
                    self.player.moveDown = False
                    if self.player.moveLeft:
                        self.player.direction = "left"
                    if self.player.moveRight:
                        self.player.direction = "right"
                elif event.key == K_LEFT:
                    self.player.moveLeft = False
                    if self.player.moveUp:
                        self.player.direction = "up"
                    if self.player.moveDown:
                        self.player.direction = "down"
                elif event.key == K_RIGHT:
                    self.player.moveRight = False
                    if self.player.moveUp:
                        self.player.direction = "up"
                    if self.player.moveDown:
                        self.player.direction = "down"

    def update(self):
        self.updateMap()
        self.updateLists()
        self.updatePlayer()

    def draw(self):
        # order matters here
        self.drawMap()
        self.drawPlayer()
        self.drawLists()

    #### SUB FUNCTIONS ####
    def updateMap(self):
        pass

    def updateLists(self):
        # Llama
        for each in self.llamalist:
            each.update(self.fruitlist)

        # Tiger
        for each in self.tigerlist:
            each.update(self.llamalist)

    def updatePlayer(self):
        self.player.update()

    def drawMap(self):
        self.screen.fill(self.lightgreen)

    def drawPlayer(self):
        self.player.paint(self.screen)

    def drawLists(self):
        # Fruit
        for each in self.fruitlist:
            # fruit is 24x24 so half is 12
            self.screen.blit(each.getImage(), (int(each.x - 12), int(each.y - 12)))

        # Llama
        for each in self.llamalist:
            each.paint(self.screen)

        # Tiger
        for each in self.tigerlist:
            each.paint(self.screen)

    def mainLoop(self):
        framecount = 0  # frame count for debugging
        while not self.done:
            self.handleEvents()
            self.update()
            self.draw()

            # updates certain sections of the screen based on parameters (No parameters = full screen refresh)
            pygame.display.update()
            # print("frame: " + str(framecount))
            framecount += 1
            self.fpsClock.tick(30)