Ejemplo n.º 1
1
    def initialize(self):
        pygame.init()
        self.screen = pygame.display.set_mode(window_size)
        self.screen_width=self.screen.get_rect().width
        self.screen_height=self.screen.get_rect().height
        preload()
        self.map = Map(self,'media/map.txt', images['tiles'],self.screen) 
        temp_width = 150
        temp_height = 150
        self.minimap = MiniMap(self.engine,self,self.map,Rect([self.screen.get_rect().width-temp_width,0,temp_width,temp_height]))
        #self.clock = pygame.time.Clock()
        pygame.time.set_timer(USEREVENT, 1000)
        self.font = pygame.font.Font('media/freesansbold.ttf', 40)
        self.timer = pygame.time.Clock()

        self.engine.screen_width = self.screen.get_rect().width
        self.engine.screen_height = self.screen.get_rect().height
        self.engine.world_width = self.map.world_width
        self.engine.world_height = self.map.world_height
        self.engine.tile_width = self.map.tile_width
        self.engine.tile_height = self.map.tile_height

        for l in self.engine._lifes:
            l.sprite = get_sprite(l.sprite_name) (l)
Ejemplo n.º 2
0
    def initialize(self):
        pygame.init()
        self.screen = pygame.display.set_mode(window_size)
        self.screen_width = self.screen.get_rect().width
        self.screen_height = self.screen.get_rect().height
        preload()
        self.map = Map(self, 'media/map.txt', images['tiles'], self.screen)
        temp_width = 150
        temp_height = 150
        self.minimap = MiniMap(
            self.engine, self, self.map,
            Rect([
                self.screen.get_rect().width - temp_width, 0, temp_width,
                temp_height
            ]))
        #self.clock = pygame.time.Clock()
        pygame.time.set_timer(USEREVENT, 1000)
        self.font = pygame.font.Font('media/freesansbold.ttf', 40)
        self.timer = pygame.time.Clock()

        self.engine.screen_width = self.screen.get_rect().width
        self.engine.screen_height = self.screen.get_rect().height
        self.engine.world_width = self.map.world_width
        self.engine.world_height = self.map.world_height
        self.engine.tile_width = self.map.tile_width
        self.engine.tile_height = self.map.tile_height

        for l in self.engine._lifes:
            l.sprite = get_sprite(l.sprite_name)(l)
Ejemplo n.º 3
0
class Render:
    def __init__(self, engine):
        self.engine = engine

    def initialize(self):
        pygame.init()
        self.screen = pygame.display.set_mode(window_size)
        self.screen_width = self.screen.get_rect().width
        self.screen_height = self.screen.get_rect().height
        preload()
        self.map = Map(self, 'media/map.txt', images['tiles'], self.screen)
        temp_width = 150
        temp_height = 150
        self.minimap = MiniMap(
            self.engine, self, self.map,
            Rect([
                self.screen.get_rect().width - temp_width, 0, temp_width,
                temp_height
            ]))
        #self.clock = pygame.time.Clock()
        pygame.time.set_timer(USEREVENT, 1000)
        self.font = pygame.font.Font('media/freesansbold.ttf', 40)
        self.timer = pygame.time.Clock()

        self.engine.screen_width = self.screen.get_rect().width
        self.engine.screen_height = self.screen.get_rect().height
        self.engine.world_width = self.map.world_width
        self.engine.world_height = self.map.world_height
        self.engine.tile_width = self.map.tile_width
        self.engine.tile_height = self.map.tile_height

        for l in self.engine._lifes:
            l.sprite = get_sprite(l.sprite_name)(l)

    def loop(self):
        fps = 0
        message = None
        viewpos = (0, 0)
        sx, sy = self.screen.get_size()
        mapsurf = pygame.Surface(self.screen.get_size())
        fresh = True
        group = pygame.sprite.RenderUpdates()
        while True:
            self.timer.tick()
            mousex, mousey = pygame.mouse.get_pos()
            mouse_in_minimap = self.minimap.contain((mousex, mousey))
            border = 100
            cond1 = mousex < border
            cond2 = mousey < border and not mouse_in_minimap
            cond3 = mousex > self.screen.get_rect(
            ).width - border and not mouse_in_minimap
            cond4 = mousey > self.screen.get_rect().height - border
            moveunit = 20
            x, y = self.map.get_viewpos()
            if cond1:
                x -= moveunit
            elif cond2:
                y -= moveunit
            elif cond3:
                x += moveunit
            elif cond4:
                y += moveunit
            self.map.set_viewpos(self.map.limit((x, y)))

            for event in pygame.event.get():
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
                elif event.type == KEYDOWN and event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                elif event.type == MOUSEBUTTONDOWN:
                    if mouse_in_minimap:
                        self.minimap.mouse(event.pos)
                    else:
                        x, y = self.map.get_viewpos()
                        dx, dy = event.pos
                        x += dx - sx / 2
                        y += dy - sy / 2
                        viewpos = self.map.limit((x, y))
                        self.map.set_viewpos(viewpos)
                elif event.type == USEREVENT:
                    fps = self.timer.get_fps()
            s = " fps: %.2f pos: %s" % (fps, str(self.map.get_viewpos()))
            message = self.font.render(s, 0, (255, 255, 255)).convert()

            self.map.draw()

            for pos in self.map.get_range():
                if self.engine._tile_lifes.has_key(pos):
                    for life in self.engine._tile_lifes[pos]:
                        sprite = life.sprite
                        img = sprite.image
                        temp = img.get_rect().move(
                            life.position[0] - self.map.viewpos[0],
                            life.position[1] - self.map.viewpos[1])
                        if math.cos(life.direction) < 0:
                            img = pygame.transform.flip(img, 1, 0)
                        self.screen.blit(img, temp)
            self.screen.blit(message, (0, 0))
            self.minimap.draw(self.screen)
            pygame.display.update()

            stackless.schedule()
