Exemplo n.º 1
0
 def blit(self):
     if self.mode.changed:
         nice_print([
             "Mode {0!r} changed:".format(self.mode.name),
             "Blitting on screen\n"
         ])
         self.screen.blit(self.mode.background, (0, 0))
Exemplo n.º 2
0
    def update(self):
        self.changed = False
        for field in self.board.pygame_fields:
            field.error_update()
            if field.changed:
                self.changed = True
                nice_print(["Field {0} changed".format(field.logicfield.get_coords()),
                            "Blitting on background."])

                field.update()
                self.background.blit(field.image,field.rect)
Exemplo n.º 3
0
 def update(self):
     self.changed = False
     for button in self.buttons:
         button.update(pygame.mouse.get_pos())
         if button.clicked():
             self.buttonevents.append(button)
         if button.changed:
             nice_print(["Button {0!r} changed:".format(button.name),
                         "Blitting on {0!r}".format(self.name)])
             self.background.blit(button.surface,button.rect)
             self.changed = True
             button.changed = False
Exemplo n.º 4
0
    def update(self):
        self.changed = False
        for field in self.board.pygame_fields:
            field.error_update()
            if field.changed:
                self.changed = True
                nice_print([
                    "Field {0} changed".format(field.logicfield.get_coords()),
                    "Blitting on background."
                ])

                field.update()
                self.background.blit(field.image, field.rect)
Exemplo n.º 5
0
 def update(self):
     self.changed = False
     for button in self.buttons:
         button.update(pygame.mouse.get_pos())
         if button.clicked():
             self.buttonevents.append(button)
         if button.changed:
             nice_print([
                 "Button {0!r} changed:".format(button.name),
                 "Blitting on {0!r}".format(self.name)
             ])
             self.background.blit(button.surface, button.rect)
             self.changed = True
             button.changed = False
Exemplo n.º 6
0
    def mousedown(self,pos):
        if self.pause and self.board_rect.collidepoint(pos):
            self.reset()
            self.background.fill(self.background_color)
            self.sidebar.update()
            for field in self.board.pygame_fields:
                field.changed = True
            self.changed = True
            self.pause = False
        else:
            field_type = self.board.fieldclick(pos)
            if field_type == "open":
                self.score += self.base_score * self.level
                nice_print(["Score increased to:",str(self.score)])

        self.sidebar.mousedown(pos)
Exemplo n.º 7
0
    def done(self):
        if self.board.game_over():
            timebonus = ((self.timeleft)*(self.level*self.level)*self.base_score)/20/1000

            next_round_time= self.timeleft/1000+TIMESAVEMODE['level-time']+.99
            next_round = ("timesavemode",self.level+1,self.score+timebonus,next_round_time)

            close_call = {True: "   (good luck..)", False: ""}[self.timeleft < 2000]
            messages = [
                (25,TIMESAVEMODE['message-color'],"Level score: " + str(int(self.score-self.prev_score))),
                (25,TIMESAVEMODE['message-color'],"Time saved for next round: " + "{0:.1f}".format(self.timeleft/1000) + " seconds"+close_call),
                (25,TIMESAVEMODE['message-color'],"Timebonus: " + str(int(timebonus))),
                (45,TIMESAVEMODE['message-important-color'],"Total time next round: " + "{0:.1f}".format(next_round_time)),
                (45,TIMESAVEMODE['message-important-color'],"Total score: " + str(int(self.score+timebonus))),
                (20,TIMESAVEMODE['message-color'],"Click to continue to level {0}...".format(self.level+1))]

            return ("clicktocontinue",next_round,messages)
        elif self.timeleft < 100:
            hs = get_highscores(10,"timesave-game")
            if not hs:
                max_hs = 0
                min_hs = 0
            else:
                max_hs = max(hs)
                min_hs = min(hs)

            if self.score > max_hs:
                highscore_message = (30,TIMESAVEMODE['message-important-color'],"Congratulations! You broke the #1 highscore!")
            elif self.score > min_hs or len(hs) < 10:
                highscore_message = (30,TIMESAVEMODE['message-color'],"Your score is in the top 10 highscores!")
            else:
                highscore_message = (30,TIMESAVEMODE['message-color'],"You didn't get on the top 10 highscores.")

            nice_print(["Writing score to file..."])
            submit_score(int(self.score),"timesave-game")
            next_round = ("timesavemode",1,0,TIMESAVEMODE['level-time']+.99)
            messages = [(30,TIMESAVEMODE['message-color'],"Game over!"),
                        (40,TIMESAVEMODE['message-important-color'],"Final score: " + str(int(self.score))),
                        highscore_message,
                        (20,TIMESAVEMODE['message-color'],"Click to start new game...")]

            return ("clicktocontinue_scoremode_loss",next_round,messages)
        else:
            return False
