Beispiel #1
0
    def init(self):
        self.buttons.clear()

        gFont = TTF_OpenFont(FONT, 80)
        TTF_SetFontStyle(gFont, TTF_STYLE_BOLD)
        color = SDL_Color(0, 0, 0)

        button = Button()
        button.setTexture("Main menu", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 140)
        button.onClick(lambda: ViewEngine().changeView("mainMenu"))
        self.buttons.append(button)

        button = Button()
        button.setTexture("Fullscreen", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 70)
        button.onClick(lambda: ViewEngine().toggleFullscreen())
        self.buttons.append(button)

        self.title = Texture(ViewEngine().getRenderer())
        self.title.loadFromRenderedText("Settings", color, gFont)

        gFont = TTF_OpenFont(FONT, 40)
        self.greetings = Texture(ViewEngine().getRenderer())
        self.greetings.loadFromRenderedText("Hello " + GameInfo().getPlayer(),
                                            color, gFont)
Beispiel #2
0
 def setTexture(self, text, size, textColor, bgColor):
     gFont = TTF_OpenFont(FONT, size)
     self.gTexture = Texture(ViewEngine().getRenderer())
     self.gTexture.loadFromRenderedTextShaded(text, textColor, gFont,
                                              bgColor)
     self.bgColor = bgColor
     return self
Beispiel #3
0
class Pause(ViewInterface):
    def __init__(self):
        self.name = "pause"
        self.buttons = []
        self.title = None
        self.greetings = None
        self.bgRect = None

    def render(self, gRenderer):
        SDL_SetRenderDrawBlendMode(ViewEngine().getRenderer(),
                                   SDL_BLENDMODE_BLEND)
        SDL_SetRenderDrawColor(ViewEngine().getRenderer(), 255, 255, 255, 128)
        SDL_RenderFillRect(ViewEngine().getRenderer(), self.bgRect)
        SDL_SetRenderDrawBlendMode(ViewEngine().getRenderer(),
                                   SDL_BLENDMODE_NONE)

        self.title.render(20, 20)
        self.greetings.render(20, 110)
        for b in self.buttons:
            b.render()

    def handleEvent(self, e):
        for b in self.buttons:
            b.handleEvent(e)

    def init(self):
        self.buttons.clear()

        gFont = TTF_OpenFont(FONT, 80)
        TTF_SetFontStyle(gFont, TTF_STYLE_BOLD)
        color = SDL_Color(0, 0, 0)

        button = Button()
        button.setTexture("Resume", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 70)
        button.onClick(lambda: ViewEngine().toggleOverlay())
        self.buttons.append(button)

        button = Button()
        button.setTexture("Main menu", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 140)
        button.onClick(lambda: ViewEngine().changeView("mainMenu"))
        self.buttons.append(button)

        self.title = Texture(ViewEngine().getRenderer())
        self.title.loadFromRenderedText("Pause", color, gFont)

        gFont = TTF_OpenFont(FONT, 40)
        self.greetings = Texture(ViewEngine().getRenderer())
        self.greetings.loadFromRenderedText("Hello " + GameInfo().getPlayer(),
                                            color, gFont)

        self.bgRect = SDL_Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)
Beispiel #4
0
class Nickname(ViewInterface):
    def __init__(self):
        self.name = "nickname"
        self.buttons = []
        self.title = None
        self.nickname = None

    def render(self, gRenderer):
        self.title.render(20, 20)
        self.nickname.render((SCREEN_WIDTH - self.nickname.getWidth()) / 2,
                             (SCREEN_HEIGHT - self.nickname.getHeight()) / 2)
        for b in self.buttons:
            b.render()

    def handleEvent(self, e):
        for b in self.buttons:
            b.handleEvent(e)
        if e.type == SDL_KEYDOWN:
            if e.key.keysym.sym == SDLK_BACKSPACE and len(
                    GameInfo().getPlayer()) > 0:
                player = GameInfo().getPlayer()
                player = player[:-1]
                if len(player) == 0:
                    player = " "
                GameInfo().setPlayer(player)
            ViewEngine().updateView()
        elif e.type == SDL_TEXTINPUT:
            player = GameInfo().getPlayer()
            if len(player) == 1 and player[0] == " ":
                player = ""
            GameInfo().setPlayer(player + e.text.text.decode('utf-8'))
            ViewEngine().updateView()

    def init(self):
        self.buttons.clear()

        gFont = TTF_OpenFont(FONT, 80)
        TTF_SetFontStyle(gFont, TTF_STYLE_BOLD)
        color = SDL_Color(0, 0, 0)

        button = Button()
        button.setTexture("Main menu", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 70)
        button.onClick(lambda: ViewEngine().changeView("mainMenu"))
        self.buttons.append(button)

        self.title = Texture(ViewEngine().getRenderer())
        self.title.loadFromRenderedText("Set nickname", color, gFont)

        gFont = TTF_OpenFont(FONT, 40)
        self.nickname = Texture(ViewEngine().getRenderer())
        self.nickname.loadFromRenderedText(GameInfo().getPlayer(), color,
                                           gFont)
