self报错 明明有self

self丢失,在编写飞机大战

问题相关代码,请勿粘贴截图
import pygame
class PlaneGame(object):
    def __init__(self):
        print('游戏初始化')
        self.screen=pygame.display.set_mode((400,700))
        self.clock=pygame.time.clock()
        self.__create_sprites()
    def star_game(self):
        print('游戏开始')
        while True:
            self.clock.tick(60)
            self.__check_collide()
            self.__event_handler()
            self.__update_sprints()
            pygame.display.update()
    def __update_sprints(self):
        pass
    def __check_collide(self):
        pass
    def __create_sprites(self):
        pass
    def __event_handler(self):
        for even in pygame.event.get():
            if even.type==pygame.QUIT:
                PlaneGame.star_game()
    def __game_over(self):
        print('游戏结束')
        pygame.quit()
        exit()
if __name__ == '__main__':
    g=PlaneGame
    g.star_game()

运行结果及报错内容

缺少self报错

我的解答思路和尝试过的方法

if name == 'main':
g=PlaneGame
g().star_game()

我想要达到的结果

正常运行

g=PlaneGame之后少了()
self.clock=pygame.time.Clock() #Clock的第一个C是大写
PlaneGame.star_game() 应该改成 self.__game_over()

你题目的解答代码如下:

import pygame
class PlaneGame(object):
    def __init__(self):
        print('游戏初始化')
        self.screen=pygame.display.set_mode((400,700))
        self.clock=pygame.time.Clock() #Clock的第一个C是大写
        self.__create_sprites()
    def star_game(self):
        print('游戏开始')
        while True:
            self.clock.tick(60)
            self.__check_collide()
            self.__event_handler()
            self.__update_sprints()
            pygame.display.update()
    def __update_sprints(self):
        pass
    def __check_collide(self):
        pass
    def __create_sprites(self):
        pass
    def __event_handler(self):
        for even in pygame.event.get():
            if even.type==pygame.QUIT:
                # PlaneGame.star_game()
                self.__game_over()

    def __game_over(self):
        print('游戏结束')
        pygame.quit()
        exit()
if __name__ == '__main__':
    g=PlaneGame()  #加上()
    g.star_game()

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

漏写了一对括号,改成这样就行了:

if __name__ == '__main__':
    g = PlaneGame()
    g.star_game()

31行代码改成
g=PlaneGame()
就好啦,您忘了加括号~~

if __name__ == '__main__':
    g=PlaneGame()
    g.star_game()

我有飞机大战的代码,不会找我

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632