Пример #1
0
class Gameover_menu():

    def __init__(self, window, game_menu):
        self._window = window
        self._game_menu = game_menu
        self._font = settings.defaultFont
        self._highscore = Highscore()
        self._name = ""
        self._titletext = sf.Text("Game Over", self._font, 50)
        self._titletext_left = sf.Text("Game Over", self._font, 50)
        self._titletext_up = sf.Text("Game Over", self._font, 50)
        self._titletext_right = sf.Text("Game Over", self._font, 50)
        self._titletext_down = sf.Text("Game Over", self._font, 50)
        self._titletext_left.color = sf.Color.BLACK
        self._titletext_up.color = sf.Color.BLACK
        self._titletext_right.color = sf.Color.BLACK
        self._titletext_down.color = sf.Color.BLACK
        self._titletext.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,50)
        self._titletext_left.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2-1.5,50)
        self._titletext_up.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,50-1.5)
        self._titletext_right.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2+1.5,50)
        self._titletext_down.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,50+1.5)
        self._scoretext = sf.Text("Points "+str(self._game_menu._points), self._font, 50)
        self._enternametext = sf.Text("Enter Name!", self._font, 50)
        self._enternametext_left = sf.Text("Enter Name!", self._font, 50)
        self._enternametext_up = sf.Text("Enter Name!", self._font, 50)
        self._enternametext_right = sf.Text("Enter Name!", self._font, 50)
        self._enternametext_down = sf.Text("Enter Name!", self._font, 50)
        self._enternametext.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,250)
        self._enternametext_left.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2-1.5,250)
        self._enternametext_up.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,250-1.5)
        self._enternametext_right.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2+1.5,250)
        self._enternametext_down.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,250+1.5)
        self._enternametext_left.color = sf.Color.BLACK
        self._enternametext_up.color = sf.Color.BLACK
        self._enternametext_right.color = sf.Color.BLACK
        self._enternametext_down.color = sf.Color.BLACK
        self._nametext = sf.Text(self._name, self._font, 50)
        self._nametext_left = sf.Text(self._name, self._font, 50)
        self._nametext_up = sf.Text(self._name, self._font, 50)
        self._nametext_right = sf.Text(self._name, self._font, 50)
        self._nametext_down = sf.Text(self._name, self._font, 50)
        self._nametext.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,350)
        self._nametext_left.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2-1.5,350)
        self._nametext_up.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,350-1.5)
        self._nametext_right.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2+1.5,350)
        self._nametext_down.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,350+1.5)
        self._nametext_left.color = sf.Color.BLACK
        self._nametext_up.color = sf.Color.BLACK
        self._nametext_right.color = sf.Color.BLACK
        self._nametext_down.color = sf.Color.BLACK

        #backbutton
        self._okbutton = Button(sf.Vector2((self._window.size[0]-150)/2,(self._window.size[1]-50)), #position
                                  sf.Vector2(150,20),  #size
                                  sf.Color.GREEN,      #background color
                                  sf.Color.BLACK,      #text color
                                  sf.Color.RED,        #outline color
                                  2,                   #outline thickness
                                  "OK",              #lable
                                  self._font,          #font
                                  17)                  #text size




    def loop(self, background):
        self._scoretext.string = "Points " + str(self._game_menu._points)
        self._scoretext_left = sf.Text("Points "+str(self._game_menu._points), self._font, 50)
        self._scoretext_up = sf.Text("Points "+str(self._game_menu._points), self._font, 50)
        self._scoretext_right = sf.Text("Points "+str(self._game_menu._points), self._font, 50)
        self._scoretext_down = sf.Text("Points "+str(self._game_menu._points), self._font, 50)
        self._scoretext.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,150)
        self._scoretext_left.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2-1.5,150)
        self._scoretext_up.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,150-1.5)
        self._scoretext_right.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2+1.5,150)
        self._scoretext_down.position = ((self._window.size[0]-self._titletext.local_bounds.size[0])/2,150+1.5)
        self._scoretext_left.color = sf.Color.BLACK
        self._scoretext_up.color = sf.Color.BLACK
        self._scoretext_right.color = sf.Color.BLACK
        self._scoretext_down.color = sf.Color.BLACK
        background.draw(self._window)
        self._window.draw(self._titletext_left)
        self._window.draw(self._titletext_up)
        self._window.draw(self._titletext_right)
        self._window.draw(self._titletext_down)
        self._window.draw(self._titletext)
        self._window.draw(self._enternametext_left)
        self._window.draw(self._enternametext_up)
        self._window.draw(self._enternametext_right)
        self._window.draw(self._enternametext_down)
        self._window.draw(self._enternametext)
        self._window.draw(self._scoretext_left)
        self._window.draw(self._scoretext_up)
        self._window.draw(self._scoretext_right)
        self._window.draw(self._scoretext_down)
        self._window.draw(self._scoretext)
        self._window.draw(self._nametext_left)
        self._window.draw(self._nametext_up)
        self._window.draw(self._nametext_right)
        self._window.draw(self._nametext_down)
        self._window.draw(self._nametext)
        self._window.draw(self._okbutton)



        
    def listen_for_event(self, event):
        self.mouse_listener(event)
        self.text_listener(event)
        self.key_listener(event)

    def key_listener(self, event):
        if type(event) is sf.KeyEvent and event.pressed and event.code is sf.Keyboard.RETURN:
            self._highscore.addScore(self._name,self._game_menu._points)
            self._name = ""
            self._nametext.string = ""
            self._game_menu._highscore.scorelist()
            self._game_menu.show_highscore()
        try:
            if type(event) is sf.KeyEvent and event.pressed and event.code is sf.Keyboard.BACK_SPACE:
                if not (len(self._name)==0):
                    self._name = self._name[:-1]
                    self._nametext.string = self._name
                    self._nametext_left.string = self._name
                    self._nametext_up.string = self._name
                    self._nametext_right.string = self._name
                    self._nametext_down.string = self._name
        except AttributeError: 
            if type(event) is sf.KeyEvent and event.pressed and event.code is sf.Keyboard.BACK:
                if not (len(self._name)==0):
                    self._name = self._name[:-1]
                    self._nametext.string = self._name
                    self._nametext_left.string = self._name
                    self._nametext_up.string = self._name
                    self._nametext_right.string = self._name
                    self._nametext_down.string = self._name


    def mouse_listener(self, event):
        if type(event) is sf.MouseButtonEvent and event.pressed and sf.Mouse.is_button_pressed(sf.Mouse.LEFT):
            mouse_pos = sf.Mouse.get_position(self._window)
            if self._okbutton.contains(mouse_pos):
                self._okbutton.bgcolor(sf.Color.RED)
        
        if type(event) is sf.MouseButtonEvent and event.released and event.button == sf.Mouse.LEFT:
            mouse_pos = sf.Mouse.get_position(self._window)
            #startbutton
            if self._okbutton.contains(mouse_pos):
                self._highscore.addScore(self._name,self._game_menu._points)
                self._name = ""
                self._nametext.string = ""
                self._game_menu._highscore.scorelist()
                self._game_menu.show_highscore()   
        if type(event) is sf.MouseButtonEvent and event.released:
            self._okbutton.bgcolor(sf.Color.GREEN)

    def text_listener(self, event):
        if type(event) is sf.TextEvent:
            if(48 <= event.unicode <= 57 or 65 <= event.unicode <= 90 or 97 <= event.unicode <= 122):
                self._name += chr(event.unicode)
                self._nametext.string = self._name
                self._nametext_left.string = self._name
                self._nametext_up.string = self._name
                self._nametext_right.string = self._name
                self._nametext_down.string = self._name