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

尽管与屏幕大小相同,但 pygame 表面在中间被切断

如何解决尽管与屏幕大小相同,但 pygame 表面在中间被切断

screen = pygame.display.set_mode((WIDTH,HEIGHT))
canvas = pygame.Surface((WIDTH,HEIGHT))
def makefunnytiles(saice):
    global WIDTH
    global HEIGHT
    global screen
    global roomdata
    global tiledeFinitions
    print("Baking Tiles")
    print(roomdata)
    index = 0
    index2 = 0
    for symbolic in saice:
        index2 = 0
        symbolic = symbolic.strip()
        print("sanity")
        for symbol in list(symbolic):
            print(symbol)
            if symbol in tiledeFinitions:
                canvas.blit(pygame.image.load("sprites/" + str(roomdata['area']) + "/" + str(tiledeFinitions[symbol]) + ".png").convert_alpha(),((32 * index2),(32 * index)))
            index2 += 1
        index += 1
    screen.blit(canvas,(0,0))
    pygame.display.flip()
    print("drew screen")
    print(str(canvas.get_width))

我遇到了一个问题,因为某种原因画布在屏幕中间被切断了。

Image of cut off

我遇到的另一个问题是文件末尾的 pgzrun.go(),这会导致程序崩溃并出现以下错误

Traceback (most recent call last):
  File "C:\Users\rushVisor\Documents\Glamore\main.py",line 100,in <module>
    pgzrun.go()
  File "E:\python39\lib\site-packages\pgzrun.py",line 31,in go
    run_mod(mod)
  File "E:\python39\lib\site-packages\pgzero\runner.py",line 113,in run_mod
    PGZeroGame(mod).run()
  File "E:\python39\lib\site-packages\pgzero\game.py",line 217,in run
    self.mainloop()
  File "E:\python39\lib\site-packages\pgzero\game.py",line 225,in mainloop
    self.reinit_screen()
  File "E:\python39\lib\site-packages\pgzero\game.py",line 73,in reinit_screen
    self.mod.screen.surface = self.screen
AttributeError: 'pygame.Surface' object has no attribute 'surface'

我尝试修改画布和屏幕的分辨率值,甚至是精灵本身的位置。我将画布拖到屏幕上,而不是直接在屏幕上绘制,因为如果我是对的,它应该能让我更轻松地添加滚动。

我感谢任何人能给我的任何帮助。

编辑:代码在这里https://paste.pythondiscord.com/tetogequze.py

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