def __init__(self, game, flag, bg): self.game = game back = Button('back', 20, 20, 100, 100) while self.game.status == flag: self.game.screen.blit(bg, ORIGIN) for event in pg.event.get(): pos = pg.mouse.get_pos() if event.type == pg.QUIT: print("You quit in the middle of the game!") self.game.running = False quit() # mouse click if event.type == pg.MOUSEBUTTONDOWN: if back.isOver(pos): self.game.status = INTRO # mouse hover if event.type == pg.MOUSEMOTION: back.isOver(pos) self.game.screen.blit(back.image, (back.x, back.y)) pg.display.flip()
def __init__(self, surface, pageName): # | Call the superclass __init__() method Page.__init__(self, surface, pageName) # | btnOnePlayer # |--------------- btnOneplayerXpos = 300 btnOnePlayerYpos = 400 btnOnePlayerDimensions = {"width": 250, "height": 100} btnOnePlayerColour = colours.btnPrimary btnOnePlayerHoverColour = colours.btnHover btnOnePlayerAction = "Difficulty" btnOnePlayerText = "One player" btnOnePlayerTextSize = 28 btnOnePlayerTextColour = colours.btnText self.btnOnePlayer = Button(btnOneplayerXpos, btnOnePlayerYpos, btnOnePlayerDimensions, btnOnePlayerColour, btnOnePlayerHoverColour, btnOnePlayerAction, btnOnePlayerText, btnOnePlayerTextSize, btnOnePlayerTextColour) # | btnTwoPlayer # |--------------- btnTwoPlayerXpos = 600 btnTwoPlayerYpos = 400 btnTwoPlayerDimensions = {"width": 250, "height": 100} btnTwoPlayerColour = colours.btnPrimary btnTwoPlayerHoverColour = colours.btnHover btnTwoPlayerAction = "TwoPlayerGame" btnTwoPlayerText = "Two player" btnTwoPlayerTextSize = 28 btnTwoPlayerTextColour = colours.btnText self.btnTwoPlayer = Button(btnTwoPlayerXpos, btnTwoPlayerYpos, btnTwoPlayerDimensions, btnTwoPlayerColour, btnTwoPlayerHoverColour, btnTwoPlayerAction, btnTwoPlayerText, btnTwoPlayerTextSize, btnTwoPlayerTextColour) # | ttlPong # |---------- ttlPongXpos = 450 ttlPongYpos = 200 self.ttlPong = Title(ttlPongXpos, ttlPongYpos, "Pong", 121) self.addToObjects([self.btnOnePlayer, self.btnTwoPlayer, self.ttlPong]) self.addToButtons([self.btnOnePlayer, self.btnTwoPlayer])
def __init__(self, surface, pageName): # | Call the superclass __init__() method Page.__init__(self, surface, pageName) self.backgroundSurface = self.createBackgroundSurface() # | btnResume # |------------ btnResumeDimensions = {'width': 450, 'height': 100} btnResumeXpos = self.surface.get_width() / 2 btnResumeYpos = 200 btnResumeColour = colours.btnPrimary btnResumeHoverColour = colours.btnHover btnResumeAction = "Resume" btnResumeText = "Resume" btnResumeTextSize = 35 btnResumeTextColour = colours.btnText self.btnResume = Button(btnResumeXpos, btnResumeYpos, btnResumeDimensions, btnResumeColour, btnResumeHoverColour, btnResumeAction, btnResumeText, btnResumeTextSize, btnResumeTextColour) # | btnQuit # |---------- btnQuitDimensions = {'width': 450, 'height': 100} btnQuitXpos = self.surface.get_width() / 2 btnQuitYpos = 350 btnQuitColour = colours.btnPrimary btnQuitHoverColour = colours.btnHover btnQuitAction = "MainMenu" btnQuitText = "Quit" btnQuitTextSize = 35 btnQuitTextColour = colours.btnText self.btnQuit = Button(btnQuitXpos, btnQuitYpos, btnQuitDimensions, btnQuitColour, btnQuitHoverColour, btnQuitAction, btnQuitText, btnQuitTextSize, btnQuitTextColour) self.addToObjects([self.btnResume, self.btnQuit]) self.addToButtons([self.btnResume, self.btnQuit])
def __init__(self, pos, size, has_button=False): """ :param pos: (list or tuple) The position (X, Y) of the input. :param size: (list or tuple) The size (X, Y) of the input. :param has_button: Creates a 'Submit' button next to it if True. """ super().__init__(pos, size) # ------------------------ INPUT'S TEXT ------------------------ # self.text_input = "" self.listening = False # Changing the basic position of the text. self.pos_text = (self.pos[0] + 15, (self.size[1] - self.text_rect.h) // 2 + self.pos[1]) self.render_text() # ------------------------ BACKGROUND COLORS ------------------------ # self.background_color = (240, 240, 240) self.hover_background_color = bases.LIGHT_GRAY self.press_background_color = bases.GRAY # ------------------------ INPUT'S BUTTON ------------------------ # if has_button: # Creating the button. pos_button = (pos[0] + size[0] + 10, pos[1]) size_button = (100, size[1]) self.button = Button(pos_button, size_button, "Submit") # Updating the button's text size. self.button.render_text(size=26) self.button.render_pressed_text(size=26) self.button.render_hovered_text(size=26) else: self.button = None
def __init__(self, game): self.game = game start = Button('start', 400, 275, 300, 100) guide = Button('guide', 400, 400, 300, 100) about = Button('about', 400, 525, 300, 100) while self.game.status == INTRO: self.game.screen.blit(INTRO_BG, ORIGIN) for event in pg.event.get(): pos = pg.mouse.get_pos() if event.type == pg.QUIT: print("You quit in the middle of the game!") self.game.running = False quit() # mouse click if event.type == pg.MOUSEBUTTONDOWN: if start.isOver(pos): self.game.status = START elif guide.isOver(pos): self.game.status = GUIDE elif about.isOver(pos): self.game.status = ABOUT # mouse hover if event.type == pg.MOUSEMOTION: start.isOver(pos) guide.isOver(pos) about.isOver(pos) self.game.screen.blit(start.image, (start.x, start.y)) self.game.screen.blit(guide.image, (guide.x, guide.y)) self.game.screen.blit(about.image, (about.x, about.y)) pg.display.flip()
for i, a in enumerate(animation): if np.sum(a) > 0: print(i) #-----------------------------------------------------------------------------------------# #-----------------------------------------BUTTONS-----------------------------------------# #-----------------------------------------------------------------------------------------# def func_cls_button(): main_display.clear_frame() return cls_button = Button((1270, 600), 0, func_cls_button, text="CLS", fit_text=True) window.add_element(cls_button, "cls_button") def func_cpy_button(): main_display.load_frame(animation[current_frame]) return cpy_button = Button((1370, 600), 0, func_cpy_button, text="CPY", fit_text=True) window.add_element(cpy_button, "cpy_button") def func_del_button(): global animation, current_frame, num_mini_displays, num_x, num_y, num_active_mini_displays, window, num_active_mini_displays, num_frames if num_frames == 1:
class TextInput(MotherObject.MotherObject): """A text input bar. Can be automaticaly linked to a button.""" def __init__(self, pos, size, has_button=False): """ :param pos: (list or tuple) The position (X, Y) of the input. :param size: (list or tuple) The size (X, Y) of the input. :param has_button: Creates a 'Submit' button next to it if True. """ super().__init__(pos, size) # ------------------------ INPUT'S TEXT ------------------------ # self.text_input = "" self.listening = False # Changing the basic position of the text. self.pos_text = (self.pos[0] + 15, (self.size[1] - self.text_rect.h) // 2 + self.pos[1]) self.render_text() # ------------------------ BACKGROUND COLORS ------------------------ # self.background_color = (240, 240, 240) self.hover_background_color = bases.LIGHT_GRAY self.press_background_color = bases.GRAY # ------------------------ INPUT'S BUTTON ------------------------ # if has_button: # Creating the button. pos_button = (pos[0] + size[0] + 10, pos[1]) size_button = (100, size[1]) self.button = Button(pos_button, size_button, "Submit") # Updating the button's text size. self.button.render_text(size=26) self.button.render_pressed_text(size=26) self.button.render_hovered_text(size=26) else: self.button = None # ----------------------------------------- # # TEXT FUNCTIONS # # ----------------------------------------- # # ----------------------------------------- # # DRAWING FUNCTIONS # # ----------------------------------------- # def draw(self, surface): super().draw(surface) # Drawing the button if there is one. if self.button is not None: self.button.draw(surface) if self.text_input != "": self.render_text(self.text_input) def draw_basic(self, surface): """Draw the basic version of the input bar.""" # Drawing the background of the input. pygame.draw.rect(surface, self.background_color, self.rect_data) # Drawing the border. if self.border_thickness > 0: pygame.draw.rect(surface, self.border_color, self.rect_data, self.border_thickness) # Adding the text. if self.text_input != "": surface.blit(self.text, self.pos_text) # Drawing the cursor when listening the inputs. # Drawing the rect to hide the text at the left. def draw_hovered(self, surface): """Draw the hovered version of the input bar.""" # Drawing the background of the input. pygame.draw.rect(surface, self.hover_background_color, self.rect_data) # Drawing the border. if self.border_thickness > 0: pygame.draw.rect(surface, self.hover_border_color, self.rect_data, self.hover_border_thickness) def draw_pressed(self, surface): """This function will draw the input bar as writing mode.""" # Drawing the background of the input. pygame.draw.rect(surface, self.press_background_color, self.rect_data) # Drawing the border. if self.border_thickness > 0: pygame.draw.rect(surface, self.press_border_color, self.rect_data, self.press_border_thickness) # ----------------------------------------- # # EVENT FUNCTIONS # # ----------------------------------------- # def is_hovered(self, event_pos): """Check if the input bar is hovered by the event. If True, self.hovered == True.""" # Checking if the input bar is hovered. super().is_hovered(event_pos) # Checking if the input's button is hovered. if self.button is not None: self.button.is_hovered(event_pos) def is_pressed(self, *args): """Function called to check if the button is pressed and execute the function linked to this event if there is one.""" super().is_pressed() # Checking if the input is listening the keyboard events. if self.pressed and not self.listening: self.listening = True else: self.listening = False # Checking if the button is pressed. if self.button is not None: self.button.is_pressed(args) def is_released(self, *args): """Function called to check if the button is released and execute the function linked to this event if there is one""" super().is_released() # Checking if the button is released. if self.button is not None: self.button.is_released(args) # ----------------------------------------- # # EVENT FUNCTIONS # # ----------------------------------------- # def listen_inputs(self, event): """Listen the inputs from the keyboard. If self.pressed == True, then the inputs are added to the text in the input bar.""" if self.listening: if event.key == pygame.K_RETURN: if self.button.on_press is not None: self.button.on_press() elif event.key == pygame.K_ESCAPE: self.text_input = "" elif event.key == pygame.K_DELETE: self.text_input = self.text_input[:-1] elif event.unicode in string.printable: self.text_input += event.unicode print(self.text_input)
def __init__(self, surface, pageName): Page.__init__(self, surface, pageName) # | btnEasy # |---------- btnEasyXpos = 450 btnEasyYpos = 200 btnEasyDimensions = {'width': 400, 'height': 100} btnEasyColour = colours.btnPrimary btnEasyHoverColour = colours.btnHover btnEasyAction = "OnePlayerGameEasy" btnEasyText = "Easy" btnEasyTextSize = 30 btnEasyTextColour = colours.btnText self.btnEasy = Button(btnEasyXpos, btnEasyYpos, btnEasyDimensions, btnEasyColour, btnEasyHoverColour, btnEasyAction, btnEasyText, btnEasyTextSize, btnEasyTextColour) # | btnMedium # |------------ btnMediumXpos = 450 btnMediumYpos = 320 btnMediumDimensions = {'width': 400, 'height': 100} btnMediumColour = colours.btnPrimary btnMediumHoverColour = colours.btnHover btnMediumAction = "OnePlayerGameMedium" btnMediumText = "Medium" btnMediumTextSize = 30 btnMediumTextColour = colours.btnText self.btnMedium = Button(btnMediumXpos, btnMediumYpos, btnMediumDimensions, btnMediumColour, btnMediumHoverColour, btnMediumAction, btnMediumText, btnMediumTextSize, btnMediumTextColour) # | btnHard # |------------ btnHardXpos = 450 btnHardYpos = 440 btnHardDimensions = {'width': 400, 'height': 100} btnHardColour = colours.btnPrimary btnHardHoverColour = colours.btnHover btnHardAction = "OnePlayerGameHard" btnHardText = "Hard" btnHardTextSize = 30 btnHardTextColour = colours.btnText self.btnHard = Button(btnHardXpos, btnHardYpos, btnHardDimensions, btnHardColour, btnHardHoverColour, btnHardAction, btnHardText, btnHardTextSize, btnHardTextColour) # | btnBack # |---------- btnBackXpos = 35 btnBackYpos = 20 btnBackDimensions = {'width': 50, 'height': 20} btnBackColour = colours.btnPrimary btnBackHoverColour = colours.btnHover btnBackAction = "MainMenu" btnBackText = "Back" btnBackTextSize = 19 btnBackTextColour = colours.btnText self.btnBack = Button(btnBackXpos, btnBackYpos, btnBackDimensions, btnBackColour, btnBackHoverColour, btnBackAction, btnBackText, btnBackTextSize, btnBackTextColour) self.addToObjects( [self.btnEasy, self.btnMedium, self.btnHard, self.btnBack]) self.addToButtons( [self.btnEasy, self.btnMedium, self.btnHard, self.btnBack])
def showWinMessage(self, player): self.ball.xVelocity = 0 self.ball.yVelocity = 0 side = "" congratulationsTitleXpos = 0 if player == self.leftPlayer: congratulationsTitleXpos = 1 / 4 * (self.surface.get_width()) btnXpos = 3 / 4 * (self.surface.get_width()) side = "left" elif player == self.rightPlayer: congratulationsTitleXpos = 3 / 4 * (self.surface.get_width()) btnXpos = 1 / 4 * (self.surface.get_width()) side = "right" # | congratulationsTitle # |----------------------- congratulationsTitleLineOneYpos = Helpers.midpoint( 0, self.surface.get_height()) - 70 congratulationsTitleLineTwoYpos = Helpers.midpoint( 0, self.surface.get_height()) - 30 congratulationsTitleLineOneText = "The " + side congratulationsTitleLineTwoText = "player won!" congratulationsTitleSize = 55 congratulationsTitleColour = colours.red congratulationsTitleLineOne = Title(congratulationsTitleXpos, congratulationsTitleLineOneYpos, congratulationsTitleLineOneText, congratulationsTitleSize, congratulationsTitleColour) congratulationsTitleLineTwo = Title(congratulationsTitleXpos, congratulationsTitleLineTwoYpos, congratulationsTitleLineTwoText, congratulationsTitleSize, congratulationsTitleColour) # | btnMainMenu # |-------------- btnMainMenuYpos = Helpers.midpoint(0, self.surface.get_height()) - 70 btnMainMenuDimensions = {'height': 75, 'width': 250} btnMainMenuColour = colours.btnPrimary btnMainMenuHoverColour = colours.btnHover btnMainMenuAction = "MainMenu" btnMainMenuText = "Main Menu" btnMainMenuTextSize = 35 btnMainMenuTextColour = colours.btnText btnMainMenu = Button(btnXpos, btnMainMenuYpos, btnMainMenuDimensions, btnMainMenuColour, btnMainMenuHoverColour, btnMainMenuAction, btnMainMenuText, btnMainMenuTextSize, btnMainMenuTextColour) # | btnPlayAgain # |--------------- btnPlayAgainYpos = Helpers.midpoint(0, self.surface.get_height()) + 70 btnPlayAgainDimensions = {'height': 75, 'width': 250} btnPlayAgainColour = colours.btnPrimary btnPlayAgainHoverColour = colours.btnHover btnPlayAgainAction = self.pageName btnPlayAgainText = "Play again" btnPlayAgainTextSize = 35 btnPlayAgainTextColour = colours.btnText btnPlayAgain = Button(btnXpos, btnPlayAgainYpos, btnPlayAgainDimensions, btnPlayAgainColour, btnPlayAgainHoverColour, btnPlayAgainAction, btnPlayAgainText, btnPlayAgainTextSize, btnPlayAgainTextColour) self.addToObjects([ congratulationsTitleLineOne, congratulationsTitleLineTwo, btnMainMenu, btnPlayAgain ]) self.addToButtons([btnMainMenu, btnPlayAgain])
def __init__(self, surface, pageName, playerAmount, AISpeed=-1): # | Call the superclass __init__() method Page.__init__(self, surface, pageName) self.bounceSound = pygame.mixer.Sound( os.path.join(currentPath, r"..\resources\ball hit paddle.wav")) self.AISpeed = AISpeed # | ball # |------- ballXpos = 450 ballYpos = Helpers.midpoint(0, self.surface.get_height()) ballColour = colours.white self.ball = Ball(ballXpos, ballYpos, ballColour) # | leftPaddle # |------------- leftPaddleXpos = 50 leftPaddleYpos = Helpers.midpoint(0, self.surface.get_height()) leftPaddleColour = colours.white leftPaddleWindowHeight = self.surface.get_height() self.leftPaddle = Paddle(leftPaddleXpos, leftPaddleYpos, leftPaddleWindowHeight, leftPaddleColour) # | rightPaddle # |-------------- rightPaddleXpos = self.surface.get_width() - 50 rightPaddleYpos = Helpers.midpoint(0, self.surface.get_height()) rightPaddleColour = colours.white rightPaddleWindowHeight = self.surface.get_height() self.rightPaddle = Paddle(rightPaddleXpos, rightPaddleYpos, rightPaddleWindowHeight, rightPaddleColour) # | leftTitle # |------------ leftTitleXpos = 20 leftTitleYpos = 20 leftTitleText = "0" leftTitleSize = 45 leftTitleColour = colours.white self.leftTitle = Title(leftTitleXpos, leftTitleYpos, leftTitleText, leftTitleSize, leftTitleColour) # | rightTitle # |------------- rightTitleXpos = self.surface.get_width() - 20 rightTitleYpos = 20 rightTitleText = "0" rightTitleSize = 45 rightTitleColour = colours.white self.rightTitle = Title(rightTitleXpos, rightTitleYpos, rightTitleText, rightTitleSize, rightTitleColour) # | leftPlayer # |------------- if playerAmount == 1: self.leftPlayer = ComputerPlayer(self.leftPaddle, self.leftTitle, self.ball) self.leftPlayer.paddle.setVelocity(self.AISpeed) elif playerAmount == 2: leftPlayerUpKey = pygame.K_a leftPlayerDownKey = pygame.K_z self.leftPlayer = HumanPlayer(self.leftPaddle, self.leftTitle, leftPlayerUpKey, leftPlayerDownKey) # | rightPlayer # |-------------- rightPlayerUpKey = pygame.K_k rightPlayerDownKey = pygame.K_m self.rightPlayer = HumanPlayer(self.rightPaddle, self.rightTitle, rightPlayerUpKey, rightPlayerDownKey) # | verticalLine # |--------------- verticalLineXpos = Helpers.midpoint(0, self.surface.get_width()) verticalLineStartPoint = 0 verticalLineEndPoint = self.surface.get_height() verticalLineSegmentLength = 20 verticalLineInterval = 15 verticalLineColour = colours.white self.verticalLine = VerticalLine(verticalLineXpos, verticalLineStartPoint, verticalLineEndPoint, verticalLineSegmentLength, verticalLineInterval, verticalLineColour) # | btnPause # |------------- btnPauseXpos = self.surface.get_width() / 2 btnPauseYpos = 30 btnPauseDimensions = {'width': 40, 'height': 40} btnPauseColour = colours.btnPrimary btnPauseHoverColour = colours.btnHover btnPauseAction = 'Pause' btnPauseText = '||' btnPauseTextSize = 30 btnPauseTextColour = colours.btnText self.btnPause = Button(btnPauseXpos, btnPauseYpos, btnPauseDimensions, btnPauseColour, btnPauseHoverColour, btnPauseAction, btnPauseText, btnPauseTextSize, btnPauseTextColour) # | Integer to keep track of the number of keys that are being pressed, to indicate # | whether or not the paddles need to be moves - helps to improve performance. self.keysPressed = 0 # | The score needed to win self.winScore = 10 # | Flag to indicate if the code needs to check if the ball is on the screen self.ballOnScreenNeedsToBeChecked = True # | The delay for the ball to be recentred in the screen after leaving (in seconds) self.ballCentreTimer = 0.5 self.addToObjects([ self.ball, self.leftPaddle, self.rightPaddle, self.leftTitle, self.rightTitle, self.verticalLine, self.btnPause ]) self.addToButtons(self.btnPause)
def __init__(self, game): self.g = game back = Button('back', 20, 20, 100, 100) ready = ReadyButton('ready', 400, 560, 300, 100) mario = CharButton('mario', 25, 210, 150, 350) luigi = CharButton('luigi', 210, 210, 150, 350) yoshi = CharButton('yoshi', 390, 210, 150, 350) popo = CharButton('popo', 575, 210, 150, 350) nana = CharButton('nana', 750, 210, 150, 350) link = CharButton('link', 920, 210, 150, 350) ''' NOTE - screen is the current background name = input for player's name no_name = no player input for name character = character selection waiting = ready / unready screen ''' screen = 'name' old_name = '' enteredName = False player_ready = False font = pg.font.Font(None, 100) self.start_name_bg = START_NAME_BG.convert() self.start_no_name_bg = START_NO_NAME_BG.convert() self.start_character_bg = START_CHARACTER_BG.convert() self.start_waiting_bg = START_WAITING_BG.convert() self.start_name_exists_bg = START_NAME_EXISTS_BG.convert() # note - self.g.curr_player = current text of the input player name while self.g.status == START: if screen == 'name' or screen == 'no_name': self.g.checkName(self.g.curr_player) if screen == 'name': self.g.screen.blit(self.start_name_bg, ORIGIN) elif screen == 'no_name': self.g.screen.blit(self.start_no_name_bg, ORIGIN) elif screen == 'character': self.g.screen.blit(self.start_character_bg, ORIGIN) self.drawStats() elif screen == 'waiting': self.g.screen.blit(self.start_waiting_bg, ORIGIN) text_surface = font.render(str(self.g.player_count), True, WHITE) self.g.screen.blit(text_surface, (700, 450)) if screen == 'name' or screen == 'no_name': if not self.g.name_available: # allow changing the name to player's own name # even though technically - that name is taken if self.g.curr_player != old_name: self.g.screen.blit(self.start_name_exists_bg, ORIGIN) text_surface = font.render(self.g.curr_player, True, WHITE) self.g.screen.blit(text_surface, (355, 355)) for event in pg.event.get(): pos = pg.mouse.get_pos() if event.type == pg.QUIT: print("You quit in the middle of the game!") if enteredName: self.g.disconnectPlayer(self.g.curr_player, self.g.restart_request) self.g.running = False self.g.s.close() quit() # mouse click if event.type == pg.MOUSEBUTTONDOWN: if back.isOver(pos) and not player_ready: if screen == 'name': self.g.status = INTRO if enteredName: self.g.disconnectPlayer( self.g.curr_player, self.g.restart_request) elif screen == 'no_name': self.g.status = INTRO if enteredName: self.g.disconnectPlayer( self.g.curr_player, self.g.restart_request) elif screen == 'character': screen = 'name' elif screen == 'waiting': screen = 'character' if screen == 'character': if mario.isOver(pos, 'mario'): self.g.editPlayerCharacter(self.g.curr_player, MARIO) screen = 'waiting' elif luigi.isOver(pos, 'luigi'): self.g.editPlayerCharacter(self.g.curr_player, LUIGI) screen = 'waiting' elif yoshi.isOver(pos, 'yoshi'): self.g.editPlayerCharacter(self.g.curr_player, YOSHI) screen = 'waiting' elif popo.isOver(pos, 'popo'): self.g.editPlayerCharacter(self.g.curr_player, POPO) screen = 'waiting' elif nana.isOver(pos, 'nana'): self.g.editPlayerCharacter(self.g.curr_player, NANA) screen = 'waiting' elif link.isOver(pos, 'link'): self.g.editPlayerCharacter(self.g.curr_player, LINK) screen = 'waiting' if screen == 'waiting': if not player_ready: if ready.isOver(pos): self.g.editPlayerStatus( self.g.curr_player, 'ready') player_ready = True ready.click() # mouse hover if event.type == pg.MOUSEMOTION: back.isOver(pos) if screen == 'character': mario.isOver(pos, 'mario') luigi.isOver(pos, 'luigi') yoshi.isOver(pos, 'yoshi') popo.isOver(pos, 'popo') nana.isOver(pos, 'nana') link.isOver(pos, 'link') if screen == 'waiting': if not player_ready: ready.isOver(pos) if event.type == pg.KEYDOWN: if screen == 'name' or screen == 'no_name' or screen == 'waiting': if event.key == pg.K_RETURN: if screen != 'waiting': if len(self.g.curr_player) == 0: screen = 'no_name' print( "INVALID NAME! Your name cannot be blank!" ) else: if self.g.name_available or self.g.curr_player == old_name: screen = 'character' if not enteredName: # if not entered yet - connect once enteredName = True old_name = self.g.curr_player self.g.connectPlayer( self.g.curr_player) elif enteredName: # if entered once - just change name self.g.editPlayerName( old_name, self.g.curr_player) old_name = self.g.curr_player elif not self.g.name_available: print( "NAME EXISTS! Enter a unique one!") else: if player_ready: self.g.startGame() else: # limit character length for the screen if len(self.g.curr_player) < 10: char = event.unicode self.g.curr_player += char if screen == 'name' or screen == 'no_name': keys = pg.key.get_pressed() if keys[pg.K_BACKSPACE]: self.g.curr_player = self.g.curr_player[:-1] if screen == 'character': self.g.screen.blit(mario.image, (mario.x, mario.y)) self.g.screen.blit(luigi.image, (luigi.x, luigi.y)) self.g.screen.blit(yoshi.image, (yoshi.x, yoshi.y)) self.g.screen.blit(popo.image, (popo.x, popo.y)) self.g.screen.blit(nana.image, (nana.x, nana.y)) self.g.screen.blit(link.image, (link.x, link.y)) elif screen == 'waiting': self.g.screen.blit(ready.image, (ready.x, ready.y)) if not player_ready: self.g.screen.blit(back.image, (back.x, back.y)) pg.display.flip()