Ejemplo n.º 4
0
class Render:
    def __init__(self,engine):
        self.engine = engine

    def initialize(self):
        pygame.init()
        self.screen = pygame.display.set_mode(window_size)
        self.screen_width=self.screen.get_rect().width
        self.screen_height=self.screen.get_rect().height
        preload()
        self.map = Map(self,'media/map.txt', images['tiles'],self.screen) 
        temp_width = 150
        temp_height = 150
        self.minimap = MiniMap(self.engine,self,self.map,Rect([self.screen.get_rect().width-temp_width,0,temp_width,temp_height]))
        #self.clock = pygame.time.Clock()
        pygame.time.set_timer(USEREVENT, 1000)
        self.font = pygame.font.Font('media/freesansbold.ttf', 40)
        self.timer = pygame.time.Clock()

        self.engine.screen_width = self.screen.get_rect().width
        self.engine.screen_height = self.screen.get_rect().height
        self.engine.world_width = self.map.world_width
        self.engine.world_height = self.map.world_height
        self.engine.tile_width = self.map.tile_width
        self.engine.tile_height = self.map.tile_height

        for l in self.engine._lifes:
            l.sprite = get_sprite(l.sprite_name) (l)

    def loop(self):
        fps = 0
        message = None
        viewpos = (0,0)
        sx, sy = self.screen.get_size()
        mapsurf = pygame.Surface(self.screen.get_size())
        fresh = True
        group = pygame.sprite.RenderUpdates()
        while True:
            self.timer.tick()
            mousex,mousey = pygame.mouse.get_pos()
            mouse_in_minimap = self.minimap.contain((mousex,mousey))
            border = 100
            cond1 = mousex<border
            cond2 = mousey<border and not mouse_in_minimap
            cond3 = mousex>self.screen.get_rect().width-border and not mouse_in_minimap
            cond4 = mousey>self.screen.get_rect().height-border
            moveunit = 20
            x,y = self.map.get_viewpos()
            if cond1:
                x-=moveunit
            elif cond2:
                y-=moveunit
            elif cond3:
                x+=moveunit
            elif cond4:
                y+=moveunit
            self.map.set_viewpos(self.map.limit((x,y)))
            
            for event in pygame.event.get():
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
                elif event.type == KEYDOWN and event.key==K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                elif event.type == MOUSEBUTTONDOWN:
                    if mouse_in_minimap:
                        self.minimap.mouse(event.pos)
                    else:
                        x, y = self.map.get_viewpos()
                        dx, dy = event.pos
                        x += dx - sx/2
                        y += dy - sy/2
                        viewpos = self.map.limit((x,y))
                        self.map.set_viewpos(viewpos)
                elif event.type == USEREVENT:
                    fps = self.timer.get_fps()
            s = " fps: %.2f pos: %s" % (fps,str(self.map.get_viewpos()))
            message = self.font.render(s, 0, (255,255,255)).convert()      

            self.map.draw()
             
            for pos in self.map.get_range():
                if self.engine._tile_lifes.has_key(pos):
                    for life in self.engine._tile_lifes[pos]:
                        sprite = life.sprite
                        img = sprite.image
                        temp = img.get_rect().move(life.position[0]-self.map.viewpos[0],life.position[1]-self.map.viewpos[1])
                        if math.cos(life.direction) < 0:
                            img = pygame.transform.flip(img, 1, 0)
                        self.screen.blit(img,temp)
            self.screen.blit(message,(0,0))
            self.minimap.draw(self.screen)
            pygame.display.update()

            stackless.schedule()