Python Pygame的第一个简单游戏出错

Python Pygame的第一个简单游戏出错,python,pygame,Python,Pygame,嗨,我是新来的,我刚刚完成了代码学院课程和pygame教程中的黑猩猩拳游戏。我使用的几乎是一个游戏的复制品,但我试图在屏幕底部显示一个平面,而不是拳头。我的Userplane类不断抛出以下错误,我不知道为什么,'typeerror:'nonetype'对象不可编辑原因在于loadimage函数 它不会返回加载的图像,因此python抱怨您试图从非类型分配self.image,self.rect 在Python中,如果函数不返回任何内容,则假定它不返回任何内容。您的回溯在哪里?错误发生在哪一行?我

嗨,我是新来的,我刚刚完成了代码学院课程和pygame教程中的黑猩猩拳游戏。我使用的几乎是一个游戏的复制品,但我试图在屏幕底部显示一个平面,而不是拳头。我的Userplane类不断抛出以下错误,我不知道为什么,'typeerror:'nonetype'对象不可编辑

原因在于loadimage函数

它不会返回加载的图像,因此python抱怨您试图从非类型分配
self.image,self.rect


在Python中,如果函数不返回任何内容,则假定它不返回任何内容。

您的回溯在哪里?错误发生在哪一行?我在pygame.event.get()中猜测事件的
,但我想确定。
loadimage()
可能因为找不到图像文件而失败。或者找到了图像,但从未返回。是否“打印”加载图像失败“消息是否打印将区分这两个潜在问题。是的,但我不认为OP会发布这条消息,如果他看到错误消息的话。很难说清楚,因为两者都会导致相同的
TypeError
,因为您指出了更基本的问题。我想我不应该在最初的评论中说“可能”。
import os, sys
import pygame
from pygame.locals import *

pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.mouse.set_visible(False)

def loadimage(name, colorkey=None):
    try:
        pygame.image.load(os.path.join(name))
    except pygame.error, message:
        print "Failed to load image ",name


class Userplane(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image, self.rect = loadimage("userplane.bmp")

    def update(self):
        pos = pygame.mouse.get_pos()
        self.rect.midtop = pos

def main():

    pygame.init()
    screen = pygame.display.set_mode((800, 600))
    pygame.mouse.set_visible(False)

    background = pygame.Surface(screen.get_size())
    background = background.convert()
    background.fill((255,255,255))


    screen.blit(background, (0,0))
    pygame.display.flip()

    user = Userplane()
    allsprites = pygame.sprite.RenderPlain((user))
    clock = pygame.time.Clock()

    while 1:
        clock.tick(60)
        for event in pygame.event.get():
            if event.type == QUIT:
                return
            elif event.type == KEYDOWN and event.key == K_ESCAPE:
                return

        allsprites.update()

    screen.blit(background(0,0))
    pygame.display.flip()

if __name__ == '__main__': main()