【问题标题】:Python3 PyGame how to move an image?Python3 PyGame 如何移动图像?
【发布时间】:2020-11-21 16:53:24
【问题描述】:

我尝试使用.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() 

【问题讨论】:

  • 每次都需要擦除和重绘屏幕。
  • 请修正问题中代码的Indentation。您必须在 blit 图像之前清除显示 (screen.fill(0))
  • @Rabbid76 感谢您的评论,您可以将其发布为答案,以便我确认,立即修复身份。

标签: python python-3.x pygame


【解决方案1】:

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

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

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

redraw_game_window()

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

【讨论】:

    猜你喜欢
    • 2012-12-27
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多