微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pygame:blit 的目标位置无效

如何解决Pygame:blit 的目标位置无效

首先,让我先说我是 Python 初学者,只编写了几个程序,所以这段代码可能看起来很乱。我试图通过制作一个小型吃豆子游戏作为礼物送给我的狗作为玩家和鬼魂的家庭成员来熟悉 pygame。 我无法将图像 blitting 到主循环中由 rocky.draw() 调用的矩形上(我的狗的名字是岩石)。我尝试了多种解决方案。第一个是移除 Rocky 类下的 draw 方法并使用 get.rect() 来创建矩形。然而,这只会导致没有 rect 显示,而只是在大部分屏幕上显示一个巨大的放大版本的图像。 所以,我再次使用 rocky.draw() 并尝试将图像 blit 到矩形上。但是,我不断收到类型错误:blit 的目标位置无效。我知道我很可能遗漏了一些愚蠢或误解的东西。非常感谢任何和所有输入。谢谢!

代码如下:

    import pygame

    pygame.init()

    x = 50
    y = 50
    width = 40
    height = 60
    vel = 5

    pygame.display.set_caption("Rock-Man")

    clock = pygame.time.Clock()

    surface = pygame.display.set_mode((500,500))

    color = (255,0)

    rockimg = pygame.image.load('rocky1.png')

    rockimg.convert()


    class Entity:

       def __init__(self,x,y):
            self.x = x
            self.y = y


    class Rocky(Entity):
        def __init__(self):
            Entity.__init__(self,y)
            self.x = 0
            self.y = 0
            self.tile_size = 30

        def draw(self):
            pygame.draw.rect(surface,color,(x,y,width,height))


    rocky = Rocky()

    run = True
    while run:
        pygame.time.delay(100)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False

        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            x -= vel
        if keys[pygame.K_RIGHT]:
            x += vel
        if keys[pygame.K_UP]:
            y -= vel
        if keys[pygame.K_DOWN]:
            y += vel

        surface.fill((0,0))
        rocky.draw()
        surface.blit(rockimg,rocky)

        pygame.display.flip()
        pygame.display.update()

    pygame.quit()

解决方法

您需要在屏幕上为 surface.blit 指定一个目的地。为 blit 函数传递的参数是:

blit(source,dest,area=None,special_flags=0)

您正在尝试将类型 Rocky() 作为参数 dest(元组目标)。

我不确定您的意图,但要绘制 rockimg,您需要为其指定坐标。

这里有一个例子供参考:

surface.blit(rockimg,(250,250))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?