Exemplo n.º 1
0
class Game():

    astar=None
    map=None
    game_over=False
    score=0
    done = False

    def __init__(self):
        self.astar=AStar(MAP_COLS,MAP_ROWS)
        self.map=self.astar.map
        self.astar.print_map()
        self.game_over=False
        self.score=0
        self.done=False



    def process_events(self):
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                game.done=True
                pygame.quit()
            if event.type==pygame.MOUSEBUTTONDOWN:
               if self.game_over==True:
                   self.__init__()
        return

    def run_logic(self):
        print('run logic')
        self.astar.currentNode.print()
        print(self.astar.endPos)
        self.astar.solverStep()
        if self.astar.currentNode.position==self.astar.endPos:
           self.game_over=True


    def display_frame(self,screen):
            # Set the screen background
            screen.fill(WHITE)

            # Draw the grid
            for row in range(MAP_ROWS):
                for column in range(MAP_COLS):
                    if self.map[row][column] == 0: color = WHITE
                    else: color=BLUE
                    pygame.draw.rect(screen,
                                     color,
                                     [(TILE_MARGIN + TILE_WIDTH) * column,
                                      (TILE_MARGIN + TILE_HEIGHT) * row,
                                      TILE_WIDTH,
                                      TILE_HEIGHT])


            for n in self.astar.closednodes:
                pygame.draw.rect(screen,LIGHT_GREY,[(TILE_MARGIN+TILE_WIDTH)*n.position[1],(TILE_MARGIN+TILE_HEIGHT)*n.position[0],TILE_WIDTH,TILE_HEIGHT])


            for n in self.astar.opennodes:
                pygame.draw.rect(screen,GREEN,[(TILE_MARGIN+TILE_WIDTH)*n.position[1],(TILE_MARGIN+TILE_HEIGHT)*n.position[0],TILE_WIDTH,TILE_HEIGHT])

            for pos in self.astar.path:
                 pygame.draw.rect(screen,RED,[(TILE_MARGIN+TILE_WIDTH)*pos[1],(TILE_MARGIN+TILE_HEIGHT)*pos[0],TILE_WIDTH,TILE_HEIGHT])

            pygame.draw.rect(screen,RED,[(TILE_MARGIN+TILE_WIDTH)*self.astar.endPos[1],(TILE_MARGIN+TILE_HEIGHT)*self.astar.endPos[0],TILE_WIDTH,TILE_HEIGHT])
            pygame.draw.rect(screen,RED,[(TILE_MARGIN+TILE_WIDTH)*self.astar.currentNode.position[1],(TILE_MARGIN+TILE_HEIGHT)*self.astar.currentNode.position[0],TILE_WIDTH,TILE_HEIGHT])
            pygame.display.flip()