Exemplo n.º 8
0
    def done(self):
        if self.board.game_over():
            timebonus = ((self.timeleft)*(self.level*self.level)*self.base_score)/20/1000
            next_round = ("scoremode",self.level+1,self.score+timebonus)

            close_call = {True: " ...Close call!", False: ""}[self.timeleft < 2000]

            messages = [
                (30,SCOREMODE['message-color'],"Level score: " + str(int(self.score-self.prev_score))),
                (30,SCOREMODE['message-color'],"Time left: " + "{0:.1f}".format(self.timeleft/1000) + " seconds"+close_call),
                (30,SCOREMODE['message-color'],"Timebonus: " + str(int(timebonus))),
                (45,SCOREMODE['message-important-color'],"Total score: " + str(int(self.score+timebonus))),
                (20,SCOREMODE['message-color'],"Click to continue to level {0}...".format(self.level+1))]

            return ("clicktocontinue",next_round,messages)
        elif self.timeleft < 100:
            nice_print(["Writing score to file..."])

            hs = get_highscores(10)
            if not hs:
                max_hs = 0
                min_hs = 0
            else:
                max_hs = max(hs)
                min_hs = min(hs)

            if self.score > max_hs:
                highscore_message = (30,SCOREMODE['message-important-color'],"Congratulations! You broke the #1 highscore!")
            elif self.score > min_hs or len(hs) < 10:
                highscore_message = (30,SCOREMODE['message-color'],"Your score is in the top 10 highscores!")
            else:
                highscore_message = (30,SCOREMODE['message-color'],"You didn't get on the top 10 highscores.")

            submit_score(int(self.score))
            next_round = ("scoremode",1,0)
            messages = [(30,SCOREMODE['message-color'],"Game over!"),
                        (40,SCOREMODE['message-important-color'],"Final score: " + str(int(self.score))),
                        highscore_message,
                        (20,SCOREMODE['message-color'],"Click to start new game...")
                        ]
            return ("clicktocontinue_scoremode_loss",next_round,messages)
        else:
            return False
Exemplo n.º 9
0
    def update(self):
        if not self.pause:
            super(Scoremode,self).update()
            self.timeleft -= self.clock.tick()
        else:
            self.clock.tick()
            self.changed = False
        self.sidebar.score = self.score

        self.sidebar.score_box.update("Score: "+str(int(self.sidebar.score)))
        self.sidebar.time_box.update("Time: "+str(int(self.timeleft/1000)))
        self.sidebar.level_box.update("Level: "+str(self.level))

        if self.sidebar.changed:
            self.changed = True
            nice_print(["Sidebar changed:",
                        "Blitting on background."])
            self.background.blit(self.sidebar.surface,self.sidebar_rect)
        self.sidebar.update()
