当用户多次按下数字键时,一个数字在pygame窗口上被blit覆盖.我想要一种不覆盖的方式



我正在用PyGame制作计算器,我正在取得良好的进展。但是,当我闪电攻击用户按下的数字时,它会覆盖它。有人能告诉我如何设置规则吗?比如,如果一个字符在窗口中,那么当你再次闪电攻击它时,你会把它闪电攻击在它的旁边或远离它。这是我的代码

import pygame, math
pygame.init()
screen_width = 1200
screen_height = 500
gameWindow = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('Calculator')
red = (255, 0, 0)
green = (0, 255, 0) 
blue = (0, 0, 255)
white = (255, 255, 255)
black = (0, 0, 0)
grey = (128, 128, 128)
font = pygame.font.SysFont('comicsans', 40)
fps = 60
clock = pygame.time.Clock()
def text_screen(text, color, x, y):
screen_text = font.render(text, True, color)
gameWindow.blit(screen_text, [x ,y])
def welcome_screen(run):
clock.tick(fps) 
gameWindow.fill(grey)
while not run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = True
pygame.display.update()
def gameLoop(run):
clock.tick(fps)
gameWindow.fill(grey)
while not run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = True
if event.type == pygame.KEYDOWN:
key = pygame.key.name(event.key)
iter(key)
if key.isnumeric():
text_screen(key, red, 45, 45)

pygame.display.update()

if __name__ == "__main__":
gameLoop(False)

您可以先填充屏幕。

def text_screen(text, color, x, y):
screen_text = font.render(text, True, color)
gameWindow.fill(grey)
gameWindow.blit(screen_text, [x, y])

这里有一种可能性。

def gameLoop(run):
clock.tick(fps)
gameWindow.fill(grey)
pos_x = 45
pos_y = 45
while not run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = True
if event.type == pygame.KEYDOWN:
key = pygame.key.name(event.key)
iter(key)
if key.isnumeric():
pos_x += 45
pos_y += 45
text_screen(key, red, pos_x, pos_y)
pygame.display.update()

最新更新