如何从 Pygame 中的表面删除有效的文本?

问题描述

我想在 Pygame 中创建一个标题屏幕开头的游戏,当您单击“创建游戏”时,它应该会将您带到另一个屏幕,您可以在其中选择玩家数量。到目前为止,当我单击“创建游戏”时,会显示可以选择玩家数量的选项,但文本“创建游戏”仍然存在。 这是我的代码标签.py

import pygame


class Label:
    def __init__(self,text,font_size,pos,color,surface):
        self.surface = surface
        x,y = pos

        font = pygame.font.SysFont("monospace",font_size)
        self.showed_text = font.render(text,True,color)
        
        self.textRect = self.showed_text.get_rect()
        self.textRect.center = (x,y)

    def update(self):
        self.surface.blit(self.showed_text,self.textRect)

客户端.py

from label import Label
from network import Network
import pygame
import pickle


pygame.init()
screen = pygame.display.set_mode((1440,810))
clock = pygame.time.Clock()

screen_width,screen_height = pygame.display.get_surface().get_size()

bg_surface = pygame.image.load('./bilder/background3.jpg').convert()
bg_surface = pygame.transform.scale(bg_surface,(screen_width,screen_height))

n = Network()

class MainScreen:
    def __init__(self):
        self.text_create = Label("Spiel erstellen",20,(screen_width // 2,screen_height // 3),(255,0),bg_surface)

    def update(self):
        self.text_create.update()

    def change_scene(self):
        global scene
        if pygame.mouse.get_pressed()[0]:
            mx,my = pygame.mouse.get_pos()
            if self.text_create.textRect.collidepoint(mx,my):
                scene.
                scene = scenes["Create"]
                
                
                


class CreateGame:
    def __init__(self):
        self.labels = []
        for e in range(1,5):
            self.labels.append(Label(f"{e} Spieler",(screen_width // 5 * e,screen_height // 2),bg_surface))
    
    def update(self):
        for text in self.labels:
            text.update()
        

    def change_scene(self):
        print("Change scene")

scenes = {"Main": MainScreen(),"Create": CreateGame() }

scene = scenes["Main"]

run = True



while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
            pygame.quit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            scene.change_scene()

            """ msg = ['c']
                    msg_got = n.send(msg)
                    print(msg_got)"""
    
    screen.blit(bg_surface,(0,0))
    scene.update()
    pygame.display.flip()
    
    pygame.display.update()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)