Exemplo n.º 10
0
    def update(self):
        self.changed = False
        for button in self.buttons:
            button.update(pygame.mouse.get_pos(),self.left_padding)
            if button.clicked():
                self.buttonevents.append(button)
            if button.changed:
                nice_print(["Button {0!r} changed:".format(button.name),
                            "Blitting on sidebar"])

                self.surface.blit(button.surface,button.rect)
                self.changed = True
                button.changed = False

        if self.score_box.changed:
            self.changed = True
            nice_print(["Textbox {0!r} changed:".format(self.score_box.name),
                        "Blitting on sidebar"])
            self.reset()
            self.surface.blit(self.level_box.surface,self.level_box.rect)
            self.surface.blit(self.time_box.surface,self.time_box.rect)
            self.surface.blit(self.score_box.surface,self.score_box.rect)

        if self.time_box.changed:
            self.changed = True
            nice_print(["Textbox {0!r} changed:".format(self.time_box.name),
                        "Blitting on sidebar"])
            self.reset()
            self.surface.blit(self.level_box.surface,self.level_box.rect)
            self.surface.blit(self.score_box.surface,self.score_box.rect)
            self.surface.blit(self.time_box.surface,self.time_box.rect)
Exemplo n.º 11
0
    def update(self):
        self.changed = False
        for button in self.buttons:
            button.update(pygame.mouse.get_pos(), self.left_padding)
            if button.clicked():
                self.buttonevents.append(button)
            if button.changed:
                nice_print([
                    "Button {0!r} changed:".format(button.name),
                    "Blitting on sidebar"
                ])

                self.surface.blit(button.surface, button.rect)
                self.changed = True
                button.changed = False

        if self.score_box.changed:
            self.changed = True
            nice_print([
                "Textbox {0!r} changed:".format(self.score_box.name),
                "Blitting on sidebar"
            ])
            self.reset()
            self.surface.blit(self.level_box.surface, self.level_box.rect)
            self.surface.blit(self.time_box.surface, self.time_box.rect)
            self.surface.blit(self.score_box.surface, self.score_box.rect)

        if self.time_box.changed:
            self.changed = True
            nice_print([
                "Textbox {0!r} changed:".format(self.time_box.name),
                "Blitting on sidebar"
            ])
            self.reset()
            self.surface.blit(self.level_box.surface, self.level_box.rect)
            self.surface.blit(self.score_box.surface, self.score_box.rect)
            self.surface.blit(self.time_box.surface, self.time_box.rect)
Exemplo n.º 12
0
 def mousedown(self,pos):
     for button in self.buttons:
         br = button.rect.move((self.left_padding,0))
         if br.collidepoint(pos):
             nice_print(["Clicked button {0!r}".format(button.text)])
             button.mousedown()
Exemplo n.º 13
0
 def mousedown(self, pos):
     for button in self.buttons:
         br = button.rect.move((self.left_padding, 0))
         if br.collidepoint(pos):
             nice_print(["Clicked button {0!r}".format(button.text)])
             button.mousedown()
Exemplo n.º 14
0
 def mousedown(self,pos):
     for button in self.buttons:
         if button.rect.collidepoint(pos):
             nice_print(["Clicked button {0!r}".format(button.name)])
             button.mousedown()
             return
