Ejemplo n.º 1
0
class Menu():
    def __init__(self, game):
        self.game = game

        self.title = retroSnake.Entity()
        self.title.setSprite(retroSnake.loadSprite('title'))
        self.title.doTransform(retroSnake.TranslateMatrix(0, -20))
        self.title.sprite.doTransform(retroSnake.ScaleMatrix(6))

        self.camera = retroSnake.Camera()
        self.camera.scale = 10
        self.camera.buildMatrix()

        self.font = pygame.font.Font('assets/starcraft.ttf', 24)
        self.b1 = Button(('center', 280), game.nextState, 'Play', self.font)
        self.b2 = Button(('center', 280), game.exit, 'Quit', self.font)
        self.b1.rect.move_ip(-100, 0)
        self.b2.rect.move_ip(+100, 0)

        self.score = -42
        self.reset()

    def reset(self):
        if self.score < 0:
            score = 'WASD+Space'
        else:
            score = '%d' % self.score
        font = pygame.font.Font('assets/starcraft.ttf', 46)
        self.scoreText = retroSnake.printf(font, (0, 255, 0), score)
        self.scorePos = (320-(self.scoreText.get_rect().width/2), 160)

    def update(self):
        return

    def render(self, screen):
        self.title.render(screen, self.camera.transform)
        self.b1.blit(screen)
        self.b2.blit(screen)

        if self.score is not None:
            pygame.display.get_surface().blit(
                self.scoreText,
                self.scorePos
            )

    def onEvent(self, event):
        if event.type == KEYDOWN:
            if event.key == K_SPACE:
                self.game.nextState()
        if event.type == MOUSEBUTTONDOWN:
            p = retroSnake.Vector(*pygame.mouse.get_pos())
        if event.type == MOUSEMOTION:
            self.pointer = self.camera.unproject(
                retroSnake.Vector(*pygame.mouse.get_pos())
                )
        self.b1.handle(event)
        self.b2.handle(event)
Ejemplo n.º 2
0
class Check_box_button:
    def __init__(self, arg, screen, surface, pos, text, value_func):
        value_func_set, value_func_get = value_func
        self.screen = screen
        self.surface = surface
        self.pos = pos
        self.selected = False
        self.text = text

        self.check_box = Check_box(arg, self.surface, None, (0, 0),
                                   value_func_get)

        def value_func(arg):
            value_func_set(arg, (False if value_func_get(arg) else True))

        arg.wide_button_flag = True
        self.button = Button(arg, self.surface, None, (40, 0), text,
                             value_func)
        self.func = self.button.func
        arg.wide_button_flag = False

    def set_selected(self, selected):
        self.selected = selected
        self.button.set_selected(self.selected)

    def update(self, arg):
        self.check_box.update(arg)

    def blit(self):
        self.surface.fill((0, 0, 0), self.surface.get_rect())
        self.surface.set_colorkey((0, 0, 0))

        self.check_box.blit()
        self.button.blit()

        self.screen.blit(self.surface, self.pos)