Beispiel #5
0
    def init(self):
        self.buttons.clear()

        gFont = TTF_OpenFont(FONT, 80)
        TTF_SetFontStyle(gFont, TTF_STYLE_BOLD)
        color = SDL_Color(0, 0, 0)

        button = Button()
        button.setTexture("Settings", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 140)
        button.onClick(lambda: ViewEngine().changeView("settings"))
        self.buttons.append(button)

        button = Button()
        button.setTexture("Exit", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 70)
        button.onClick(lambda: ViewEngine().exit())
        self.buttons.append(button)

        button = Button()
        button.setTexture("Scoreboard", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 210)
        button.onClick(lambda: ViewEngine().changeView("scoreboard"))
        self.buttons.append(button)

        button = Button()
        button.setTexture("New Game", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 350)
        button.onClick(lambda: ViewEngine().changeView("game"))
        self.buttons.append(button)

        button = Button()
        button.setTexture("Set nickname", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 280)
        button.onClick(lambda: ViewEngine().changeView("nickname"))
        self.buttons.append(button)

        self.title = Texture(ViewEngine().getRenderer())
        self.title.loadFromRenderedText("Main Menu", color, gFont)

        gFont = TTF_OpenFont(FONT, 40)
        self.greetings = Texture(ViewEngine().getRenderer())
        self.greetings.loadFromRenderedText("Hello " + GameInfo().getPlayer(),
                                            color, gFont)
Beispiel #6
0
class Settings(ViewInterface):
    def __init__(self):
        self.name = "settings"
        self.buttons = []
        self.title = None
        self.greetings = None

    def render(self, gRenderer):
        self.title.render(20, 20)
        self.greetings.render(20, 110)
        for b in self.buttons:
            b.render()

    def handleEvent(self, e):
        for b in self.buttons:
            b.handleEvent(e)

    def init(self):
        self.buttons.clear()

        gFont = TTF_OpenFont(FONT, 80)
        TTF_SetFontStyle(gFont, TTF_STYLE_BOLD)
        color = SDL_Color(0, 0, 0)

        button = Button()
        button.setTexture("Main menu", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 140)
        button.onClick(lambda: ViewEngine().changeView("mainMenu"))
        self.buttons.append(button)

        button = Button()
        button.setTexture("Fullscreen", 40, SDL_Color(255, 255, 255),
                          SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 70)
        button.onClick(lambda: ViewEngine().toggleFullscreen())
        self.buttons.append(button)

        self.title = Texture(ViewEngine().getRenderer())
        self.title.loadFromRenderedText("Settings", color, gFont)

        gFont = TTF_OpenFont(FONT, 40)
        self.greetings = Texture(ViewEngine().getRenderer())
        self.greetings.loadFromRenderedText("Hello " + GameInfo().getPlayer(),
                                            color, gFont)
class Scoreboard(ViewInterface):
    def __init__(self):
        self.name = "scoreboard"
        self.buttons = []
        self.title = None
        self.score = []

    def render(self, gRenderer):
        self.title.render(20, 20)
        for b in self.buttons:
            b.render()

        for i, val in enumerate(self.score):
            val.render(60, 140+i*60)

    def handleEvent(self, e):
        for b in self.buttons:
            b.handleEvent(e)

    def init(self):
        self.buttons.clear()

        gFont = TTF_OpenFont(FONT, 80)
        TTF_SetFontStyle(gFont, TTF_STYLE_BOLD)
        color = SDL_Color(0, 0, 0)

        button = Button()
        button.setTexture("Main menu", 40, SDL_Color(
            255, 255, 255), SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 70)
        button.onClick(lambda: ViewEngine().changeView("mainMenu"))
        self.buttons.append(button)

        self.title = Texture(ViewEngine().getRenderer())
        self.title.loadFromRenderedText("Set nickname", color, gFont)

        gFont = TTF_OpenFont(FONT, 40)
        self.score.clear()
        s = GameInfo().readSave()
        for i, val in enumerate(s):
            texture = Texture(ViewEngine().getRenderer())
            texture.loadFromRenderedText(
                str(i+1)+". " + val["name"] + " - " + str(val["score"]), color, gFont)
            self.score.append(texture)