Exemplo n.º 15
0
    def handle_button_clicks(self):
        if self.mode.name == "Scoremode":
            buttons = self.mode.button_clicked()
            for name in buttons:
                if name == "quit":
                    nice_print([
                        "Game.handle_button_clicks:", "'quit' clicked: exiting"
                    ])
                    exit()
                elif name == "restart":
                    self.mode = Scoremode(1, self.screen.get_size())

                elif name == "pause":
                    self.mode.set_pause()

                elif name == "main_menu":
                    self.set_resolution("mainmenu")
                    self.mode = Mainmenu(self.screen.get_size())

        if self.mode.name == "Timemode":
            buttons = self.mode.button_clicked()
            for name in buttons:
                if name == "quit":
                    nice_print([
                        "Game.handle_button_clicks:", "'quit' clicked: exiting"
                    ])
                    exit()
                elif name == "restart":
                    self.mode = Timemode(1, self.screen.get_size())

                elif name == "pause":
                    self.mode.set_pause()

                elif name == "main_menu":
                    self.set_resolution("mainmenu")
                    self.mode = Mainmenu(self.screen.get_size())

        elif self.mode.name == "Mainmenu":
            buttons = self.mode.button_clicked()
            for name in buttons:
                if name == "scoremode":
                    self.set_resolution("gametime")
                    self.mode = Scoremode(1, self.screen.get_size())
                elif name == "timesavemode":
                    self.set_resolution("gametime")
                    self.mode = Timemode(1, self.screen.get_size())
                elif name == "highscore":
                    self.mode = SelectHighscore(self.screen.get_size())
                elif name == "help":
                    open_help_in_browser()
                elif name == "exit":
                    nice_print([
                        "Game.handle_button_clicks:", "'quit' clicked: exiting"
                    ])
                    exit()
        elif self.mode.name == "SelectHighscore":
            buttons = self.mode.button_clicked()
            for name in buttons:
                if name == "back_highscore_button":
                    self.mode = Mainmenu(self.screen.get_size())
                elif name == "timesave_highscore_button":
                    self.mode = Highscore(self.screen.get_size(),
                                          gametype="timesave-game",
                                          title_prefix="Timesave ")
                elif name == "normalgame_highscore_button":
                    self.mode = Highscore(self.screen.get_size(),
                                          gametype="normal-game",
                                          title_prefix="Normal ")
Exemplo n.º 16
0
 def blit(self):
     if self.mode.changed:
         nice_print(["Mode {0!r} changed:".format(self.mode.name),
                     "Blitting on screen\n"])
         self.screen.blit(self.mode.background,(0,0))
Exemplo n.º 17
0
 def mousedown(self, pos):
     for button in self.buttons:
         if button.rect.collidepoint(pos):
             nice_print(["Clicked button {0!r}".format(button.name)])
             button.mousedown()
             return
Exemplo n.º 18
0
    def handle_button_clicks(self):
        if self.mode.name == "Scoremode":
            buttons = self.mode.button_clicked()
            for name in buttons:
                if name == "quit":
                    nice_print(["Game.handle_button_clicks:",
                                "'quit' clicked: exiting"])
                    exit()
                elif name == "restart":
                    self.mode = Scoremode(1,self.screen.get_size())

                elif name == "pause":
                    self.mode.set_pause()

                elif name == "main_menu":
                    self.set_resolution("mainmenu")
                    self.mode = Mainmenu(self.screen.get_size())

        if self.mode.name == "Timemode":
            buttons = self.mode.button_clicked()
            for name in buttons:
                if name == "quit":
                    nice_print(["Game.handle_button_clicks:",
                                "'quit' clicked: exiting"])
                    exit()
                elif name == "restart":
                    self.mode = Timemode(1,self.screen.get_size())

                elif name == "pause":
                    self.mode.set_pause()

                elif name == "main_menu":
                    self.set_resolution("mainmenu")
                    self.mode = Mainmenu(self.screen.get_size())

        elif self.mode.name == "Mainmenu":
            buttons = self.mode.button_clicked()
            for name in buttons:
                if name == "scoremode":
                    self.set_resolution("gametime")
                    self.mode = Scoremode(1,self.screen.get_size())
                elif name == "timesavemode":
                    self.set_resolution("gametime")
                    self.mode = Timemode(1,self.screen.get_size())
                elif name == "highscore":
                    self.mode = SelectHighscore(self.screen.get_size())
                elif name == "help":
                    open_help_in_browser()
                elif name == "exit":
                    nice_print(["Game.handle_button_clicks:",
                                "'quit' clicked: exiting"])
                    exit()
        elif self.mode.name == "SelectHighscore":
            buttons = self.mode.button_clicked()
            for name in buttons:
                if name == "back_highscore_button":
                    self.mode = Mainmenu(self.screen.get_size())
                elif name == "timesave_highscore_button":
                    self.mode = Highscore(self.screen.get_size(),
                                          gametype="timesave-game",
                                          title_prefix="Timesave ")
                elif name == "normalgame_highscore_button":
                    self.mode = Highscore(self.screen.get_size(),
                                          gametype="normal-game",
                                          title_prefix="Normal ")