【问题标题】:PYTHON PYGAME ImagePython PYGAME 图像
【发布时间】:2017-06-12 18:09:54
【问题描述】:

嘿,我只是在 python 中制作一个小游戏,我正在使用它的 python 2.7.13,因为我已经习惯了它的语法(哈哈,我有一个语法错误,它与 TypeError 相关:参数 1 必须是 pygame.Surface,而不是函数)但我正在从同一目录中获取图像并尝试在屏幕上显示它只是为了获得游戏的布局但我无法让它工作我得到的错误是关于这个线

display.blit(floor,(x,y))

错误: 回溯(最近一次通话最后): 文件“1stgame.py”,第 38 行,在 地板(x,y) 文件“1stgame.py”,第 25 行,在地板上 display.blit(地板,(x,y)) TypeError: 参数 1 必须是 pygame.Surface,而不是函数

这是代码

import pygame

#Start pygame

pygame.init()

#Window/Screen/Display

display_x = 800
display_y = 600
display = pygame.display.set_mode((display_x,display_y))
pygame.display.set_caption('Platforms')

clock = pygame.time.Clock()

#Colors

black = (0,0,0)
green = (1,166,17)

#Images

floor = pygame.image.load('rock.jpg')
def floor(x,y):
    display.blit(floor,(x,y))
x = (display_x * 0.45)
y = (display_y * 0.8)

not_dead=True
while not_dead:
    for event in pygame.event.get():
        if (event.type==pygame.QUIT):
            not_dead=False 

    display.fill(black) 
    pygame.draw.rect(display, green, [0,550,800,50])

    floor(x,y)


    pygame.display.update()
    clock.tick(60)
print "Hello"

pygame.quit()

【问题讨论】:

  • 您“在某种程度上”有语法错误?以什么方式?它要么说SyntaxError,要么不说。当你“无法让它工作”时,它会做什么而不是工作?将您的问题编辑为minimal reproducible example
  • 我不确定它是语法错误,但我很肯定我更新了帖子,提供了更多细节和错误代码。它打开然后立即关闭
  • 如果我注释掉与图像有关的所有内容(不是矩形),代码就完美了
  • “我不确定它是语法错误,但我很肯定它是” - 什么?
  • 修复了它,我把 Floor 作为一个函数,表面 math2001 做对了。我认为这是一个语法错误

标签: python image layout pygame


【解决方案1】:

您只需要阅读回溯:

这是错误:

def floor(x,y):
    display.blit(floor,(x,y))

当您执行def floor 时,您定义了函数floor。因此, floor 的值现在是一个函数,而不是您之前设置的表面。所以,在你的函数中,你试图 blit 一个函数,而不是 Surface

您需要更改其中任一的变量名

  • 函数
  • 表面

【讨论】:

  • 嘿,有什么方法可以让图像重复
  • 是的,改变 x/y 位置,然后 blit。但是,这不是 StackOverflow 的重点。找个tuto学pygame,不然你会花很多的精力,到最后也没多少。
  • 感谢我是 python 新手。感谢您的帮助和指导。
  • 不客气。如果你想让你的代码看起来更好一点:gist.github.com/math2001/3a6839f9d51a139b26cf2c4ecab02c9f
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多