Beispiel #8
0
 def init(self):
     self.timer = Timer()
     self.offsetX = 50
     self.border = 200
     self.gFont = TTF_OpenFont(FONT, 20)
     self.gFontOutline = TTF_OpenFont(FONT, 20)
     TTF_SetFontOutline(self.gFontOutline, 3)
     color = SDL_Color(0, 0, 0)
     GameInfo().getMap().init()
     ViewEngine().setOverlay("pause")
     GameInfo().setState(len(GameInfo().getMap().getPoints()))
     self.time = Texture(ViewEngine().getRenderer())
     self.points = Texture(ViewEngine().getRenderer())
     self.squares.clear()
     square = Square(Vector(10, 10), Vector(600, 1000), 50, 2, 0.99, 1)
     self.squares.append(square)
     square = Square(Vector(80, 80), Vector(500, 1100), 60, 4, 0.9, 1)
     self.squares.append(square)
     square = Square(Vector(160, 80), Vector(700, 1100), 80, 4, 0.95, 1)
     self.squares.append(square)
    def init(self):
        self.buttons.clear()

        gFont = TTF_OpenFont(FONT, 80)
        TTF_SetFontStyle(gFont, TTF_STYLE_BOLD)
        color = SDL_Color(0, 0, 0)

        button = Button()
        button.setTexture("Main menu", 40, SDL_Color(
            255, 255, 255), SDL_Color(0, 0, 0))
        button.setPosition(30, SCREEN_HEIGHT - 70)
        button.onClick(lambda: ViewEngine().changeView("mainMenu"))
        self.buttons.append(button)

        self.title = Texture(ViewEngine().getRenderer())
        self.title.loadFromRenderedText("Set nickname", color, gFont)

        gFont = TTF_OpenFont(FONT, 40)
        self.score.clear()
        s = GameInfo().readSave()
        for i, val in enumerate(s):
            texture = Texture(ViewEngine().getRenderer())
            texture.loadFromRenderedText(
                str(i+1)+". " + val["name"] + " - " + str(val["score"]), color, gFont)
            self.score.append(texture)
Beispiel #10
0
class Button:
    def __init__(self):
        self.borderX = 10
        self.borderY = 0
        self.mPosition = SDL_Rect()
        self.active = False
        self.callback = None

    def setPosition(self, x, y):
        self.mPosition.x = x
        self.mPosition.y = y
        return self

    def setTexture(self, text, size, textColor, bgColor):
        gFont = TTF_OpenFont(FONT, size)
        self.gTexture = Texture(ViewEngine().getRenderer())
        self.gTexture.loadFromRenderedTextShaded(text, textColor, gFont,
                                                 bgColor)
        self.bgColor = bgColor
        return self

    def setBorder(self, x, y):
        self.borderX = x
        self.borderY = y
        return self

    def handleEvent(self, e):
        if e.type == SDL_MOUSEMOTION or e.type == SDL_MOUSEBUTTONDOWN or e.type == SDL_MOUSEBUTTONUP:
            x, y = c_long(), c_long()
            SDL_GetMouseState(x, y)
            x, y = x.value, y.value
            inside = True
            if x < (self.mPosition.x - self.borderX):
                inside = False
            elif x > (self.mPosition.x + self.gTexture.getWidth() +
                      self.borderX):
                inside = False
            elif y < (self.mPosition.y - self.borderY):
                inside = False
            elif y > (self.mPosition.y + self.gTexture.getHeight() +
                      self.borderY):
                inside = False
            if inside:
                if e.type == SDL_MOUSEBUTTONDOWN:
                    self.active = True
                elif e.type == SDL_MOUSEBUTTONUP:
                    if self.active:
                        self.callback()
                    self.active = False
            else:
                self.active = False
        return self

    def render(self):
        SDL_SetRenderDrawColor(ViewEngine().getRenderer(), self.bgColor.r,
                               self.bgColor.g, self.bgColor.b, self.bgColor.a)
        border = SDL_Rect(self.mPosition.x - self.borderX,
                          self.mPosition.y - self.borderY,
                          self.gTexture.getWidth() + 2 * self.borderX,
                          self.gTexture.getHeight() + 2 * self.borderY)
        SDL_RenderFillRect(ViewEngine().getRenderer(), border)
        self.gTexture.render(self.mPosition.x, self.mPosition.y)

    def onClick(self, callback):
        self.callback = callback
        return self