首页 > 解决方案 > Python3 PyGame如何移动图像?

问题描述

我尝试使用.blit但出现问题,这里是一个截图来进一步解释我的问题:

在我的鼠标之后,图像似乎在屏幕上弄脏了

它只是复制我的图像。

代码:

import pygame   
import keyboard
black = (0,0,0)
white = (255, 255, 255)

pygame.init()

screen = pygame.display.set_mode((600, 400))
screen.fill(black)
screen.convert()

icon = pygame.image.load('cross.png')
pygame.display.set_icon(icon)
pygame.display.set_caption('MouseLoc')
cross = pygame.image.load('cross.png')


running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT or keyboard.is_pressed(' '):
            running = False
            
mx, my = pygame.mouse.get_pos()
screen.blit(cross, (mx-48, my-48))
print(my, mx)
pygame.display.update() 

标签: pythonpython-3.xpygame

解决方案


修复给定代码中的缩进,它将所有重要的东西放在 while 循环之外。您还可以添加一个 def 语句,在每次移动精灵时重绘窗口:

def redraw_game_window():
    screen.fill(black)
    screen.blit(•••)
    pygame.display.update()

并将其放在程序的末尾,在将所有fillblit语句放入 def 语句之后:

redraw_game_window()

该语句将使您更容易在屏幕上对更多项目进行 blit,并且这将防止对象在屏幕上绘制,因为每次移动对象时屏幕都会更新。


推荐阅读