示例#1
0
def main():
    screen = pygame.display.set_mode(size)
    pygame.display.set_caption('Smart Rocket')

    obs = np.empty(3, dtype=object)
    obs[0] = Obstacle(obsPosition1[0], obsPosition1[1])
    obs[1] = Obstacle(obsPosition2[0], obsPosition2[1])
    obs[2] = Obstacle(obsPosition3[0], obsPosition3[1])
    target = Target(targetPosition)
    pop = Population(screen, amountOfRockets, lifeSpan, mutationRate, target)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.display.quit()
                sys.exit()
        ## evolving code
        pop.run(obs, target)
        obs[0].draw(screen)
        obs[1].draw(screen)
        obs[2].draw(screen)
        target.draw(screen)
        ##

        pygame.display.update()
        screen.fill((0, 0, 0))
class Game(object):
    def __init__(self):
        pygame.init()
        size = (WIDTH, HEIGHT)
        if FULLSCREEN:
            self.displaySurf = pygame.display.set_mode(
                size, pygame.HWSURFACE | pygame.FULLSCREEN)
        else:
            self.displaySurf = pygame.display.set_mode(size, pygame.HWSURFACE)
        self.population = Population()
        self.clock = pygame.time.Clock()

        self.target = Target()
        self.target.set_center(TARGETPOS)

        self.text = Text()

        self.obstacles = [Obstacle()]

        # for i in range(0,MAXOBSTACLES):
        #     print 'new obstacle',len(self.obstacles)
        #     obs = Obstacle(self.obstacles)
        #     self.obstacles.append(obs)

    def draw(self):
        self.displaySurf.fill((0, 0, 0))
        self.target.draw(self.displaySurf)
        self.text.set_text("Lifetime: " + str(self.population.count),
                           "Generation: " + str(self.population.gen))
        self.text.draw(self.displaySurf)
        if self.population.gen > len(self.obstacles) and len(
                self.obstacles) < MAXOBSTACLES:
            self.obstacles.append(Obstacle(self.obstacles))
            print('novo obstaculo')
        for i in self.obstacles:
            i.draw(self.displaySurf)
        self.population.checkCollide(self.obstacles)
        self.population.draw(self.displaySurf)

    def main_loop(self):
        while True:
            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == K_f:
                        pygame.display.toggle_fullscreen()
                    if event.key == K_ESCAPE:
                        sys.exit()
                        pygame.quit()
                        exit()
                if event.type == pygame.QUIT:
                    sys.exit()
            self.draw()
            pygame.display.flip()