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

在 PyGame 中尝试从列表到屏幕绘制多个矩形图像时出现类型错误

如何解决在 PyGame 中尝试从列表到屏幕绘制多个矩形图像时出现类型错误

我正在 PyGame 中制作一个简单的平台游戏。我创建了一个平台类来从一个图像文件以及一个绘制方法创建平台。我在主游戏类中还有一个方法,用于指定级别并指定要绘制的图像。

这是平台类

import pygame
from pygame.sprite import Sprite

class Platform(Sprite):
    def __init__(self,xloc,yloc,imgw,imgh,img):
        self.screen = pt_game.screen

        self.image=pygame.image.load('images',img).convert()
        self.image.convert_alpha()
        self.image.set_colorkey(ALPHA)
        self.rect = self.image.get_rect()
        self.rect.y = yloc
        self.rect.x = xloc

    def draw(self):
        pygame.draw.rect(self.screen,self.rect)

这是主要的while循环、更新屏幕方法和级别检查方法

import sys

import pygame

from settings import Settings
from char import Char
from platform import Platform


class Main:
    """overall class to manage game assets and behavior"""

    def __init__(self):
        """initialise game and create new game resources"""
        pygame.init()
        self.settings = Settings()

        self.screen = pygame.display.set_mode((self.settings.screen_width,self.settings.screen_height))
        pygame.display.set_caption("Platformer")

        self.char = Char(self)

    def run_game(self):
        """start main game loop"""
        while True:
            pygame.time.delay(35)
            #Watch for keyboard and mouse events

            self._check_events()
            self.char.update()
            self._draw_levels()
            self._update_screen()

    def _draw_levels(self,Platform):
        if self.settings.level == 1:
            ground = self.Platform(0,760,1200,40,'images/ground.png')
            platform1 = self.Platform(600,800,200,50,'images/Platform.png')
            self.platforms = (ground,platform1)

    def _update_screen(self):
        #reraw the screen for each pass through the loop
        self.screen.fill(self.settings.bg_color)
        self.char.blitme()
        [self.Platform.draw(screen) for platform in self.platforms]


        #make most recently drawn screen visible
        pygame.display.flip()

我得到的错误TypeError: _draw_levels() missing 1 required positional argument: 'Platform'

我想我没有在某个地方正确地调用类,但我不确定在哪里。任何有关为什么会发生此错误的帮助将不胜感激!

注意:这不是完整的代码

解决方法

方法 _draw_levels 的签名是 def _draw_levels(self,Platform):。但是,您调用 _draw_levels 时没有任何参数 self._draw_levels()

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