我正在尝试创建一个pygame窗口并响应用户输入[重复]

I'm trying to create a pygame window and responding to user input [duplicate]

提问人:Bezaleel 提问时间:9/23/2023 最后编辑:Bezaleel 更新时间:9/23/2023 访问量:28

问:

这个问题在这里已经有答案了:
2个月前关闭。

这篇文章在 2 个月前被编辑并提交审核,但未能重新打开帖子:

原始关闭原因未解决

这是我的源代码:

import sys  
import pygame  
from settings import Settings  

class AlienInvasion:    
    """Overall class to manage game assets and behavior."""    

    def __init__(self):
        """Initialize the game, and create game resources."""
        pygame.init()

        #self.screen = pygame.display.set_mode((1200, 800))
        #pygame.display.set_caption('Alien Invasion')
        self.bg_color = (230, 230, 230)
        self.settings = Settings()

        self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))
        pygame.display.set_caption('Alien Invasion')

    def run_game(self):
        """Start the main loop for the game."""
        while True:
            # watch for keyboard and mouse events.
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()

            # Redraw the screen during each pass through the loop.
            self.screen.fill(self.settings.bg_color)


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

if __name__ == '__main__':  
    # make a game instance, and run the game.  
    a1 = AlienInvasion  
    a1.run_game()

当我运行程序时,我得到了一个:TypeError

Traceback (most recent call last):
  File "c:\Users\franc\Desktop\pyprojects\game_project\alien_invasion.py", line 38, in <module>
    a1.run_game()
TypeError: AlienInvasion.run_game() missing 1 required positional argument: 'self'

我导入了 和 模块,并创建了一个类,其中包含一个方法,然后是其余代码。在文件末尾,我创建了该类的一个实例,然后调用 .我以为它会显示一个空白的窗口屏幕。syspygame__init__()run_game()

python pygame 类型错误 位置参数

评论

0赞 Karl Knechtel 9/23/2023
与其解释你认为代码的作用,不如阅读如何提问最小的可重现示例,并显示演示问题的代码。我们只能分析我们实际看到的东西。另请阅读格式设置帮助,以了解如何正确发布代码和错误。

答:

-2赞 Akrix 9/23/2023 #1

当您在类上调用某个类的方法而不是该类的实例时,通常会发生该错误。与其这样做,不如试试这个:

obj = AlienInvasion()
obj.run_game()

另外,您可以尝试添加所有代码吗?

评论

1赞 Karl Knechtel 9/23/2023
请阅读如何回答,不要试图回答缺少关键细节的问题。如果您需要猜测发生了什么才能回答,则该问题不符合标准;如果您发现自己要求更多信息,那么绝对不要回答。您几乎已经达到了该站点允许您对问题发表评论以询问此信息的地步。同样,关于每个初学者遇到的常见问题的问题都应该被标记为重复,而不是新鲜回答。